A minimal browser extension that captures screenshots of the current tab.
  • TypeScript 93.9%
  • CSS 3.8%
  • HTML 2.3%
Find a file
2026-08-29 14:54:09 +08:00
entrypoints init project app 2026-08-22 23:16:27 +08:00
public init project app 2026-08-22 23:16:27 +08:00
.gitignore init project app 2026-08-22 23:16:27 +08:00
bun.lock fix: wrong pnpm install, bun 2026-08-29 14:54:09 +08:00
LICENSE init project app 2026-08-22 23:16:27 +08:00
package.json fix: wrong pnpm install, bun 2026-08-29 14:54:09 +08:00
README.md init project app 2026-08-22 23:16:27 +08:00
tsconfig.json init project app 2026-08-22 23:16:27 +08:00
wxt.config.ts add 'scripting' permission to manifest in wxt.config.ts 2026-08-29 14:50:50 +08:00

Simple Screenshot

A minimal browser extension (built with WXT) that captures screenshots of the current tab.

Features

  • 📸 Visible area — screenshot the current viewport (scrollbar cropped out)
  • 📜 Full page — scrolls the page and stitches a full-height screenshot
  • 🔲 Select area — drag a box on the page to capture just that region (Esc cancels)

Files download to your Downloads folder as <host>-<timestamp>.png.

Development

npm install
npm run dev        # dev build with hot reload → .output/chrome-mv3

Load in Chrome: chrome://extensions → enable Developer modeLoad unpacked → select .output/chrome-mv3.

Build

npm run build      # production build → .output/chrome-mv3
npm run zip        # zip for store publishing → .output/*.zip

Known limitations

  • Full-page capture: Chrome limits captureVisibleTab to ~2 calls/sec, so tall pages take a moment (600ms per screen); extremely tall pages are truncated at canvas size limits (~16k² px)
  • Fixed/sticky headers are frozen in place during full-page capture so they don't repeat in every slice
  • Area selection is viewport-only (can't select scrolled-out-of-view content)
  • Chromium-only (uses chrome.scripting / captureVisibleTab stitching)