This site keeps a few small things in your browser so it remembers what you were doing —
your theme, tutorial progress, bookmarks,
audio settings, and similar UI preferences. Nothing leaves your device.
No personal information is collected, no analytics are sent off-site, and no data is shared
with third parties.
Below is the complete inventory of every cookie and localStorage key this site
can write to your browser. Each row shows whether the value is currently set, and you can
delete entries individually with the button,
remove a whole category, or wipe everything.
Cookies
Stored as HTTP cookies, scoped to this site only. None are session-tracking cookies; all are pure UI preferences.
UI & reading preferences
Cookie
Purpose
Status
Delete
dark-mode
Light/dark theme preference (true/false).
show-highlights
Whether yellow text highlights are visible in articles and the SE Book.
highlights
Older alias of show-highlights, used on the blog index page only.
read-aloud
Whether text-to-speech (read-aloud) controls are visible by default.
uml-accent-color
Custom accent color used by UML diagram renderers in tutorials.
SE Book bookmarks
Cookie
Purpose
Status
Delete
se-bookmarks-active
Whether the bookmarks feature is enabled.
se-bookmarks
JSON list of pages you bookmarked in the SE Book (URL + title).
SE Gym
Cookie
Purpose
Status
Delete
se-gym-active
Whether the personal gym feature is enabled.
se-gym
JSON list of items (questions/flashcards) you added to your personal gym.
analyze-performance
Whether per-question performance tracking is enabled.
Browser localStorage
Stored using the browser's localStorage API, scoped to this site only.
All entries are pure preferences and progress data — never personal information.
Accessibility & audio
Key
Purpose
Status
Delete
prefersReducedMotion
Persistent override of the OS “reduce motion” preference (set by visiting ?reduce-motion=1).
cap_volume
Last-used volume of the audio player (text-to-speech / podcast playback).
cap_speed
Last-used playback speed of the audio player (e.g. 1.5).
tts-voice-name
Selected text-to-speech voice for the read-aloud feature.
SE Gym performance statistics
Key
Purpose
Status
Delete
se-gym-stats
Per-question seen/correct counters used to surface your most-difficult questions. Only written when Track Performance is enabled.
Tutorial progress & debugger state
These keys are per-tutorial — one entry per tutorial you have ever opened. Static keys are listed first; dynamic keys (those including a tutorial id or page path) are discovered from your browser and listed at the end.
Completed exercises in the advanced regex tutorial.
Where else does this site store data?
For full transparency, here is everything else the site touches that could be considered storage — with what's actually used:
sessionStorage — not used persistently. A single one-time migration step
reads and clears a legacy prefersReducedMotion entry to promote it into
localStorage; nothing else is written to sessionStorage.
IndexedDB, WebSQL, Cache API
(caches.open), File System Access API
(showDirectoryPicker, showSaveFilePicker) — not used. No data is stored here at all.
Service worker — tutorials that need cross-origin isolation
(e.g. WebContainers-backed exercises) register
coi-serviceworker.js,
whose only job is to inject COOP / COEP response headers.
It does not cache responses, store request bodies, or persist anything.
BroadcastChannel — used as in-memory messaging between
the main tutorial window and detached editor / instructions / debugger / output / UML
pop-out windows (channel names ttsync-<path>, uml-sync-<path>).
Messages live only while at least one of the windows is open and are not written to disk.
The browser-based Linux VM (v86) also uses a v86-inbrowser-<n> channel for
its virtual networking; same lifetime, no persistence.
Third-party CDNs — this site loads fonts, FontAwesome icons, jQuery,
Bootstrap, Mermaid, marked, KaTeX, Monaco, Pyodide, and the WebContainers runtime
from public CDNs. We don't send those services any user data, but their
networks see the request. No analytics, telemetry, or trackers are loaded.
Cross-origin cookies — embedded YouTube videos and similar
third-party iframes set their own cookies on their own origin. Those are governed
by those services' privacy policies and can't be reached or deleted from this page.