Skip to content

Najariya/fullsnap-extension

Repository files navigation

FullSnap

Manifest V3 Privacy First No Account License: MIT

FullSnap is a privacy-first Chrome extension for full-page screenshots, visible-area captures, annotation, redaction, zoom, clipboard copy, and PNG/JPEG/PDF export.

It is built for people who need to capture and explain web pages without sending screenshots to a cloud service. Everything runs locally in the browser: no account, no analytics, no tracking, no upload.

Why This Exists

Screenshots often contain sensitive information: work dashboards, forms, invoices, internal tools, customer data, drafts, research, or personal browsing context. Many screenshot tools make capture convenient but unclear about where the image goes.

FullSnap keeps the workflow simple and local:

  • capture the page you are actively viewing
  • annotate or redact in the browser
  • export or copy the result
  • leave no external trail

Current Status

FullSnap is a working local Chrome extension and a strong public-good candidate. It is not yet submitted to the Chrome Web Store.

Area Status
Manifest V3 extension Working
Full-page capture Working, with large-page segmentation
Visible-area capture Working
Annotation and blur/redaction Working
PNG/JPEG/PDF export Working; PDF long-page behavior still needs final manual test
Privacy policy Live through GitHub Pages
Chrome Web Store readiness Pending store screenshots, final browser testing, and permission review copy

See docs/STATUS.md for the maintained status and RELEASE_CHECKLIST.md for the original v1.0 checklist.

Features

  • Full-page capture with automatic stitching
  • Visible-area capture for the current viewport
  • Annotation tools: draw, arrow, text, highlight, blur/redact
  • Viewer with zoom, pan, filters, dark/light theme, and multipart navigation for large pages
  • Export to PNG, JPEG, or PDF
  • Copy to clipboard
  • OS-aware shortcuts:
    • Mac: Command+Shift+S for full page, Command+Shift+V for visible area
    • Windows/Linux: Ctrl+Shift+S for full page, Ctrl+Shift+V for visible area

Privacy First

FullSnap does not collect, transmit, or store personal data on external servers.

  • Screenshots are captured by Chrome APIs after a user action.
  • Screenshot segments are stored temporarily in the browser's IndexedDB.
  • Settings are stored locally in chrome.storage.local.
  • No analytics, telemetry, external APIs, or remote scripts are used.
  • The bundled PDF library lives in this repository under lib/.

Read the detailed privacy model and the hosted privacy policy.

Installation For Development

  1. Clone this repository.
  2. Open Chrome and go to chrome://extensions.
  3. Enable Developer mode.
  4. Select Load unpacked.
  5. Choose this repository folder.
  6. Pin FullSnap from the Chrome toolbar.

How It Works

flowchart LR
  User["User clicks popup or shortcut"] --> Popup["popup/"]
  Popup --> Worker["background/service-worker.js"]
  Worker --> Content["content/capture.js"]
  Content --> Page["Active tab scroll and page metrics"]
  Worker --> ChromeAPI["chrome.tabs.captureVisibleTab"]
  Worker --> Offscreen["offscreen/offscreen.js"]
  Offscreen --> Store["IndexedDB capture store"]
  Store --> Viewer["viewer/"]
  Viewer --> Export["PNG / JPEG / PDF / Clipboard"]
Loading

The service worker orchestrates capture, the content script measures and scrolls the page, the offscreen document stitches canvas segments, and the viewer loads the result for annotation and export.

Read docs/ARCHITECTURE.md for the full system design.

Repository Map

Path Purpose
manifest.json Chrome MV3 configuration, permissions, commands, and icons
background/ Service worker capture orchestration
content/ On-demand page measurement, scrolling, and cleanup
offscreen/ Canvas stitching and segment persistence
viewer/ Screenshot viewer, annotation, export, zoom, filters
popup/ Extension popup UI and capture actions
shared/ Message constants, capture storage wrapper, utilities
docs/ Privacy page and technical documentation
icons/ Extension icon assets
lib/ Bundled local third-party library for PDF export

Public Documentation

Verification

There is no build step and no package manager requirement. The extension is static HTML, CSS, and JavaScript.

Useful checks before release:

node --check background/service-worker.js
node --check content/capture.js
node --check offscreen/offscreen.js
node --check popup/popup.js
node --check viewer/viewer.js
node --check viewer/annotation.js

Manual release testing still matters because Chrome extension APIs are involved:

  • load as unpacked extension in Chrome
  • capture a normal page, a long article, and a dynamic web app
  • test annotation, blur/redaction, copy, PNG/JPEG/PDF export
  • confirm blocked pages such as chrome:// show a useful error
  • test keyboard shortcuts on macOS and Windows/Linux where possible

Contributing

Issues and suggestions are welcome when they improve privacy, reliability, accessibility, capture quality, or documentation. Please do not upload screenshots containing private information into public issues.

License

MIT. See LICENSE.

Releases

No releases published

Packages

 
 
 

Contributors