Cookies & Local Storage
Exactly which cookies and browser-storage keys the site uses, what each one is for, and how to control them.
In plain English
- The only cookies are Google Analytics' (anonymised). In the EU/EEA, UK and Switzerland they are not set until you press “Allow analytics” on the banner; elsewhere they are on by default and you can turn them off in the footer.
- Your progress, streak, planner, lab drafts and the notes and assignments you have opened are saved in your browser (local storage and IndexedDB) so the tools work offline — nothing is sent to us unless you sign in, when only your progress document syncs to your account.
- You can turn analytics on or off any time with “Cookie settings” in the footer, wherever you are; a Global Privacy Control signal turns it off automatically.
- Clearing site data in your browser wipes everything, including your progress — export nothing first, there is nothing to export; it is your device.
The summary helps you read the document; the full text below is what applies.
1. What cookies and local storage are
A cookie is a small text file a website asks your browser to keep and send back with later requests; it can be read by the site (or a third party) on every visit. Local storage, session storage and IndexedDB are similar browser features, but their contents are never sent to a server automatically — a page can only read them while it is open in your browser. The site uses local storage heavily (that is how a site with no accounts remembers you), IndexedDB for the larger Smart Notes documents, and cookies only for analytics, which you can turn off.
2. Local and session storage we use (no consent needed — strictly necessary for the feature you use)
| Key | Type | Set by | What it holds | Lifetime |
|---|---|---|---|---|
theme | local | Theme switcher | “light”, “dark” or “system” | Until cleared |
zak-consent | local | Cookie banner | Your analytics choice (allowed / declined) and when you made it — or, outside the countries where a banner is required, a note that none was needed, so we do not look your country up again | 12 months, then the banner (or the lookup) happens again |
cswithzak-progress | local | My Progress dashboard | The display name you typed, your chosen level (O Level / AS / A2 — one setting used by every page and by AskZ), XP (counted per device — a random device id lives here too), level, streak, last-active date, completed topics, bookmarks, quiz results, keys of questions seen/missed, exam-question attempts, flashcards reviewed | Until cleared |
cswithzak-account | local | Account (/account) | Only if you sign in: your sign-in token, email address and when this browser last synced. With it the progress above is sent to and fetched from our server — see the Privacy Policy, section 3l | Until you sign out or clear it (the token itself expires after 180 days) |
zak-flashcards-memory | local | Flashcards | Which cards you marked as weak | Until cleared |
zak-announcement | local | Announcement bar | Which site announcement you dismissed (currently the askzbot.com launch), so it stays closed | Until cleared |
zak-search-recent | local | Site search (⌘K) | The last six results you opened, shown as “Recent” when you open the search again | Until cleared |
zak-assignments, zak-assignment-work:… | local | ZAK Assignments | The assignments you have opened (so they work offline), the answers you typed and the marks you gave yourself | Until cleared |
zak-planner-v2 | local | Exam Planner | Your chosen Cambridge location/zone, series, subject and revision-plan settings | Until cleared |
zak-notes (IndexedDB database), zak-notes:… (local-storage fallback) | IndexedDB / local | AskZ Smart Notes | The topics' notes you have opened, so they load instantly and work offline | Until cleared |
zak-notes-mastery | local | AskZ Smart Notes | The sections you ticked as mastered | Until cleared |
zak-playground, zak-playground-py | local | Pseudocode / Python Playground | The last pseudocode and Python program you typed, so they survive a refresh | Until cleared |
zak-sql, zak-asm, zak-prolog, zak-prolog-query | local | SQL Lab, Assembler, Declarative Lab | The last SQL script, assembly program, Prolog program and query you typed | Until cleared |
zak-logic-circuit, zak-logic-expr | local | Logic Gates Lab | The circuit you last drew and the expression you last typed | Until cleared |
zak-boolean, zak-flowchart, zak-translator, zak-ds, zak-dbdesign, zak-oop | local | Boolean Algebra & K-map Lab, Flowchart Studio, Translator, Data Structures Playground, Database Designer, OOP Designer | The expression, flowchart, pseudocode, operations, table design or class description you last typed in that lab, so it survives a refresh | Until cleared |
zak-task:…, zak-task-lang | local | Programming Tasks | Your code for each task (per language) and whether you last chose pseudocode or Python | Until cleared |
zak-visit | session | Site visits counter | A “1” meaning this browser session has already been counted as a visit, so the footer counter does not count you again on every page — see the Privacy Policy, section 3c | Until you close the tab |
zak-askz | session | AskZ | The current conversation (messages, random conversation ID, whether the drawer is open, unsent draft) | Until you close the tab |
None of these values is transmitted to us by the browser, with three deliberate exceptions: zak-visit is read only to decide whether a page tick counts as a new visit (the tick itself carries no data about you), the random AskZ conversation ID is sent with each message you choose to send so the server can find the thread, and, if you have signed in, cswithzak-progress is synced to your account using the token in cswithzak-account.
4. Your choices
- Cookie banner: if you are in the EU/EEA, the UK or Switzerland, a banner asks you on your first visit; analytics stays off until you press Allow analytics, and No thanks is remembered so we do not keep asking. Elsewhere no banner appears (your local law does not require one) and analytics runs from your first page view until you turn it off from the footer. Which applies is decided from the country Cloudflare attaches to your request (used once, never stored) or, failing that, your browser’s time zone — and if we cannot tell, we ask. We record your choice in
zak-consent. - Change your mind: click Cookie settings in the footer at any time.
- Browser controls: every browser lets you block or delete cookies and site data (usually under Settings → Privacy). Note that deleting site data for cswithzak.com also deletes your progress, planner, lab drafts and saved notes and assignments, because they live there.
- Google opt-out: tools.google.com/dlpage/gaoptout blocks Google Analytics on every site.
- Do Not Track / Global Privacy Control: if your browser sends a Global Privacy Control signal we treat it as “Decline” and never load analytics, regardless of the banner.
5. Changes
If we add a storage key or a cookie, we will list it here and update the date at the top. Removing one needs no notice.