Cookies are small text files that are stored on your device (computer, tablet, or mobile) when you visit a website. They are widely used to make websites work more efficiently and provide information to website owners. Cookies help us enhance your experience on TransVoice by remembering your preferences and understanding how you use our service.
Required cookies and browser entries support authentication, language, your storage decision and short-lived navigation handoffs. They cannot be disabled through our settings because the requested flow would otherwise not work.
Optional localStorage remembers interface layouts, device and audio setup, tours and dismissed notices. When Functional is off, these states continue in memory for the current page but TransVoice neither reads them from nor writes them to localStorage. Withdrawing consent removes the known optional keys immediately.
For audience measurement we run a self-hosted Umami instance. Umami is cookieless and stores nothing on your device. The IP address, user agent and website ID are used to derive a pseudonymous session identifier; the page opened, referrer, screen size, language and country may also be recorded. We load the script only after your consent and stop transmitting immediately when you withdraw.
Third-party cookies only occur if you actively sign in via Google or Apple. Those providers then set their own cookies under their own responsibility; please review their privacy notices. Our audience measurement, by contrast, runs on a self-hosted Umami instance on our own infrastructure in Germany - no third-party analytics services and no advertising networks are embedded.
You have control over cookies. You can manage your preferences in the following ways:
Most web browsers allow you to control cookies through their settings. You can set your browser to block or delete cookies, or to notify you when a cookie is being set. Please note that blocking some cookies may impact your experience on our Service.
You can change your cookie preferences at any time via our cookie banner. Click the link below or in the footer to adjust your preferences.
The complete table below separates essential localStorage/sessionStorage entries from optional Functional entries. Essential sessionStorage markers are limited to the current tab and are consumed or expire after the relevant navigation flow. Optional UI, device, tour, dismissal and layout entries are persisted only with Functional consent.
Each duration is listed below. Short-lived session and OAuth entries expire or are consumed by their flow. The consent record remains until the decision is replaced, the consent schema changes or you clear browser data. Optional Functional entries remain only while consent is active and are removed when you withdraw it.
We may update this Cookie Policy from time to time to reflect changes in our practices or for operational, legal, or regulatory reasons. We encourage you to periodically review this page for the latest information on our cookie practices.
If you have any questions about our use of cookies or this Cookie Policy, please contact us at lea@transvoiceapp.com
Below is the data-driven list of cookies and Web Storage entries currently owned by TransVoice:
| Name | Purpose | Duration | Provider |
|---|---|---|---|
| auth_session | Authentication and session management. Readable by the server only (httpOnly), SameSite=Lax, HTTPS-only in production. | Lifetime of your session, 2 hours by default | TransVoice (Kailar UG) |
| oauth_state | Protects the Google and Apple sign-in flow against cross-site request forgery. Readable by the server only (httpOnly). | 10 minutes | TransVoice (Kailar UG) |
| csrf_token | Protects authenticated requests against cross-site request forgery. Readable by the server only (httpOnly), SameSite=Strict. | 24 hours | TransVoice (Kailar UG) |
| NEXT_LOCALE | Stores your language preference | Until you close your browser (session cookie) | TransVoice (Kailar UG) |
| cookie-consent (localStorage) | Records your Essential, Functional and Analytics decision and its timestamp in this browser. This local consent record is not synced to your account. | Until replaced, the consent schema changes or you clear browser data | TransVoice (Kailar UG) |
| tv-session-start-navigation (sessionStorage) | Distinguishes an intentional in-app session start from a browser reload. | 30 seconds or until consumed | TransVoice (Kailar UG) |
| tv-pending-session-start-intent (sessionStorage) | Returns you to the selected session tool after the required launcher-side audio setup. | 10 minutes or until consumed | TransVoice (Kailar UG) |
| tv-skip-session-audio-setup-once (sessionStorage) | Carries a one-navigation choice to continue without repeating the audio setup prompt. | Until the next check consumes it or the tab closes | TransVoice (Kailar UG) |
| course.voiceSession.handoff (sessionStorage) | Transfers the selected course exercise into its voice-session route in the same tab. | Up to 24 hours, usually cleared by the handoff flow | TransVoice (Kailar UG) |
| course.voiceSession.result (sessionStorage) | Returns the completed voice-session result to the course route in the same tab. | Up to 24 hours, usually consumed immediately | TransVoice (Kailar UG) |
| Name | Purpose | Duration | Provider |
|---|---|---|---|
| ui-storage | Stores interface preferences such as the sidebar state | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| session-surface | Stores the training view you used last so you can pick up where you left off | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| voice-session-custom-tools:local | Keeps an optional browser-local copy of custom session modules and grid layouts. The server document remains the account source when available. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv-selected-mic-id | Remembers the microphone selected for practice on this browser. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv-mic-gain-calibration | Stores per-device microphone gain and volume-gate calibration so audio setup need not be repeated. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv-session-audio-readiness | Remembers whether a microphone/browser path was checked and whether loudness guidance is limited. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv-session-storage-consent-reminder-dismissed | Remembers that the extra in-session Saved-mode reminder was dismissed. It does not change account storage consent. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv-open-in-app-banner-dismissed | Snoozes the device-specific Open in app banner. | 7 days, or earlier if Functional consent is withdrawn | TransVoice (Kailar UG) |
| tv-firefox-mac-banner-dismissed | Snoozes the Firefox-on-macOS microphone reliability notice. | 14 days, or earlier if Functional consent is withdrawn | TransVoice (Kailar UG) |
| tv:tour-device-id | Creates a random browser-local identifier used only to separate Finley tour progress between devices. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv:tours:v1:<user>:<device> | Stores Finley tour progress for this account and browser. | Until Functional consent is withdrawn, the progress is reset or browser data is cleared | TransVoice (Kailar UG) |
| tv:tours:rescue-rate:v1:<user>:<device> | Rate-limits rescue nudges per day and active session so they do not become repetitive. | Until Functional consent is withdrawn or browser data is cleared; daily counters rotate by date | TransVoice (Kailar UG) |
| tv:lastKnown:userSettings:v1:<user> | Caches the last verified account settings to stabilize initial UI while the server copy refreshes. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| tv:lastKnown:userConsent:v1:<user> | Caches the last verified server-side feature consent for resilient UI display; it is not a replacement for the server record. | Until Functional consent is withdrawn or browser data is cleared | TransVoice (Kailar UG) |
| session-layout (legacy migration only) | Reads an older session layout once so it can be migrated to the current custom-tools document. No new values are written. | Removed when Functional consent is withdrawn; otherwise retained only if already present | TransVoice (Kailar UG) |
| Name | Purpose | Duration | Provider |
|---|---|---|---|
| Umami (sets no cookies) | Self-hosted, cookieless audience measurement. The IP address, user agent and website ID form a pseudonymous session identifier; the page, referrer, screen size, language and country may also be recorded. No cross-site tracking or advertising profiles. The script loads only after consent; no new analytics data is sent after withdrawal. | Nothing stored on your device | TransVoice (Kailar UG), hosted at Hetzner Online GmbH in Germany |
| Name | Purpose | Duration | Provider |
|---|---|---|---|
| Google Auth Cookies | Sign-in with Google account - only set if you actively choose this sign-in method | Varies, determined by Google | Google Ireland Ltd. / Google LLC |
| Apple Auth Cookies | Sign-in with Apple ID - only set if you actively choose this sign-in method | Varies, determined by Apple | Apple Inc. |