Back to the rooftops

TypeDash

Your runs. Your choice to share.

Privacy information for TypeDash. Updated October 20, 2026.

Playing as a guest

You can play without creating a TypeDash account. A browser game ID keeps your runs together. Its cookie lasts up to 30 days and renews while you use the game. Browser storage also remembers preferences, your privacy choices and your chosen display name. While product analytics is on, it also keeps a session marker and a note of how you first arrived, stored as acquisition categories and campaign labels rather than the link itself.

Clearing cookies, using private browsing or switching browsers can start a new identity. It does not delete earlier server records. Progress you have not saved to an account cannot be recovered after its browser ID is lost.

Optional accounts

Where sign-in is offered, you can create an account to keep your progress across devices. Guest play never needs one. Sign-in is provided by Clerk, our authentication provider. You can sign in with a one-time code sent to your email address, or with another sign-in option when the sign-in screen shows one, such as Google or X. If you use Google or X, that provider shares your basic profile with Clerk and, when it provides one, your email address. Clerk stores your sign-in details under its own terms and privacy policy and sets its own cookies to keep you signed in. TypeDash does not ask Google or X for permission to post or to read your contacts.

TypeDash itself stores Clerk’s user ID for your account, linked to TypeDash game IDs: a new account game ID created at your first sign-in, and any browser game IDs whose progress you chose to save. When Clerk tells us a sign-in session has ended, we also keep that session’s Clerk ID for up to 30 days so it cannot be reused. We do not store your email address or social profile in TypeDash’s game database, and we never use an email address to look up, link or merge progress; ownership follows the Clerk user ID only.

A signed-in browser keeps a TypeDash account cookie, __Host-typedash_acct. It confirms your sign-in for 30 minutes and is renewed in the background at safe moments, such as when the page loads, on the home screen or on a result, but never during a race. Past those 30 minutes it can only finish a race already in progress, for up to 60 minutes after it was issued. If you switch accounts in this browser, the previous account’s cookie is kept briefly as __Host-typedash_acct_prev so a race already in progress in another tab can finish saving. Browser storage keeps a small note that lets the page restore your sign-in after a reload. Clerk’s code never runs on the game pages. It runs only on TypeDash’s account pages (sign-in, the return from Google or X, and account changes such as saving progress, signing out or deleting your account), and briefly in a hidden account page that renews your sign-in or finishes signing out or deleting your sign-in details; that hidden page is removed as soon as it answers and is stopped if a race starts. The account pages do not run page recording, the Google tag or Cloudflare’s performance beacon.

Signing in does not move this browser’s earlier guest progress on its own. Choosing Save progress, or confirming the prompt that shows this browser’s race count, links that guest game ID to your account. That browser then gets a new guest ID, and the saved one can no longer be used as a guest. Linked progress keeps Keyboard and Touch results and passage types separate and is never counted twice. A browser already linked to another account cannot be saved again.

Signing out stops this browser from using your account straight away and clears account information shown on the page. The browser continues as a guest; your saved progress stays in your account. A race already in progress can still finish saving for up to 15 minutes. If signing out of Clerk does not finish, this browser finishes it before anyone can sign in here again.

Delete account, in the Account panel, deletes your account and the runs, replays, Racer Level, shared links and leaderboard entries of every game ID linked to it, requests deletion of the linked analytics data, and then deletes your sign-in details with Clerk. Your entries leave the public leaderboard at once; the rest is deleted in the background in small batches, followed by a 15-minute safety wait that catches races that were still finishing. This usually completes within about half an hour, and can take a few hours for accounts with many saved runs. Deletion cannot be undone and is not reversed by signing in again. We keep a minimal record of the deleted account’s Clerk user ID, and Clerk’s account notices for up to 90 days, so that late or repeated notices can never recreate or restore it. If deleting your sign-in details with Clerk does not finish, TypeDash keeps refusing that sign-in and retries the deletion from this browser up to three times, spaced several minutes apart and never during a race; if it still cannot finish, this browser is signed out and we tell you, and you can email team@typedash.com to have the sign-in details removed. Once your sign-in details are deleted, signing in again with the same email address creates a new, empty account. You can also remove one saved browser’s progress from your account, which deletes the races it saved.

