Skip to content
Sign in

/cookies

Cookies & tracking.

Short version: no advertising cookies, no cross-site tracking, no consent wall. Everything we store is strictly functional.

What we store

We use only strictly-necessary / functional browser storage, no tracking or advertising identifiers:

  • Theme preference (localStorage, audiolab-theme): remembers dark/light. Purely cosmetic.
  • Language and colour note (localStorage, audiolab-prefs-hint): remembers that you have seen the one-time note that points to the language and colour buttons, so it never comes back. Purely cosmetic.
  • Language choice (localStorage, audiolab-lang): only written when you pick a language yourself in the language switcher, so the site stops suggesting one. Without it we read your browser’s language settings on the page, and nothing is sent to us. Purely cosmetic.
  • Sign-in session (Supabase auth token, localStorage): keeps you logged in on /account. Only present if you sign in.
  • SkillLab progress (localStorage, skilllab-progress): your local scores, on your device only.
  • Workspace clip (IndexedDB, audiolab-workbench): the decoded audio you loaded, so switching tabs does not re-decode it. Cleared after four hours or when you close the clip.
  • Lab handoff (IndexedDB, audiolab-handoff): carries one file from a lab into the workspace. Written on handoff, read once.
  • Your API key (localStorage, al:connect:key): only if you paste one on /connect, so you don’t have to fetch and paste it again next visit. It stays on your device (the page never sends it anywhere) and “Forget it” removes it.
  • HearLab session and log (localStorage, hearlab-session and hearlab-log): the captions from your last listening session (restored if you return within seven days) and your check-ins (kept until you discard them). Written on your device only. HearLab stores no audio; for the captions, your browser’s speech recognition may send the audio to an online speech service (Chrome does; see the privacy policy).
  • HearLab Log (localStorage, hearlab-momenten, hearlab-oren, hearlab-koppeling, hearlab-wachtrij and hearlab-taal): on /hearlab, your own list of logged moments, what you normally wear on each ear, the link with your practice (its name and the device key issued after your consent), moments waiting to be sent while you are offline, and the language you picked (the practice dashboard remembers its language in hearlab-taal too). Sending your moments to your practice is what you consent to in the app, see the privacy policy; this storage only keeps the app working on your device. Withdrawing consent removes the link and the queue, and “Clear this device” removes your list.
  • File-name privacy choice (localStorage, audiolab:anonymise-file-names): whether you asked us to anonymise file names before they are saved. The real answer lives on your account; this is only a local copy so the page does not have to wait for the network before it hides a name.
  • Lab preferences (localStorage, al:preset:…): small interface choices per lab, such as which tab you had open or which caption language you picked.
  • Interface state (localStorage, al_onboarded, al_acct_hidden and al_hist_view): whether you have seen the intro, whether account values are hidden on screen, and whether your analysis history shows as cards or as a table.
  • Sign-in event marker (sessionStorage, al_si): so one visit reports at most one “signed in” event to our product analytics. Gone when you close the tab.
  • Chosen plan (sessionStorage, al_plan): the plan you picked on the homepage slider, kept until you have signed in on /account so the checkout can open right after. Gone when you close the tab.
  • Campaign tags (sessionStorage, al_utm): only if the link you arrived with carries campaign tags (utm_source, utm_medium, utm_campaign, utm_content). We keep those four values for this tab so our product analytics can tell which post, message or listing a visit came from, also on later pages. It holds no identifier. Gone when you close the tab.
  • Checkout marker (sessionStorage, al-ads-purchase): only exists if campaign measurement is switched on (see below), and only after a completed checkout, so reloading the confirmation page cannot report the same sale twice. Gone when you close the tab.

That list is meant to be exhaustive: it is everything this site writes to your browser. You can check us on it: open your browser’s developer tools, Application → Storage, and compare. A build check (scripts/privacy-truth-check.mjs) fails if the code starts writing a key that is not named here.

Under the ePrivacy Directive, strictly-necessary and functional storage like this does not require a consent banner. We therefore don’t show one, and we don’t load anything that would need one.

What we don't do

No Google Analytics, no Meta Pixel, no cross-site tracking, and no third-party marketing cookies. We do use PostHog for product analytics, on its EU-hosted instance, configured with in-memory persistence: it stores nothing on your device and sets no cookies, which is why it does not trigger a consent banner under the ePrivacy Directive. When you are signed in we label those events with your account id, so we can see how the product is actually used by the people who have an account. That id is not your email address, and it still puts nothing on your device. PostHog also reports JavaScript errors from your browser to us, which is the message and the place in our code, never a recording of your screen.

No advertising networks either. The code to report a completed checkout to Google Ads exists in this site, but it only loads when a campaign id is configured, and today none is. This sentence is rendered from that same setting rather than typed by hand, so it cannot quietly become untrue: switch the campaign on and this paragraph changes with it.

Managing it

You can clear all of the above at any time via your browser’s "clear site data" for audiolab.tools. Doing so signs you out and resets your theme and local progress; nothing else is affected. See also our Privacy Policy.

Last updated

2 July 2026. Initial publication.