Privacy policy
Effective and last updated
The short version
Sparkle collects nothing. No account, no sign-in, no server, no analytics. The extension doesn’t contain any code that can open a network connection, so the pages you read, the sites you visit and the words you’re learning can’t leave your browser. That’s not a promise to behave — there’s simply nothing in it that could send them.
Everything Sparkle knows lives in your own browser, and the only way any of it moves is if you press Export and save the file yourself.
See for yourself
You don’t have to take our word for any of this. Checking takes about a minute:
- Watch the network. Open
chrome://extensions, find Sparkle, click its service worker, and open the Network tab. Browse as long as you like. Nothing shows up, because nothing is sent. - Read the shipped code. Download the extension from the store, unzip it, and search the JavaScript for
fetch,XMLHttpRequest,sendBeacon,WebSocketandEventSource.content.js— the file that reads your pages — has none of them, and no web address at all. The onefetchinbackground.jsloads Sparkle’s own bundled dictionary over achrome-extension://address, which is just how an extension reads its own files. - Someone independent has looked. Sparkle’s source isn’t public, but every Firefox release ships a complete source archive to Mozilla for review, and the build is reproducible — what they reviewed can be rebuilt and compared byte-for-byte against the add-on being distributed.
Two more things keep it that way. Every build runs a test that reads the packaged extension and fails if a single network primitive, or any unexpected web address, turns up in it — a future release can’t quietly stop matching this page. And the add-on’s own manifest.json declares connect-src 'self', which means your browser blocks outbound requests itself rather than taking Sparkle’s word for it. That one’s in the zip you just opened.
What is stored, and where
All of it sits in your browser’s local extension storage, on your device:
- Your HSK starting level and your pace, including when you changed them.
- Which words you’ve been shown, how many times, and when you last saw each one. That describes your vocabulary — never the pages or sites a word appeared on, which Sparkle doesn’t record at all.
- Your display preferences, and any sites you’ve told Sparkle to skip or stick to.
Sparkle reads the text of the page in front of you to find English words to swap. That happens inside the tab, on the spot — the text isn’t stored and isn’t sent. The dictionary ships inside the extension, so lookups never leave your machine either.
Uninstalling Sparkle deletes everything. There’s no copy anywhere else — worth knowing before you uninstall, so export first if you want to keep your progress.
Moving between browsers
There’s no sync, because sync needs a server. Instead, the options page has an Export button that saves your level, pace and word history as a JSON file, and an Import button that reads one back in. It’s plain, readable JSON — open it and see exactly what’s in it. The file goes only where you put it; Sparkle never sends it anywhere.
Reading words aloud
The card’s “say it” button uses your operating system’s built-in voices — and only the ones that run on your device. Some platforms also offer cloud voices, like Microsoft’s “Online (Natural)” range and Chrome’s Google voices, which work by sending the text to the vendor. Sparkle won’t use those, even where they sound better. On a machine whose only Mandarin voices are cloud ones, the button simply isn’t there.
This website
sparklechinese.com is a static site: a couple of pages of HTML with no database, no accounts, and no endpoint that could receive your data in the first place. No cookies, no analytics, no ad scripts. It’s hosted by Vercel, which serves the requests under its own policy, like any host. The extension never contacts this site, and never runs on its pages.
What Sparkle doesn’t do
- No account, no email address, no password, no identifier of any kind.
- No analytics, telemetry, crash reporting or usage statistics.
- No ads, and nothing sold, shared or transferred to anyone.
- No record of page text, addresses, browsing history, form contents or messages.
- No third-party code in the extension, and nothing loaded from anywhere at runtime.
Because nothing is collected, there’s nothing to request a copy of and nothing to ask us to delete. Uninstalling the extension is the complete deletion.
Chrome Web Store Limited Use
Sparkle’s use and transfer of information received from Google Chrome APIs adheres to the Chrome Web Store User Data Policy, including the Limited Use requirements. In practice that’s an easy bar to clear: Sparkle receives no user data through those APIs beyond what’s stored locally on your own device.
Changes and contact
If Sparkle’s data practices ever materially change, this page changes first — and the build test above means the code can’t drift away from it without failing. Questions go to tgcc1393@gmail.com.