Privacy Policy — Block Sites Until I Complete ANKI

No accounts. No servers. No analytics. Everything stays on your own computer.

Last updated: 10 August 2026 Contact: sinhanikhil549@gmail.com

Limited Use disclosure

The use of information received from Google APIs will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.

In this extension's case that commitment is easy to keep: it has no server to send anything to. Everything below describes data that never leaves your computer.

What this extension handles, in Chrome's own categories

Chrome asks developers to disclose the data an extension handles even when it is only ever processed locally and never transmitted. Two of Chrome's categories apply here, and both stay on your machine:

CategoryWhat it is hereLeaves your device?
Authentication informationA SHA-256 hash of the master password you optionally setNo. Never transmitted. The plain password is never stored at all.
Web historyThe address of a tab is read as it navigates, so the extension can decide whether that site is currently blockedNo. Not stored, not logged, not transmitted.

Nothing else is handled: no name, email, address or ID; no health, financial or payment data; no location; no personal communications; no page content; no form data; no keystrokes; no mouse or scroll tracking.

The short version

This extension collects nothing, sends nothing, and has no server. Everything it knows stays in your own browser's local storage on your own computer. There is no account, no analytics, no telemetry, no crash reporting, no advertising, and no third-party SDK of any kind.

If the extension were removed from your browser tomorrow, there would be nothing left anywhere for anyone to delete, because nothing ever left your machine.

What the extension stores, and where

All of it lives in chrome.storage.local — your browser's own storage, on your own disk. None of it is synced to a Google account (chrome.storage.sync is not used anywhere), and none of it is transmitted.

WhatWhy
The list of websites you chose to block or allowTo know what to block
Your daily Anki study goal, and how much of it you've doneThe gate itself
Cards reviewed today, as a numberThe optional card-count goal
How many different cards you reviewed today, as a numberThe optional "count each card only once" check
How many cards are still due today, as a numberThe optional "clear today's due" goal
How many of today's review answers were right and wrong, as two numbersThe optional "get this much right" goal
Seconds studied today per deck, as a number for each deck you studiedThe optional per-deck time goals
The names of any decks you chose to limit the goal to, exactly as you typed or picked themTo know which decks count
Your settings (anti-cheat switches, sensitivities, theme, reset time)To behave the way you configured
A SHA-256 hash of your password, if you set oneTo check the password without storing it
Points, level and streak countThe scoreboard on the popup

Your password is never stored. Only a SHA-256 hash of it is kept, and the hash is only ever compared against a hash of what you type. It is not sent anywhere.

The camera

This is the part that deserves the most detail, because it is the part that sounds most alarming.

Your video never leaves your computer. It is never uploaded, never recorded, and never written to disk.

The camera check is off when you install the extension. It stays off until you turn it on yourself, with the switch in Settings → Study & Unlock → 📷 Camera. Setting a study goal does not turn it on; nothing turns it on but that switch.

If — and only if — you switch the camera check on, the extension opens a small window that requests camera access through Chrome's normal permission prompt. Each frame is analysed in memory, inside your browser, by a face detector (lib/pico.js plus a bundled detection model) that runs entirely locally. There is no cloud vision service and no network request involved in any part of it.

The only thing produced from your camera is a single true/false answer, many times a second: *is a face visible right now?* That boolean is the sole output. The frames it was computed from are discarded immediately and are never stored, serialised, or transmitted.

The camera is released (the tracks are stopped, and the recording indicator goes out) when the camera window is closed, when the page is closed, and when the extension no longer needs it.

You can turn the camera check off completely in Settings → Study & Unlock → 📷 Camera, and the extension works without it.

Your browsing

To block a site, the extension has to be able to see the address a tab is going to. It does this with Chrome's tabs API. That is why Chrome shows you the "read your browsing history" warning at install — it is the standard warning for that permission.

