Cookies & storage
Last updated: 2026-06-06
What we store on your device, why, and how to control it. The full handling of personal data is in the privacy policy.
Your analytics choice
Pick whether we can load Google Analytics on your device. Takes effect on next page load.
Strictly necessary (always on)
These keep the app working. They can't be disabled.
| Name | Purpose | Lifetime | Provider |
|---|---|---|---|
| authjs.session-token | Keeps you signed in. Set when you complete Google sign-in. | Cleared on sign-out (server-side session, ~30 days max). | fluentwith (first-party) |
| authjs.csrf-token | CSRF protection for the sign-in flow. | Session. | fluentwith (first-party) |
| authjs.callback-url | Remembers where to send you after sign-in. | Session. | fluentwith (first-party) |
Analytics (off by default — opt-in)
We'd like to know which features people use so we know what to improve. Loaded only after you click "Accept analytics" on our banner (or above on this page).
| Name | Purpose | Lifetime | Provider |
|---|---|---|---|
| _ga | Distinguishes unique visitors. Used by Google Analytics 4. | 2 years. | Google Analytics |
| _ga_<measurement-id> | Persists session state for Google Analytics 4. | 2 years. | Google Analytics |
Our GA4 setup uses IP anonymization, has Google Signals disabled, and does not use Google's advertising features. You can opt out at any time using the toggle above.
Browser localStorage (not cookies)
We also store a few small values in your browser's localStorage. These never leave your device.
| Name | Purpose | Lifetime | Provider |
|---|---|---|---|
| fluentwith:cookie-consent | Your accept/reject choice for analytics cookies. | Until you clear browser storage. | fluentwith |
| english-practice:difficulty | Your selected difficulty level on the home page. | Until you clear browser storage. | fluentwith |
| english-practice:dismissed-suggestion | Hides the "try this next" suggestion banner once dismissed. | Until you clear browser storage. | fluentwith |
| voice-disclosure | Remembers you've seen the voice-data-flow disclosure modal. | Until you clear browser storage. | fluentwith |
Browser IndexedDB (not cookies)
For Reading mode (read-aloud practice) we save your audio recording to an IndexedDB database called fluentwith-audio on your device, so you can replay it on the report page. The recording never leaves your device except for the brief transcription round-trip to our STT provider (Groq). We wipe this database when you sign out.
No advertising or cross-site trackers
We don't use Meta Pixel, TikTok Pixel, Google Ads, X (Twitter) tags, LinkedIn Insight, or any similar tracker. We don't fingerprint your browser. We don't share data with ad networks.
How to clear everything
Sign-out from your account page — clears the auth cookie and wipes the audio IndexedDB.
Browser settings — every browser has a "clear site data" option in its developer tools (Application tab → Storage in Chrome/Edge; Storage tab in Firefox; Develop → Empty Caches in Safari). This clears cookies + localStorage + IndexedDB in one shot.