ContextSnap is a Chrome extension that explains or translates a piece of content you are looking at, in place, on the page you are already on. This policy describes exactly what leaves your computer, where it goes, and what is kept. It is written to be specific rather than reassuring.
ContextSnap can run in one of two modes. You choose which in Settings.
Default mode (our server). Your request goes to our own server, which adds an API key and forwards the request to Google's Gemini API. The answer comes back the same way. We run this server so that the API key is never shipped inside the extension, and so that daily limits can be enforced.
Bring-your-own-key mode. You enter your own Google API key. Requests go directly from your browser to Google. Our server is not involved at all and sees nothing.
Everything below marked (default mode only) does not apply if you use your own key.
This is the most sensitive thing the extension does, so here is precisely how it works.
When you start a capture (via the right-click menu or a keyboard shortcut):
activeTab permission, which Chrome
only grants after you explicitly invoke the extension on that tab.What this means in practice: if you have a banking page or an inbox open in that tab, a picture of it briefly exists in memory. It is not stored, not transmitted, and not accessible to the web page. Only the region you deliberately selected is ever sent.
What the extension cannot do: it cannot capture your screen outside the
browser, it cannot capture other tabs, it cannot capture a tab you have not
invoked it on, and it cannot capture anything in the background. It uses
chrome.tabs.captureVisibleTab only, never desktop or tab-stream capture.
Before your first capture, the extension shows you a one-time notice explaining where the image goes and whether it is stored.
When — and only when — you ask for an explanation, the following is sent to
Google's Gemini API (generativelanguage.googleapis.com):
| What | When |
|---|---|
| The text you selected, plus up to about 500 characters of surrounding text from the page, used as context | When you click Explain on a selection |
| The cropped image region you drew | When you use a capture shortcut or menu item |
| Both cropped regions | When you use two-image mode (one image as context, one as the question) |
| The contents of your clipboard | Only when you press the clipboard shortcut, and only if you granted the optional clipboard permission |
| Your follow-up questions, plus the earlier turns of that same conversation | When you keep chatting in the answer panel |
| A fixed instruction telling the model how to answer, and your chosen answer language | Every request |
If you turn on web search (off by default, and a paid feature), Google may additionally run a Google Search to check its answer. In that case your question text reaches Google Search. This is why it is off unless you turn it on.
What is never sent: the address (URL) of the page you are on, the page title, your browsing history, other tabs, cookies, form data you did not select, your name, your email, or any identifier tied to you as a person.
Your content is handled by Google under Google's own terms for the Gemini API. See Google's privacy documentation for how they process API data.
| Stored | Where | Why |
|---|---|---|
| Your settings — answer language, model, display currency, whether web search is on | Chrome extension storage, synced by Chrome across your own Chrome profiles | So the extension behaves the same on your machines |
| Your own Google API key, if you use bring-your-own-key mode | Chrome extension storage, synced by Chrome across your own Chrome profiles | So you do not have to paste it again. Note: because this is Chrome's synced storage, the key travels through your own Google account's Chrome sync. It is never sent to us. |
| A per-day count of how much you have used and roughly what it cost | Local extension storage on this device only | So you can see your usage in Settings |
| A random, anonymous device identifier (default mode only) | Local extension storage on this device only | So the server can count your daily quota without knowing who you are |
Not stored anywhere, by design: your conversations, the text you selected, the images you captured, your clipboard contents. Closing the answer panel discards the conversation. There is no history feature at the time of writing; if one is added, this policy will be updated before it ships.
Our server exists for two reasons: to hold the API key, and to count requests.
| Stored | For how long |
|---|---|
| Your anonymous device identifier, with a count of requests made today | Until the counter resets, at most a few days |
| Whether that identifier has an active paid plan, and when it expires | While the plan is active |
Our server never stores, and is written not to log: the text you selected, the images you captured, your questions, the answers, your IP address, or your device identifier in any log file.
When a request to Google fails, our server writes one line, and only this:
{"evt":"upstream_error","status":429,"model":"...","plan":"free"}
That line tells us an error is happening. It contains none of your content.
About IP addresses, stated plainly. We do not log your IP address. But your requests do travel over the internet, so your IP is necessarily visible to our hosting provider (Cloudflare) and to Google as a matter of how networks work, in the same way it is visible to any website you open. We do not collect it, store it, or use it.
ContextSnap does not currently sell anything. There is no paid plan, no checkout, and no payment processor connected to the extension at this time. If a paid plan is introduced, this section will be replaced — before that plan ships — with the name of the payment processor used, exactly how it handles your card details, and what it sends us to activate a licence.
| Who | What they do | What they see |
|---|---|---|
| Google (Gemini API) | Generates the explanations | The content you asked about, for that request |
| Google Search | Verifies answers, only if you turn web search on | Your question text, for that request |
| Cloudflare | Hosts our server (default mode only) | Network-level traffic, as any host would |
We do not use analytics services, advertising networks, trackers, session recorders, or any third-party script inside the extension. The extension contains no remote code: everything it runs ships inside the package.
ContextSnap's use of information received from Google APIs will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.
Specifically: we use the data described above only to provide the user-facing feature you invoked; we do not transfer it to others except as needed to provide that feature, to comply with applicable law, or as part of a merger or acquisition; we do not use or transfer it for serving advertising of any kind, including personalised, retargeted or interest-based advertising; and we do not allow humans to read it, except with your explicit consent, for security purposes, to comply with applicable law, or where the data has been aggregated and anonymised.
ContextSnap is not directed to children under 13, and we do not knowingly collect information from them.
If we change what leaves your computer, we will update this page and change the date at the top before the new version of the extension ships.
thetristanlinh@gmail.com — a person reads this and replies.
Pham To Linh, Vietnam