Last updated: July 21, 2026
GrabText (“we”, “us”, “the extension”) is built local-first. This policy explains exactly what data the extension accesses, where it is stored, and what is never collected.
Free tier: Nothing. The extension does not transmit any personal data to us. There is no telemetry, no usage analytics, and no crash reporting built into the extension by default. All OCR processing runs entirely inside your browser using PaddleOCR.js — no images or text are ever sent to a remote server.
Pro tier (if activated): When you activate a paid license key, the key and
a machine-generated instance name are sent to Lemon Squeezy (our payment
provider) for validation, and the result is stored locally in your browser’s
chrome.storage.local. We receive only a boolean “valid/invalid” result — we
do not see your payment details, which Lemon Squeezy handles directly.
Pro tier features (when implemented): Future Pro features such as export and batch capture are entirely local. Any future cloud feature will be opt-in and documented in an updated privacy policy before launch.
To function, GrabText reads the following from your browser:
| What | Why | Where it stays |
|---|---|---|
| A screenshot of the visible portion of the active tab | Sent to the local OCR engine for text extraction | In memory, discarded after OCR completes |
| The URL and title of the active tab | Saved alongside extracted text for history context | Your local IndexedDB only |
| Text you select via the drag-to-select tool | To copy to clipboard, search, or read aloud | In memory, not stored unless you keep it in history |
The screenshot is cropped to your selection area before OCR. The full page
screenshot is captured via chrome.tabs.captureVisibleTab, then immediately
cropped to the user’s selection rectangle. The uncropped full-page image is
discarded and never stored.
History data never leaves your browser. OCR results you save to history
are stored in IndexedDB (grabtext database) and can be cleared at any time.
We do not receive, log, or store:
| Service | When it’s used | What it receives | Policy |
|---|---|---|---|
| Lemon Squeezy | License activation & validation (Pro only) | License key, instance name | lemonsqueezy.com/privacy |
No data is ever sent to any AI provider, analytics service, or cloud OCR backend. OCR runs entirely in a sandboxed iframe inside your browser.
| Permission | Why it’s needed |
|---|---|
activeTab |
Capture a screenshot of the current tab when you initiate a grab |
scripting |
Inject the drag-to-select overlay UI — only on your explicit activation |
storage |
Save OCR history and license state locally |
clipboardWrite |
Copy extracted text to your clipboard |
tabs |
Read the active tab URL for error messages and history context |
offscreen |
Run the OCR engine in a dedicated offscreen document |
sandbox (pages: sandbox.html) |
Host PaddleOCR.js (which requires unsafe-eval) in a restricted sandbox |
We request the minimum permissions required. Note that we do not
request <all_urls> — all features are triggered by your explicit action on
the current tab via activeTab.
GrabText is a general productivity tool and not directed at children under 16. We do not knowingly collect data from children.
Material changes will be posted on this page with an updated date. Continued use after a change constitutes acceptance.
Questions or data requests: **grabtext@