Package Exports
- snipify
Readme
Snipify πΈ
Snipify is a production-ready toolkit for capturing, resizing, and exporting high-quality web screenshots using Puppeteer and Sharp.
"From page to pixel-perfect screenshotβautomate it all." π
π Features
- Full & Viewport Modes β Capture the entire page or just the visible area
- Custom Device Emulation β Desktop, mobile, tablet & more with custom user-agents
- Smart Resource Blocking β Skip heavy/irrelevant assets like analytics & media
- Image Processing with Sharp β Resize, crop, compress effortlessly
- Pure TypeScript β Strictly typed and modern API
- No Bloat β Minimal dependencies, fast and efficient
π¦ Installation
# Install globally for CLI usage
npm install -g snipify
# Install locally for programmatic usage
npm install snipifyπ₯οΈ CLI Usage
Snipify comes with a powerful CLI for quick screenshots and batch production exports right from your terminal.
Usage
snipify [URL] [OPTIONS]Arguments
URLWebsite URL (default: http://example.com/)
Options
--device=DEVICEDevice preset (see list below; default:mobile)--size=SIZEProduction size preset (see table below)--productionGenerate all common production sizes--output=DIROutput directory (default:./screenshots)--help,-hShow help
Device Presets
- desktop
- laptop
- tablet
- mobile
- mobile-large
Production Sizes
| Name | Dimensions |
|---|---|
| thumbnail | 300x200 |
| card | 400x300 |
| social-media | 1200x630 |
| instagram-post | 1080x1080 |
| instagram-story | 1080x1920 |
| youtube-thumbnail | 1280x720 |
| blog-header | 800x400 |
| email-banner | 600x200 |
| preview-small | 200x150 |
| preview-medium | 400x300 |
| preview-large | 800x600 |
Examples
snipify # Basic mobile screenshot
snipify https://example.com --device=desktop # Desktop screenshot
snipify https://example.com --device=mobile --size=thumbnail # Mobile thumbnail
snipify https://example.com --device=desktop --production # All production sizesScreenshots are saved to the output directory (default:
./screenshots).
π Quick Start
1. Single Screenshot: captureScreenshot
import { captureScreenshot } from "snipify";
const result = await captureScreenshot({
url: "https://example.com",
device: "desktop",
options: {
format: "jpeg",
quality: 80,
},
});
console.log(result);
// {
// base64: 'data:image/jpeg;base64,...',
// size: 'original',
// device: 'desktop',
// type: 'jpeg'
// }2. Batch/Production Screenshots: captureProductionScreenshots
import { captureProductionScreenshots } from "snipify";
const results = await captureProductionScreenshots({
url: "https://example.com",
sizes: ["blog-header", "instagram-post"],
options: {
format: "jpeg",
quality: 80,
},
});
console.log(results);
// [
// { base64: 'data:image/jpeg;base64,...', size: 'blog-header', type: 'jpeg' },
// { base64: 'data:image/jpeg;base64,...', size: 'instagram-post', type: 'jpeg' }
// ]β¨ Core API
πΈ captureScreenshot(url, device?, options?)
Capture a screenshot and get a base64 string.
const result = await captureScreenshot({
url: "https://example.com",
device: "mobile",
options: {
mode: "viewport",
format: "png",
},
});Parameters
| Name | Type | Description |
|---|---|---|
url |
string |
Web page URL |
device |
"desktop" | "mobile" | "tablet" |
default - "desktop" |
options |
{ mode, format, quality, ... } |
Screenshot options |
π Resize Options
You can resize screenshots automatically:
await captureScreenshot({
url: "https://example.com",
device: "mobile",
options: {
fixedSize: { width: 800, height: 600 },
},
});βοΈ Options
interface ScreenshotOptions {
format?: "png" | "jpeg";
quality?: number;
fullPage?: boolean;
waitForSelector?: string;
delay?: number;
headless?: boolean;
blockResources?: boolean;
clip?: { x: number; y: number; width: number; height: number };
fixedSize?: { width: number; height: number };
}π§ Why Snipify?
- Production Ready β Battle-tested setup with error handling
- Fast β Puppeteer + Sharp combo for fast, clean output
- Zero UI Dependency β Works anywhere Node.js runs
- Typed First β Built for TypeScript users
- Modular β Customize device presets, screenshot settings & more
π οΈ Contributing
git clone https://github.com/kiron0/snipify.git
cd snipify
bun install
bun run buildIssues and PRs are warmly welcome π€
π License
MIT Β© Toufiq Hasan Kiron
βSnip it. Sharpen it. Ship it.β β Snipify Motto πΈ