With product analytics on, we record which steps of the sign-in screen were used (opened, method chosen, code sent, completed, cancelled, failed or signed out) and whether the method was email, Google or X. These events never include your email address, sign-in codes, tokens or account IDs.

Custom passages and assistant plugins

The TypeDash Challenges plugin uses the passage submitted to its tool, validates it and returns a preview link. It does not access your TypeDash account, contacts or other conversations, generate text through a separate paid AI service, save a race, or send invitations. The assistant service you use handles your conversation under its own privacy policy.

Our tool runs on Cloudflare. It processes the passage in memory and does not store passage bodies or conversation logs. Cloudflare processes network information needed to serve the request; the tool uses the connecting IP address for a short-lived rate limit. The draft text is encoded in the preview link’s fragment. That fragment is available to your assistant and browser but is not sent as part of the web request. The editor removes it from the address after loading and keeps the unsent draft in this tab’s session storage.

Choosing Lock it in saves the exact custom text in TypeDash so you and friends race the same words. We also keep a creation record linked to your game identity, with the source (editor or assistant), length band and rules version; it is not exported to analytics services. Do not enter secrets, private contact details or sensitive personal information. When you share a ghost challenge, anyone with the link can read the passage and forward it. Custom text is not added to the public passage library, search pages, social preview images or exported analytics. Saved results and creation records can retain passage identifiers and keyed fingerprints after the passage text expires. Page recordings mask custom-text surfaces.

Unshared custom passage text initially expires after seven days. Starting a race or creating a challenge may extend its availability so that the race and shared links work, within the source replay’s retention limit of 30 days. Expired text is no longer served and is cleared by maintenance in batches, so physical deletion may take longer. The saved race replay can retain its copy for its normal retention period. You can revoke shared links and delete runs in My runs. This does not immediately erase the separately stored passage text, which expires on its own schedule. Identical text may also be used by other players, so removing your own run does not remove their copies. To report harmful content or request removal of personal information in a passage, email team@typedash.com. Include the challenge link only if you want us to inspect that shared content.

What we save and why

We save race results, passage and input category, pace, accuracy and observed edits and timing from the race input. Those edits can include incorrect characters. This supports your replay, performance history, matchmaking and fair-play review.

Hosting and network services process requests needed to serve the game. TypeDash runs on Cloudflare, with private replay artifacts in Cloudflare object storage.

Product analytics and error reports

When enabled for this deployment, we record a small set of game events to understand how people find and play TypeDash: page visits, when the game became ready to play, taps on play buttons, races started and finished (including races left or timed out), results shown, rematch requests, when a challenge button appears, challenge links opened, and share or copy actions with whether they worked. A successful share only means your device handed the link off. We can’t tell whether anyone received it.

Events include the page type, campaign and ad identifiers, recognized referral platforms such as a search engine or social app (never the referring address), whether this browser has visited before, and game mode and input type. Race summaries include speed, accuracy, duration, corrections, placement and the public passage’s identifier and difficulty. Campaign labels accept a limited format and must not contain personal information. These events never include what you type, your display name, private links, challenge tokens or raw race replays.

When country analytics is enabled, a separate context event includes an approximate country from your browser’s direct connection to Cloudflare. It may reflect a VPN or proxy. This context also includes the network provider’s autonomous system number, the Cloudflare processing location, a request correlation reference, and coarse automation signals when available. These signals help us investigate traffic quality; they do not prove whether a visitor is human. We also collect device category, browser and operating-system family and major version, browser language and locale, screen and viewport size, pixel ratio, orientation, input method and graphics setting. Where your browser provides them, we include connection category and data-saving preference. During races, we summarize animation-frame and input-response timing, network acknowledgements, disconnects and recovery, viewport changes, typing-focus loss, camera and graphics settings, and whether page recording was active. Selected setting changes, failed joins and visual fallbacks help us understand what led to an issue. These measurements help us find slow or uneven play across browsers. These analytics events do not include IP addresses, city, coordinates or precise location.

