Cookie Policy
This policy explains TyperLab's use of cookies and similar browser technologies.
Version 1.0 · Effective date: 2026-09-04
Александр А. Кудрявцев · Technical deployment test · privacy@typerlab.com
How we use cookies
- Cookies are small browser records. Similar technologies include local and session storage. TyperLab uses them to keep the service working and remember choices you explicitly make.
Necessary technologies
- The typerlab_consent cookie stores your cookie choice for 180 days.
- Authentication cookies from NextAuth and the typing_anonymous_id cookie support sign-in, security, and anonymous progress. Their lifetime is session/config dependent and five years respectively.
Optional analytics
- Product analytics and Yandex Metrica are disabled until you choose Analytics in Cookie settings. When enabled by deployment configuration, Metrica records page visits without Webvisor, click maps, form analysis, user IDs, typed text, keystrokes, email, or nickname. TyperLab may also send product events to PostHog through a server-side adapter. Retention depends on each configured analytics provider.
- You can change or withdraw this choice at any time using Cookie settings in the footer. Withdrawing stops new analytics events and future Metrica route hits. Optional analytics uses sessionStorage for navigation and sign-in context; withdrawing consent clears it.
Other services
- Google sign-in sends authentication information to Google when you choose it. GitHub sign-in is available only when enabled. Profile images may load from the account provider and send normal request information to that image host. These services follow their own privacy policies; signing in does not require optional analytics consent.
- We do not use marketing trackers. Rejecting optional cookies keeps registration, sign-in, training and progress available.
Your controls
- You can also remove cookies in your browser settings. Removing necessary cookies can affect sign-in and anonymous progress.
- For broader information about personal-data processing, see the Privacy Policy. Last updated: 2026-09-07.
| Name / technology | Provider | Purpose | Category | Lifetime |
|---|---|---|---|---|
| typerlab_consent | TyperLab | Stores your cookie choices | Necessary | 180 days |
| typerlab_locale | TyperLab | Settings you explicitly choose | Necessary | 180 days |
| typing_anonymous_id | TyperLab | Training progress and results | Necessary | 5 years |
| __Secure-next-auth.session-token / next-auth.session-token | TyperLab | Signed-in session | Necessary | 30 days, renewed during use |
| __Host-next-auth.csrf-token / next-auth.csrf-token | TyperLab | Sign-in security | Necessary | Browser session |
| __Secure-next-auth.callback-url / next-auth.callback-url | TyperLab | Return address after sign-in | Necessary | Browser session |
| __Secure-next-auth.pkce.code_verifier / next-auth.pkce.code_verifier; __Secure-next-auth.state / next-auth.state | TyperLab | Sign-in security | Necessary | 15 minutes or until callback |
| localStorage: typerlab:theme:v1; typing-trainer:preferences:v1 | TyperLab | Settings you explicitly choose | Necessary | Until cleared in your browser |
| localStorage: typing-trainer:progress:v1; typing-trainer:personal-bests:v1; typing-trainer:course-position:v1; typing-trainer:learning-path:v1; typing-trainer:skipped-lessons:v1 | TyperLab | Training progress and results | Necessary | Until cleared in your browser |
| localStorage: typing-trainer:pending-sessions:v1 | TyperLab | Training progress and results | Necessary | Until synced or cleared |
| localStorage: typing-trainer:onboarding:v1; typing-trainer:touch-typing-onboarding:v1 | TyperLab | Remembers dismissed introductory tips | Preferences | Until cleared in your browser |
| sessionStorage: typerlab.product-analytics.continuation; typerlab.sign-in.provider | TyperLab | Optional product event context | Analytics | Browser session |