No accounts · No analytics · No uploads by default

Privacy policy.

Last updated: 25 September 2026 · Applies to CaptureKit v1.8 and later

The short version: CaptureKit is 100% local by default. No accounts, no analytics, no uploads, no tracking. The extension only touches the network if you explicitly turn on a specific sharing service in Settings — and even then, only when you click its button in the editor.

CaptureKit ("the extension") is a browser extension that captures screenshots of web pages and lets you annotate, blur, crop, and save them. This policy explains exactly what the extension does and does not do with your data.

1 Summary

Everything that isn't required to render a screenshot on your own device is optional and off by default. You are the only party that ever sees your captures unless you explicitly send them somewhere.

2 What the extension does with your data

  • Page content you choose to capture. When you click "Capture," the extension reads the visual contents of the active tab to produce the screenshot. The image is held only in your browser's local storage for the duration of editing.
  • Recordings (since v1.8). Only when you start a recording, the extension records what you chose to record, and if you switch them on, its sound and your microphone. You choose the source each time: This tab records the page you are on, and Choose… hands over to your browser's own sharing prompt, where you pick a tab, a window or the whole screen (on Firefox, every recording works this way). CaptureKit only ever receives the one source your browser hands it. It stops when you click Stop, when the time limit in Settings is reached, or when you close the tab. The browser shows its own "being shared" indicator the whole time. Recordings are encoded, trimmed and converted to GIF on your device, and are kept in the extension's own storage (IndexedDB) in your browser until you delete them or they drop out of your history. They are never uploaded. The microphone is used only during a recording you started with the Microphone switch on.
  • Desktop and window screenshots (since v1.8). The Desktop mode captures a single frame of something outside the browser — another application's window, another tab, or a whole screen. It uses your browser's own screen-sharing picker (getDisplayMedia) and needs no additional permission. That picker appears every single time and you choose exactly what is shared, so CaptureKit never sees anything you did not pick in that prompt. The frame is handled entirely on your device, opens in the editor like any other capture, and is never uploaded.
  • The screenshot you create. Annotations, crops, and blurs are applied locally on your device. The final image is saved only when you explicitly click Download (to your computer), Copy (to your clipboard), Reopen, or one of the opt-in sharing service buttons.
  • Editable PNG metadata. Every PNG export embeds a small compressed metadata chunk with your shapes and base image so the file can be reopened and re-edited later. This metadata lives inside the PNG file on your device; it is not sent anywhere. Since v1.8, if you choose Use as alt text in the Smart Caption dialog, that text is also written into the PNG as its description (PNG Description and XMP fields), so anyone you share the file with can read it. Nothing is embedded unless you choose it, and the ✕ in the dialog removes it from later exports.

3 What the extension does NOT do (by default)

  • Does not send your screenshots or browsing data to any server. (Three things can, all opt-in and all described below: the sharing services, the OCR language download, and Cloud AI — each off until you turn it on. A fourth, Sync, sends settings — never captures — through your own browser account.)
  • Does not use analytics, advertising, tracking, or fingerprinting.
  • Does not read your browsing history, cookies, passwords, or form data.
  • Does not create user accounts or require sign-in for core features. The optional Sync setting uses the browser account you already have — there is no CaptureKit account.

4 Optional sharing services (off by default)

CaptureKit v1.6 introduced an optional layer of sharing integrations. All are governed by a master switch (Enable sharing services) in Settings that is off by default. Each individual service is a separate per-service toggle, also off by default. Turning the master switch on does not by itself send anything anywhere — you must additionally enable a specific service AND click its button in the editor.

Copy Slack markdown Local · No network

Formats a Slack-ready caption line locally and copies both the caption and the image to your system clipboard. Nothing leaves your device.

Save to Google Drive Opt-in · Your account

