Privacy Policy

PinoSnap

Screenshots, annotations, OCR, redaction, GIF encoding, and AI features all run in your browser. Nothing leaves your device unless you explicitly save or share a file.

📅 Last updated: June 24, 2026 📦 Extension: PinoSnap v1.0.0 🏢 Publisher: PencilCard
🔒
Plain-English Summary: PinoSnap captures and edits screenshots entirely in-browser. OCR runs via Tesseract.js (WebAssembly, on-device after first download). Smart PII redaction uses Gemini Nano (on-device). GIF and PDF encoding use local WebAssembly libraries. Alt-text generation and Ask AI both use Gemini Nano on-device. PencilCard operates no image-processing servers. A screenshot reaches the internet only when you explicitly click Save or Copy and then paste/upload it yourself.

1. Data We Collect

PencilCard does not receive or store any screenshot data. All capture processing happens in your browser.

Data stored locally on your device

  • Captured screenshots — stored as base64 data URLs in chrome.storage.local keyed by a random capture ID. Retained only until you close the editor tab or clear the extension data.
  • Export preferences — last used format (PNG/JPG/WebP/PDF), custom size presets, and theme preference. Stored in chrome.storage.local.
  • Firebase authentication token — short-lived token used only to verify your Pro subscription. Contains no screenshot data.

Data we do not collect

  • Screenshot image data — never transmitted to PencilCard
  • OCR-extracted text — processed on-device and never uploaded
  • Annotated or redacted images — stay local until you choose to save or share
  • URLs, page titles, or content of the pages you screenshot
  • Browsing history

2. How Data Is Stored

chrome.storage.local

Captures are stored temporarily in Chrome's local extension storage. This is sandboxed to the extension, is not synced across devices, and is not accessible by websites or other extensions. Data is removed when you clear the extension storage or uninstall.

Canvas (in-memory)

All editing operations — annotations, crop, blur, redaction — take place on HTML5 Canvas elements held in memory. They are never written to disk until you explicitly click Save or Copy.

Tesseract.js cache (browser cache)

On first OCR use, Tesseract.js downloads its WebAssembly binary and English language model (~10 MB combined) from cdn.jsdelivr.net. These are cached by your browser's normal HTTP cache — they are not stored by PinoMail and do not contain any of your screenshots.

3. External Network Requests

Tesseract.js (first-use only)

On the first OCR run, PinoSnap loads the Tesseract.js WebAssembly module from cdn.jsdelivr.net. This is a one-time download of ~10 MB cached by your browser. No screenshot data is sent to this CDN — only the script file is downloaded.

Firebase (auth and entitlement only)

Sign-in and subscription tier verification. No screenshot data is included in these requests.

No image upload servers

PinoSnap does not upload screenshots to any server. There is no PencilCard cloud storage for images. If you export a file and then upload it to a third-party service, that transmission is entirely your own action and governed by that service's privacy policy.

4. Permissions Justification

PermissionWhy it is needed
activeTabCaptures a screenshot of the current tab when you click the extension icon or use the keyboard shortcut. The capture is a one-time action initiated by you — PinoSnap does not continuously observe tab content.
tabsUsed to detect whether the current tab is an active browser page (not a Chrome internal page) before initiating a capture. Tab URLs and content are not stored.
storageTemporarily stores the captured screenshot and your preferences in chrome.storage.local.
downloadsSaves the exported PNG, JPG, WebP, PDF, or GIF file to your Downloads folder when you click Save. PinoSnap does not read or modify other files in your Downloads folder.
scriptingInjects a small content script to capture full-page and scrolling screenshots by stitching multiple viewport captures. The script runs only in the current tab at capture time, does not exfiltrate data, and is not injected persistently.
clipboardWriteCopies the final image to your clipboard when you click Copy. The image is only written — PinoSnap never reads your clipboard.
offscreenCreates a hidden offscreen document to run GIF and PDF encoding using WebAssembly libraries without blocking the editor UI. No network requests are made from this context.
identityObtains a Google OAuth token for Firebase sign-in (Pro subscription). Not used to access any Google account data beyond authentication.
host: cdn.jsdelivr.netDownloads the Tesseract.js OCR model on first use. One-time download; no screenshot data is sent to this host.

5. AI Features & Privacy

OCR — Tesseract.js (WebAssembly, on-device)

Text extraction from screenshots runs via Tesseract.js, a WebAssembly port of the Tesseract OCR engine. After the one-time model download, all OCR runs entirely on your device with no internet connection. Extracted text is displayed in the editor panel and never transmitted to PencilCard.

Smart redact — Gemini Nano (on-device)

PII detection for smart redaction combines regex pattern matching (always on-device) with Gemini Nano inference (on-device, Chrome 127+). No screenshot pixels or extracted text are sent to any external server for redaction analysis.

Alt-text generation — Gemini Nano (on-device)

The "Alt Text" button runs OCR on the screenshot on-device, then asks Gemini Nano to write an accessible description based on the extracted text. Both steps run entirely in your browser. No image data or extracted text leaves your device.

Ask AI — Gemini Nano (on-device)

The "Ask AI" panel lets you ask questions about the screenshot. Gemini Nano answers based on on-device OCR of the image. No data is transmitted externally. If Gemini Nano is unavailable, Ask AI displays a setup prompt rather than falling back to a cloud provider.

6. Data Sharing

PencilCard does not share screenshot data with any third party. The only external transmissions are:

  • cdn.jsdelivr.net — one-time Tesseract.js model download. No screenshot data transmitted.
  • Firebase — UID and subscription tier for sign-in and Pro entitlement. No image data.

7. Your Rights & Data Deletion

Delete all PinoSnap data

Chrome DevTools → Application → Extension Storage → select the PinoSnap extension → Clear. Or uninstall the extension.

Uninstall

Removes all locally stored captures and preferences immediately.

Firebase account deletion

Email [email protected] to request deletion of your Firebase account record.

8. Children's Privacy

PinoSnap does not knowingly collect personal data from children under 13. As no screenshots are transmitted to our servers, the extension does not create a personal data profile for any user.

9. Policy Changes

We will update this page if PinoSnap's privacy practices change. The current version is always at pencilcard.com/privacy-pinosnap.

10. Contact

We aim to respond within 5 business days.