thelernen logothelernen
Start for free

Cookie & Storage Policy

Last updated: June 2026

This page explains what TheLernen stores in your browser, what it is for, and whether it needs your consent. Almost everything is first-party localStorage that never leaves your device: your study progress, streaks, XP, level, daily goals, per-language settings, which lessons you have finished, and interface preferences such as theme and sound. Those keys are strictly necessary for a learning app to remember where you got to, so they are not gated behind the banner. The table below names the ones worth naming — there are roughly seventy in total, most of them per-language or per-session variants of the same few patterns (dl_stories_*, dl_words_learned_*, dl_is_pro_*), and listing every one would be less clear, not more. Nothing in localStorage is sent to a third party. You can change your consent choice at any time by clearing the cookie called dl_consent (App Settings → Clear app cache, or your browser settings).

1. Strictly Necessary (no consent required)

These keys make the app work — saving your study progress, language choice, and theme. They store data only in your browser (localStorage). The app cannot function without them.

2. Analytics (consent required)

When you click "Accept all" in our cookie banner we load PostHog (EU servers, GDPR-compliant) to anonymously measure which features help you learn most. PostHog sets a small first-party cookie and an anonymous ID. We never share this data with advertisers. If you choose "Only necessary", PostHog is never loaded.

3. Error Monitoring (legitimate interest)

Two things run here. On our server we log AI errors (e.g. when Google Gemini is overloaded) to PostHog; those logs contain only error codes and HTTP statuses, no personal data. In your browser, Sentry reports crashes so a broken page reaches us instead of silently ending your session — it receives the error message, the page it happened on and your browser type, with personally identifiable information switched off and no session recording. Both are processed under GDPR Article 6(1)(f) — legitimate interest in a working, secure service — and neither sets an advertising or analytics cookie, so neither is gated behind the banner.

4. Third-Party Cookies

TheLernen shows advertising on its editorial pages — blog articles, relocation guides, course landing pages and the CEFR level pages — and never inside the learning app, on dictionary word pages or on account screens. Third-party cookies you may encounter:

  • Google AdSense (advertising) — loaded only on the editorial pages listed above, and only after you choose "Accept all". Google and its partners may set cookies to serve and measure ads. You can turn off personalised advertising at adssettings.google.com, and review Google's partner list at policies.google.com/technologies/partner-sites.
  • Meta pixel (advertising measurement) — loaded only after you choose "Accept all".
  • Supabase (auth session) — set only after you log in. Necessary.
  • Lemon Squeezy (checkout) — set only on the checkout page when you click Subscribe. Necessary for payment.
  • PostHog (analytics) — set only with "Accept all" consent.

5. localStorage Keys We Use

KeyPurpose
dl_consentYour cookie/tracking consent choice.
dl_session_idLinks your local progress to your account.
dl_device_idAnonymous device identifier for guest sessions.
langYour selected interface language.
dl_study_langLanguage you are currently learning.
themeLight or dark theme preference.
dl_sfx_mutedSound effects on/off preference.
dl_hide_romajiHide romaji in Japanese learning mode.
dl_anki_native_imeUse native IME in Anki mode.
dl_hiragana_srsSRS progress for Hiragana characters.
dl_katakana_srsSRS progress for Katakana characters.
dl_german_symbols_srsSRS progress for German umlauts.
dl_polish_symbols_srsSRS progress for Polish characters.
dl_is_pro_{session}Cached PRO status for your session (refreshed from server).
guest_session_idKeeps your progress if you learn without an account.
dl_total_xpExperience points earned.
dl_levelYour current level.
dl_goalWhy you said you are learning — used to pick your first path.
dl_daily_goal_{lang}Daily target for that language.
dl_max_streak_{lang}Longest streak reached in that language.
dl_stories_{lang}Which stories you have read in that language.
dl_words_learned_{…}Counters behind your daily progress ring.
dl_onboarding_completedStops the onboarding running twice.
dl_srs_settingsYour spaced-repetition preferences.
dl_visit_countCounts visits so the "install app" prompt is not shown too early.
dl_tracked_day2Marks that the "came back on day 2" event has already been counted, so it is not sent twice. The event itself only fires if you accepted analytics.

6. Your Rights

You can clear all browser storage at any time via App Settings → Clear app cache (this also resets your consent choice — the banner will reappear). You can also delete your account entirely from Settings; this removes all server-side data per our Privacy Policy.

← Privacy Policy