When enabled and clicked, the extension uses Chrome's built-in Google sign-in (chrome.identity) to obtain an OAuth token scoped to drive.file and uploads the current image to your own Google Drive. Specifically:

  • CaptureKit can only see and modify files it uploads itself. It cannot read, list, or touch anything else in your Drive.
  • The uploaded file appears in your Drive under your account, owned by you. You can share, move, or delete it like any other Drive file.
  • Your Google credentials are handled entirely by Chrome. The extension never sees your password or your session cookies.
  • Only the image bytes and the filename are transmitted, and only to www.googleapis.com, and only when you click "Save to Google Drive."
  • Connect / Test connection (Settings → Sharing services → Google Drive): when you click it, CaptureKit signs in and asks Drive's about endpoint for your account's display name and email address. This works under the same drive.file scope, with no extra permission. They're shown on the settings page so you can confirm which account is connected, and are never stored or sent anywhere else. Opening the settings page makes no network request by itself.
  • Your own OAuth client (optional; required on Microsoft Edge, which doesn't support Chrome's built-in sign-in): if you paste your own Google OAuth client ID into settings, sign-in happens in a Google window opened with chrome.identity.launchWebAuthFlow. Google returns a drive.file token directly to the extension. The token is kept only in the browser's session storage, is cleared when you close the browser or click Disconnect, and is sent only to www.googleapis.com. Your client ID is a public identifier and is saved with your other settings on this device.
  • Disconnect removes CaptureKit's cached Google token from this browser. To withdraw the permission itself, open your Google Account → Security → Third-party connections.

Imgur Temporarily unavailable

The Imgur toggle is currently disabled and hidden from the Share menu until an Imgur Client-ID is configured. When enabled, it would upload an anonymous (accountless) image to imgur.com and copy the returned URL. Anonymous Imgur posts are publicly viewable to anyone with the URL.

5 On-device AI (Smart Redact)

CaptureKit v1.7 adds an optional Smart Redact feature that scans the current capture for likely-sensitive content and proposes redact / pixelate boxes for you to review. The feature is off by default and lives behind two toggles: a master AI features switch in Settings and a per-feature Smart Redact switch. While either is off, no AI code initializes.

Smart Redact Local · No network

Smart Redact runs entirely on your device. It uses:

  • Tesseract.js v5 (bundled inside the extension) to read text out of the current capture, then plain regular expressions to flag emails, phone numbers, credit-card-shaped digit runs, IPv4 / IPv6 addresses, IBANs, US Social Security Numbers, and passport-format identifiers. The WASM core (~3.9 MB) and English trained-data file (~4.1 MB) are shipped inside the extension zip and loaded from your local install the first time you click Smart Redact. They are never downloaded from a remote server. (Additional languages are an opt-in, click-to-download exception — see More OCR languages below.)
  • Your own detection rules (since v1.8). Smart Redact can be taught to look for things only you would recognise — an employee-ID format, a project codename, an internal hostname — as keywords or patterns, alongside a list of values it must never flag and any built-in detectors you switch off. These rules are stored only on your device, in the extension’s local storage: they are never uploaded and never sent to a cloud AI provider, because a list of what you consider secret is sensitive in its own right. They are also kept out of browser sync unless you separately switch on Also sync my Smart Redact rules — see Settings sync. You can export them to a JSON file yourself to share with colleagues; nothing does that automatically. The extension also counts how many times you skip each kind of proposal, so it can offer to stop suggesting one — those are counts and category names only, never the text that was matched.
  • face-api.js SSD MobileNet v1 (bundled inside the extension) to find faces. The library and its ~5.6 MB model weights are shipped inside the extension zip and loaded from your local install the first time you click Smart Redact. Detection runs in your browser's own process — on the GPU via WebGL when available, otherwise on the CPU. No image bytes and no detection results ever leave your device. If Chrome's built-in FaceDetector API is present and returns results it is used as a fast path first; the bundled detector is a reliable fallback whenever that fast path returns nothing or throws.
  • Chrome's built-in Prompt API (Gemini Nano) powers the optional Smart Caption feature. When enabled and invoked (the Caption button, the ✨ Improve rewriter on a text shape, or the Ask… question-and-answer dialog added in v1.8), the API returns a caption, rewrite or answer computed entirely on your device by a browser-managed model. Questions you type into Ask… and the answers are held only in the open dialog and discarded when it closes; CaptureKit never stores or logs them. CaptureKit does not ship the model — it is downloaded and updated by Chrome itself as a browser feature. The image and text CaptureKit passes to the API stay on your machine; there is no network round-trip. The feature is hidden entirely on browsers that do not expose the Prompt API (Firefox, Safari, older Chrome), and stays off until you turn on Settings → AI features → Smart Caption.