Your browser sends these events only to TypeDash. Our servers replace your game ID with a pseudonymous analytics ID and send the events to PostHog, our product analytics provider in the United States, with automatic location lookup turned off. When page recording is enabled, a PostHog recorder also runs in your browser and sends masked page snapshots through TypeDash to PostHog. These help us understand layout, navigation and typing-line transitions. Form input, names, private links and incorrect characters are masked; the public passage, its visual progress, app controls and race statistics may remain visible. We do not record your microphone, camera, native keyboard, console messages, network request bodies or 3D canvas. Page recordings are separate from your own race replays.

When error reports are on, your browser and our servers send them to Sentry, our error monitoring provider in the United States. They contain error types, reviewed error descriptions, locations in our code, asset identifiers and categories such as the page type, browser or connection state. Pseudonymous session and race references can connect a report to its performance measurements and an available page recording. They don’t include your raw game identity, names, typed text, arbitrary error messages or private links.

When product analytics is enabled, we also send structured gameplay measurements to ClickHouse Cloud in the United States. These include race results, matchmaking transitions, typing transaction timing, correction counts and public-passage positions. We use pseudonymous player and race references. These records do not include your name, incorrect typed text, input contents or private links. Rich race replays stay in our separate private replay storage.

We will update this page when our data practices change.

Google Ads measurement

Product analytics also controls Google Ads measurement and ad personalization. When collection is allowed, your browser loads Google’s tag through a Cloudflare gateway on TypeDash’s domain to help us understand which ads bring visitors to TypeDash. The gateway routes supported Google measurement requests to Google; it does not keep the advertising data only within TypeDash. Google receives a public page address, Google ad-click identifiers when present, and connection information such as your IP address and browser details. For a server-confirmed completed race, we send a completion signal with a Google-specific opaque transaction ID to prevent duplicate counting. We provide a fixed page title and omit private links, unrelated query values and referring addresses. Our explicit measurement payload excludes your display name, typed text, game identity and raw replay. Our explicit measurement payload never includes the email address you type into the optional sign-in form, and we do not explicitly pass an email address, phone number or address to Google. If enhanced conversions are enabled and contact details are available with applicable consent, Google may detect and hash them for ad matching.

Google’s tag can read and write advertising and analytics cookies and use advertising data where the consent signals allow it. For visitors in the European Economic Area, United Kingdom and Switzerland, Google’s storage, advertising-data and personalization defaults are denied until an explicit collection choice updates them. In denied mode, Google may send limited measurements without cookies. Read how Google uses information from sites that use its services.

Turning product analytics off prevents new TypeDash ad events and tells an already-loaded Google tag that consent is denied. The loaded tag is removed on your next full page reload; we do not interrupt an active race to reload it. A request already sent cannot be recalled. We do not send your game ID to Google. The game-ID deletion control does not delete data already processed by Google.

Website performance monitoring

When product analytics is allowed, Cloudflare Web Analytics measures the loading speed, responsiveness and layout stability of our public landing pages. Its browser beacon sends performance measurements and page context to Cloudflare without a TypeDash game ID or advertising cookies. We limit this monitoring to public pages and stop new beacon requests when you refuse collection or enter a private page. Cloudflare also processes sampled infrastructure traces to help us investigate request routing, caching and service failures. These operational records are separate from your PostHog events and ClickHouse gameplay records.

Your choices

Open Settings, then Privacy & data, to turn product analytics or error reports off or on. Product analytics includes the Google Ads measurement and public-page performance monitoring described above. Your choice takes effect in this browser straight away and is saved with your game ID; when you are signed in, it is saved for every game ID linked to your account. Turning it off never changes how you play.