What actually happens with a URL: it is compared, in memory, against the block or allow list you typed in yourself. If it matches and today's goal isn't finished, the tab is sent to the extension's own "earn it first" page. That is the entire lifecycle.

No browsing history is stored, logged, profiled, or transmitted. The address of the page you were sent away from is passed to the blocked page in its own URL, so it can show you where you were going and send you back afterwards. It is not written to storage. Because that happens by navigating the tab, the blocked page's address — which contains the address you were heading for — appears in your own browser history like any other page you visit. That is your browser's record, on your machine; the extension neither reads it nor keeps a copy.

The only site addresses this extension *stores* are the ones you type into the block or allow list yourself.

Network connections

The extension makes network requests to exactly two addresses, both of which are your own computer:

That is the complete list, and both addresses are fixed constants in the code rather than settings. The extension's host permissions are exactly those two ports — http://127.0.0.1:8765/* and http://127.0.0.1:8766/* — so this claim is enforced by Chrome rather than merely promised. It has no permission to reach any other address, on your machine or on the internet.

The one exception is entirely user-initiated: if you click the Anki link and Anki turns out not to be installed, the extension opens Anki's official download page (https://apps.ankiweb.net/) in a tab. Opening a tab is not a data transfer.

The bundled Anki add-on

The FocusGate Bridge add-on runs a small HTTP server on 127.0.0.1:8766, inside Anki, on your machine. It reports three things:

These are those four counts, in full:

CountWhat it is
Cards still dueHow many cards Anki is still asking you for today, taken from the same deck-list numbers you see when you open Anki
Different cards answeredHow many distinct cards you have answered since your day began — a count, not a list
Answers rightHow many of today's review answers were correct
Answers wrongHow many were not

To work these out, the add-on reads your review log and your deck list inside Anki. It reads your scheduling data, and this is where that happens — because there is no other way to answer "is anything still due" or "how many did you get right". What crosses the boundary is only ever the four totals above. No card identifiers, no note contents, no field text, no question, no answer, no per-card history, and no list of which cards were involved. Your collection is only ever read, never written.

So that these can be scoped to the right decks and the right day, the extension sends the add-on two things when it asks: the names of the decks you chose (if you chose any), and the time your own study day began. Both stay on your machine — this is one program on your computer asking another.

Nothing about your notes, your cards' contents, or your answers to individual cards is ever read or reported.

To answer the media question, the add-on adds a small script to the card as Anki displays it. That script looks only at the media elements on the page and, for a YouTube embed, adds enablejsapi=1 to the embed address so the player will report whether it is playing. That is a change to the copy of the card being displayed, in memory, for that moment — your notes and cards are never modified, and nothing is written back to your collection.

It only answers requests that come from a browser extension. Requests carrying a website's origin are refused, so a web page you happen to have open cannot read your Anki window state or ask Anki to come to the foreground.

On Windows it also registers a focusgate-anki:// link under your own user account (HKEY_CURRENT_USER) so the extension can start Anki, since Chrome is not allowed to launch a program directly. Nothing is written outside your user account and no administrator rights are used.

Saving the add-on file

One button saves a file, and only when you click it. ⬇ Add-on builds the .ankiaddon file from the copy bundled inside the extension and saves it to your Downloads folder, the same way clicking any download link on any website does. Nothing is fetched from a server to do it, and the extension does not ask Chrome for the downloads permission — it has no ability to see, search or open your downloads. You install the saved file yourself, in Anki.

Remotely hosted code

There is none. Every line of JavaScript the extension runs ships inside the package, as Manifest V3 requires. Nothing is fetched and evaluated at runtime, and there is no remote configuration.

Children

The extension is a study tool with no accounts, no social features, no user- generated content, and no data collection, so there is nothing for it to collect from anyone of any age.

Changes

If this policy ever changes, the updated version will ship with the extension and be published alongside it. Material changes will be noted in the extension's store listing.

Contact

Questions: sinhanikhil549@gmail.com