Every proposal appears as a dashed cyan overlay you can accept, skip, or reject as a batch. No proposal ever auto-commits, no results are stored beyond the shapes you accept on the current capture, and nothing about your capture — the image, the OCR output, or the detections — ever leaves your device.

Because Tesseract instantiates WebAssembly from bytes, CaptureKit's manifest v1.7 declares 'wasm-unsafe-eval' in its content security policy for extension pages. This only permits WebAssembly execution; it does not enable eval(), remote script loading, or any other broadened permission.

More OCR languages Optional download · Off by default · Since v1.8

Smart Redact and Auto-number read English with the trained-data file bundled in the extension. If you turn on Settings → AI features → More OCR languages, you can add other languages (German, French, Japanese, …). Each one is a separate file that is downloaded only when you click its Download button:

  • What is requested: one file, the official Tesseract language data for that language, from cdn.jsdelivr.net (the public jsDelivr CDN serving the @tesseract.js-data npm package, at a fixed version). The request carries no cookies, no referrer and nothing about you or your captures, only the file's address. Like any web request, jsDelivr sees your IP address; see jsDelivr's privacy policy.
  • What is kept: the file is checked against a SHA-256 fingerprint built into the extension and stored only if it matches, in your browser's local IndexedDB storage for the extension. It is language data read by the bundled Tesseract engine, not code.
  • How to undo it: Remove next to a language deletes its file. Turning the switch off stops OCR from using downloaded languages. No download ever happens on its own, and with the switch off none can be started.

Text recognition itself still runs entirely on your device, whatever the language.

Auto-number Local · No network

Auto-number (Numbered step tool → All buttons / All links) proposes step markers over the buttons or links in a capture. It is not an AI feature, so it doesn't depend on the AI toggles above.

  • Link and button positions recorded at capture time. While a capture is being taken, CaptureKit uses the page access you already granted for that capture (activeTab + scripting) to note where the visible links and buttons are. For each one it records only its type (link or button) and its rectangle within the screenshot. It never records link addresses, labels, text, form values, or anything else about the page. The list is saved with the screenshot in the extension's local storage for the editor tab. It isn't added to capture history or embedded in exported files, and it's removed with the screenshot, just like the image itself.
  • Pixel fallback. For images without that list (reopened or pasted images, history items), Auto-number uses the same bundled Tesseract.js text reader, loaded from your local install only when you click All buttons or All links, plus plain pixel measurements such as enclosed shapes, text color and underlines.

Nothing Auto-number records or computes leaves your device. Only the step markers you accept become part of your capture.

6 Cloud AI (bring your own key, off by default)

CaptureKit v1.8 adds an optional Cloud AI setting. It is the only feature in the extension that sends a capture off your device, and it does nothing at all until you switch it on and paste an API key of your own. It exists because the on-device model described above is a Chrome feature: Edge, Firefox and older Chrome have no built-in model, so Smart Caption, ✨ Improve and Ask… are otherwise unavailable there.

