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 πΈ