If your browser sends Global Privacy Control, we treat it as a request to turn product analytics and error reports off unless you turn them on in Settings. Google Ads measurement remains blocked while Global Privacy Control or Do Not Track is on.

Delete analytics data, in the same place, asks us to delete the analytics linked to this browser’s game ID (when you are signed in, to every game ID linked to your account), including its PostHog person, events and page recordings, and linked ClickHouse gameplay measurements. Each provider has a separate deletion status. Deletion runs in the background, so it isn’t instant, and Settings shows its status. It also turns off analytics, Google Ads measurement and error reports for this browser. Your runs, replays and shared links stay until you delete them in My runs.

What other people can see

Your exact replay stays private to your browser’s game identity. In a live room, fellow racers see your chosen name and race progress. A room invite reveals limited host and room availability information.

A ghost challenge shares the public name you choose, the passage, result and sanitized progress recording. A Daily score link shares your chosen name, date, result and input category, without your private replay. Anyone with a shared link can open and forward it. Your best eligible Daily Dash time for each UTC day and input (Keyboard or Touch) is saved and ranked automatically on the public Daily Dash leaderboard under your racer name, with its WPM and accuracy; Hide me on the board keeps you off it. Results from days before automatic ranking began are not published.

Race Points standings (today, this week, this month and all time) show your points, eligible finish count and average WPM for each period under a generated gameplay name (or the name you choose) by default. Hide yourself from Race Points standings at any time in the board or your account; your points still count privately. If you previously chose to keep leaderboard entries private, you stay hidden unless you choose to show. The Daily Dash leaderboard remains a separate choice.

Share on X opens X’s post composer in a new tab with a prefilled message you can edit and the shared link, marked as coming from X so we can count visits it brings. TypeDash does not post for you, ask for X permissions or read your X account; anything you post is governed by X’s terms. With product analytics on, we record whether the composer opened, never the link or message. If a Discord link is shown, it opens Discord’s own invite page, where Discord’s terms apply; TypeDash records only that the link was opened, not whether you joined.

Retention and deletion

Private replay data expires after 30 days. Result summaries remain until you delete them in My runs. Ghost links last for the duration selected when creating them, up to the source replay’s retention limit. Daily score links last seven days. You can revoke shared links in My runs.

Deleting a run removes its result and replay, makes its shared links unavailable and stops further analytics about that run. Its linked ClickHouse measurements are also removed asynchronously. Analytics events already sent about it stay with PostHog until you use Delete analytics data. Limited deletion records remain to prevent delayed retries from restoring deleted runs. Run deletion does not erase every browser-level record, such as your matchmaking estimates or acquisition history.

On our current PostHog plan, events stay available for up to seven years, and we can’t shorten that with a setting. Keeping events available is not the same as deleting them. We delete an analytics identity’s PostHog data when you ask, and we automatically request deletion for an analytics identity that has had no activity for 395 days (about 13 months). Events from an identity that stays active can be kept longer, up to PostHog’s retention, unless you request deletion.

PostHog page recordings are retained for up to 30 days. The product analytics switch controls these recordings too.

ClickHouse detailed gameplay measurements expire after 30 days, or sooner when their source replay expires. Race summaries expire after 395 days. Deletion first hides linked records from our analytics views, then removes stored rows. Anonymous race-level counts may remain. Limited suppression records prevent delayed uploads from restoring erased data.

Sentry currently keeps error events for up to 90 days and performance data for up to 30 days. Plan changes can shorten retention for new data.

Messaging apps may cache preview images after a link expires or is revoked. Revoking a TypeDash link cannot remove copies already saved elsewhere.

Questions or privacy requests

If you contact us, we receive your email address and the message or attachments you send, and use them to respond and investigate your request.

You can delete analytics data yourself in Settings. For anything else, email team@typedash.com. Tell us what you need without sending passwords or cookies. We may need to verify ownership before acting on a request. You can also contact us about a problem.