Cloud AI Opt-in · Sends the capture

  • What is sent, and when. When you press Caption, ✨ Improve or send a question in Ask… while Cloud AI is the active backend, CaptureKit sends the capture you are working on — scaled down, and with your annotations, blurs and redactions already applied — to the provider you chose, together with the instruction for that feature and, for Ask…, your question and the earlier turns of that conversation. ✨ Improve sends the text you are rewriting, not the image. Nothing is sent at any other time.
  • You are asked first. The first time a capture is about to be uploaded in an editor tab, CaptureKit tells you in plain words which provider it is about to reach and waits for your answer. If you decline, nothing is sent and you are not asked again in that tab.
  • Your key, your account. You supply an API key from Anthropic, OpenAI or Google. CaptureKit has no server, no proxy and no account of its own: your browser talks to the provider directly. We never see your key, your captures, your questions or the answers. The provider bills your account at their rates.
  • Where the key is stored. In chrome.storage.local on that computer only — deliberately never chrome.storage.sync, so it is not copied to your other signed-in browsers or to any sync server. Remove in Settings deletes it.
  • Permission is requested separately. The three provider addresses are optional host permissions: they are not part of what CaptureKit asks for at install, and your browser prompts you the first time you press Test key for a provider. Decline and the extension cannot reach it.
  • Smart Redact never uses Cloud AI. It always runs on the bundled on-device models, whatever these settings say — sending a capture away in order to find the secrets in it would defeat the purpose. The same applies to OCR and Auto-number.
  • Once it arrives, it is theirs. Your capture is then handled under that provider's own privacy policy and terms, including whatever they say about retention and model training. CaptureKit cannot make commitments on their behalf; the links are under Third parties.
  • Turning it off. Switching Cloud AI off, removing the key, or switching the AI features master off each stop it immediately and completely. Removing the key also revokes the host permission for that provider, so the extension gives back access it no longer needs.

7 Settings sync (off by default)

CaptureKit v1.8 adds an optional Sync setting that carries your preferences between the browsers you are signed into. It uses your browser's own sync — chrome.storage.sync, the same mechanism that carries your bookmarks and passwords through your Google, Microsoft or Mozilla account. There is still no CaptureKit account and no server of ours in this path.

Sync Opt-in · Your browser account

  • What travels. Your preferences (theme, default capture mode and format, filename template, toolbar position, history and recording options, and the on/off state of the optional features), your saved style presets, and your saved shape templates. That is all; the whole payload is a few kilobytes of settings.
  • What never travels. Your API keys for Cloud AI, your captures, recordings and history, the tool and colour you last used, the Google Drive folder id resolved for the account on that machine, and any shape template that contains an image. Keys are excluded by name and by a second check that refuses anything credential-shaped, so a setting added in a future version cannot leak by being forgotten.
  • Smart Redact rules are held back too, even while Sync is on, unless you separately switch on Also sync my Smart Redact rules. A list of what you consider sensitive — an employee-ID format, a project codename, an internal hostname — is itself sensitive, and turning that switch on copies it to your browser-account provider. The alternative is Export rules, which writes a JSON file you can hand to a colleague directly.
  • Where it goes. To your browser vendor's sync service, under your existing browser account, governed by that vendor's privacy policy — Google for Chrome, Microsoft for Edge, Mozilla for Firefox. We cannot read it: it is stored under the extension's own key in your account, not on any machine of ours.
  • Turning it off. Switching Sync off stops all reading and writing immediately. Remove the synced copy in Settings deletes CaptureKit's data from your browser account; each browser keeps the settings it already has.

Google Drive folder Opt-in · Your account

Also new in v1.8: if you use the optional Google Drive upload, you can name a folder for CaptureKit to put uploads in. CaptureKit creates that folder in your Drive and sets it as the parent of each upload. Sharing the folder with colleagues — which makes it a team folder — is done in Drive's own interface, under Google's permissions, not through CaptureKit. The OAuth scope is unchanged (drive.file), so CaptureKit still sees only the files and folders it created itself; that is also why it cannot upload into a folder someone else created and shared with you.

8 Permissions and why they are needed

  • activeTab — to capture the visible content of the page you are on when you ask for a screenshot.
  • scripting — to measure the page and scroll it while stitching a full-page or scrolling capture, and to run the region / element picker overlays.
  • downloads — to save the screenshot file you create to your computer.
  • storage / unlimitedStorage — to temporarily pass the captured image to the preview/editor tab; large full-page captures can exceed the default storage limit. Entries are removed automatically. Since v1.8 it also lets recordings you keep in your history exceed the default limit.
  • tabs — to identify the active tab for capture and open the editor tab.
  • storage.sync (part of the same storage permission, since v1.8) — used only while you have Sync switched on, to store a few kilobytes of settings in your browser account. Nothing is read from or written to it while the setting is off.
  • tabCapture (Chrome and Edge, since v1.8) — to record the video and sound of the tab you're on, only after you click Start recording (or press your recording shortcut) with the This tab source. Not used for screenshots, and never started in the background.
  • Screen sharing (browser permission prompt, since v1.8) — the Choose… source uses the standard getDisplayMedia prompt, the same one any website uses. Your browser shows it, you pick the tab, window or screen, and your browser keeps its sharing indicator on screen for as long as the recording runs. No extension permission is involved, and nothing is recorded if you dismiss the prompt.
  • offscreen (Chrome and Edge, since v1.8) — the browser's background worker can't run a video recorder, so while you record, a hidden extension page holds the recorder. It's created when you start a recording and closed when it stops. It doesn't load any web content.
  • Microphone (browser permission prompt, since v1.8) — requested the first time you turn on Microphone for recording, and used only while a recording runs. You can revoke it in the browser's site settings for the extension at any time.
  • identity — used only when you opt in to Google Drive uploads, to obtain an OAuth token via Chrome's built-in sign-in. Never used otherwise.
  • host_permissions for api.imgur.com and www.googleapis.com — required by the browser to allow authenticated requests to these hosts if the corresponding sharing service is enabled and used. No requests are made otherwise.
  • optional_host_permissions for api.anthropic.com, api.openai.com and generativelanguage.googleapis.com (since v1.8) — optional, which means they are not part of what CaptureKit asks for when you install it. Your browser asks for the one you need the first time you press Test key after choosing that provider under Cloud AI, and only that provider’s address is requested. Decline, or never turn Cloud AI on, and the extension has no access to any of them.
  • content_security_policy.extension_pages includes 'wasm-unsafe-eval' — used by the bundled Tesseract WebAssembly core that powers Smart Redact. This only permits WebAssembly instantiation; it does not enable JavaScript eval(), dynamic Function construction, or loading scripts from remote origins.

9 Data retention

Captured images are stored only temporarily in your browser while you edit them. Stale entries are purged automatically. Recent captures (the optional "history" feature) live entirely in your browser's local storage — never on any server — and can be cleared by turning history off or reducing the cap in Settings.

Recordings (since v1.8) are kept in the extension's IndexedDB storage in your browser. A recording stays while it's in your history. It's deleted when you delete it from Your captures or when newer captures push it past your history limit. Recordings that aren't in your history (for example, with history turned off) are removed automatically about an hour after they were made. Uninstalling the extension deletes all of them.

Files you upload via an opt-in sharing service live wherever that service stores them: in your own Google Drive, or in a public Imgur post. Their retention is governed by that service's own privacy policy.

10 Third parties

The extension does not integrate with third parties by default. If you turn on an optional sharing service, the extension exchanges data with that service only, only when you click the corresponding button:

11 Google API user-data disclosure

CaptureKit's use of information received from Google APIs adheres to Google's API Services User Data Policy, including the Limited Use requirements. Specifically:

  • Google user data (the OAuth token, Drive files created by CaptureKit, and the account name/email shown by Test connection) is used solely to upload the current screenshot to your Drive at your request and to show you which account is connected. The name and email are displayed on the settings page only and are never stored.
  • The extension does not transfer this data to any other party.
  • The extension does not use this data for advertising.
  • The extension does not allow humans to read this data, and there is no server-side component — all handling is client-side in your browser.

12 Changes to this policy

If this policy changes, the updated version will be posted at this URL with a new "Last updated" date. Material changes will also be noted in the extension's release notes.

13 Contact

Questions about this policy or a data request? Email araza5193@gmail.com

← Back to CaptureKit