Cookie Policy
A plain list of every cookie and browser-storage item ZeroTell uses, why it is there and how long it lasts. If something is not on this page, we don't set it.
The short version
Some cookies are essential: they keep you signed in, remember your cookie choice and protect the service. They are always on, because the site cannot work without them.
Analytics and advertising cookies are optional. Google Analytics, the Google Ads tag, the Microsoft Advertising (UET) tag, PostHog product analytics, the Tolt affiliate script and — for visitors who arrive from a ChatGPT ad — the OpenAI ads pixel load only after you click Accept on the cookie banner, and so do the other services we load from other companies: the Google sign-in prompt and the live support chat. Two of our own first-party cookies, zt_attr and user_tracking_data, work differently: they record how you arrived (for example the ad, campaign link or website that brought you to us) and are set whatever you choose on the banner, so that when you create an account we can record the source of your sign-up. Your choice decides whether that information is used for advertising and analytics: only after you click Accept is it attached to your checkout, reported to an ad platform, added to our page and tool usage statistics or used for site tests. If you click Decline, none of the optional tags load, and the cookies below that say so are deleted. When you are signed in, your account remembers your latest choice, so purchase and sign-up events we send from our servers (to PostHog, or as ad conversions) follow it too: they are sent only after an Accept and stop when you decline or your browser sends a GPC signal.
We don't sell cookie data, we don't run third-party display ads on ZeroTell, and we don't use cookies to read the text or files you put into a tool.
First-party measurement works without cookies: our server counts page views and tool steps under a visitor code it computes from your IP address and browser details with a key that changes every day. No cookie or browser storage is used to count you, the code can't be linked across days, and the records are deleted after 13 months, so it is not covered by the cookie banner. When we test two versions of a price or a page, the group you are in (for example "version b") comes from the zt_did cookie listed below and is added to those records; the cookie's ID itself is never stored with them.
Cookies
First party = set by zerotell.com. Third party = set by another company's service that we load. Durations are maximums; signing out or clearing cookies removes them sooner.
| Name | Purpose | Duration | Set by | Category |
|---|---|---|---|---|
| cookieConsent | Remembers whether you accepted or declined optional cookies, so the banner doesn't keep asking. | 1 year | First party | Essential |
| better-auth.session_token (__Secure- prefix on HTTPS) | Keeps you signed in to your account. | 30 days, renewed while you use the site | First party | Essential |
| better-auth.session_data | Short-lived cache of your session so pages load without a database lookup. | 10 minutes | First party | Essential |
| better-auth.state | Protects a Google, GitHub, Facebook or X sign-in against forgery while you are sent to the provider and back. | Deleted when the sign-in finishes; otherwise expires within a few days | First party | Essential |
| better-auth.last_used_login_method | Remembers how you last signed in (email, Google, GitHub, Facebook or X) to highlight that option. | 30 days | First party | Functional |
| zt_mkt_optin | Set only while you tick "Email me tips, product news and offers" on the sign-in page, so the choice reaches your new account when it is created (also after a Google, GitHub, Facebook or X sign-in). Deleted when you untick the box or once the account is created. | 30 minutes | First party | Essential |
| NEXT_LOCALE | Remembers the site language you chose when it differs from your browser's language. | Until you close the browser | First party | Functional |
| langAlertDismissed | Remembers that you closed the suggestion to switch to your browser's language, so it isn't shown again. | 30 days | First party | Functional |
| tz | Your browser's time zone (for example Europe/Berlin), so dates and reset times in your dashboard are shown in your local time. Set only when you are signed in and open the dashboard. | 1 year | First party | Functional |
| sidebar_state | Remembers whether you expanded or collapsed the sidebar of your dashboard. | 7 days | First party | Functional |
| zt_pc | Your pricing country (a two-letter country code, for example AU), worked out from your IP address on your first visit and pinned, so the prices and currency you see don't change when you travel, roam or use a VPN. Once you have gone to checkout, the country stored on your account is used instead. | 1 year | First party | Functional |
| zt_did | A random device ID (no personal data) that puts you in a group of a site test by chance and keeps you there: a price test in your country, so you always see the same prices, or a page test (for example two versions of a button text), so the page doesn't change from visit to visit. Results are counted per group only, never per person (to count each device once, our own usage events of a test keep a keyed hash of it, never the ID itself); it is never used for advertising or shared. Set on your first visit and not renewed — except in the EEA, the UK and Switzerland, or when we can't tell your country: there it is set only after you click Accept. If you decline optional cookies or your browser sends a GPC signal, it isn't set, one set earlier is deleted on your next page load, and you see the standard version of every page test; when you are signed in, your page-test groups are removed from your account too (only a running price test in your country keeps the ID, so one person sees one price). | 1 year | First party | Functional (site testing) |
| zt_pxa | The price test and the group you were assigned to (for example au-price-v1.a), so you keep seeing the same real prices for as long as the test runs. | 1 year | First party | Functional |
| zt_attr | Records how you first arrived, and the latest ad or tagged link you arrived from (Google Ads, Microsoft Ads or ChatGPT ads click ID, UTM tags, landing page, referring site, time of the visit). Set whatever you choose on the cookie banner, so that when you create an account we can record the source of your sign-up. Your choice decides whether it is used for advertising and analytics: only after you click Accept is it attached to your checkout, used to report a sign-up or purchase to the ad platform you came from, added to our usage statistics or used for site tests. Declining does not delete it. | 90 days | First party | Analytics (sign-up source); Advertising measurement only after you accept |
| user_tracking_data | Records the campaign or referral link you came from (UTM tags, partner code), your first landing page and referring site, and your screen size, language and time zone, from when the sign-in form is shown until you create an account; it is deleted when the account is created. Set whatever you choose on the cookie banner, to record the source of your sign-up; never sent to an ad platform. Only when sign-up source tracking is switched on. | 30 days or until sign-up | First party | Analytics (sign-up source) |
| _ga, _ga_<ID> | Google Analytics: counts visits and pages viewed. Loads only after you accept. | Up to 2 years | Third party (Google) | Analytics |
| _gcl_au, _gcl_aw | Google Ads: links an ad click to a sign-up or purchase so we can measure ad results. Loads only after you accept. | 90 days | Third party (Google) | Advertising measurement |
| _uetsid, _uetvid, _uetmsclkid, MUID | Microsoft Advertising (Bing) UET tag: links a click on a Microsoft (Bing / Edge / Copilot) ad (the click ID is kept in _uetmsclkid) to a sign-up or purchase so we can measure ad results. Loads only after you accept, and not on pages opened from our e-mail links. | 1 day (_uetsid), 13 months (_uetvid), 90 days (_uetmsclkid), 1 year (MUID) | Third party (Microsoft) | Advertising measurement |
| __oppref | OpenAI (ChatGPT ads) measurement pixel: the click ID of the ChatGPT ad you clicked, so a sign-up on our site can be linked to it. Loads only for visitors who arrived from a ChatGPT ad, and only after you accept; deleted when you decline. | 30 days | Third party (OpenAI) | Advertising measurement |
| __obref | OpenAI pixel: a random browser reference so repeat visits from the same browser count once. Same conditions as __oppref; deleted when you decline. | 1 year | Third party (OpenAI) | Advertising measurement |
| __oaiq_domain_probe | Set for a moment by the OpenAI pixel to find which domain it may store its cookie on, then removed. | 60 seconds | Third party (OpenAI) | Advertising measurement |
| __oaiq_consent | The OpenAI pixel's copy of your cookie choice for its own measurement (set when you accept or decline while it is loaded). | 30 days | Third party (OpenAI) | Advertising measurement |
| ph_<project>_posthog | PostHog product analytics: a random visitor ID and the current session, so pages and clicks of one visit are counted together (and linked to your account ID once you sign in). Loads only after you accept; removed when you decline. | 1 year | Third party (PostHog) | Analytics |
| tolt_referral, tolt_data | Tolt (our affiliate program): records which partner's link you followed, so a subscription you buy can credit that partner. Loads only after you accept and only does something when you arrived through a partner link; deleted when you decline. | 30 days | Third party (Tolt) | Advertising measurement |
| g_state | Google sign-in prompt: remembers that you closed it so it isn't shown again too soon. The prompt loads only after you accept (the Sign in with Google button you click yourself works either way). Only when Google sign-in is available. | Set by Google | Third party (Google) | Functional |
| crisp-client/* | Live support chat: keeps your chat conversation with us open across pages. The chat loads only after you accept; declining hides it and forgets the conversation in this browser. Only when live chat is switched on. | Up to 6 months | Third party (Crisp) | Functional |
| cw_conversation | Support chat in your account dashboard: keeps your conversation with our support team open across pages. Our own support system (support.zerotell.com, run by us). Loads only when you are signed in and have accepted; signing in as someone else on this browser starts a fresh conversation. | Up to 1 year | First party (ZeroTell support) | Functional |
Browser storage
These items live in your browser's localStorage, sessionStorage or cache storage. They are never sent to us automatically; sessionStorage is cleared when you close the tab.
| Key | Purpose | Duration | Where | Category |
|---|---|---|---|---|
| zt:device-id | A random ID (no personal data) used to count the free daily runs on this device (with or without an account). | Until you clear site data | localStorage | Essential |
| zt-cw-user | The account ID the support chat last belonged to on this browser, so signing in as someone else starts a fresh conversation instead of showing the previous one. | Until you clear site data | localStorage | Functional |
| zt:chat:threads:v1 | Your recent AI Chat conversations when you are not signed in, so you can come back to them. Stored only in this browser, not on our servers; image attachments are never saved. When you sign in, these chats are moved to your account and removed from the browser. | Until you delete them, sign in, or clear site data | localStorage | Functional |
| zt:chat:model | The AI Chat model you picked last, so the chat opens with it. | Until you clear site data | localStorage | Functional |
| zt:draft:<tool> | The text you typed into a writing tool or AI Chat, so it is still there after a refresh or after you sign in. Text only, never files or images. Stored only in this browser, not on our servers, and removed when you sign out. | 7 days, or until you clear the box or sign out | localStorage | Functional |
| zt:citation:bibliography | The citations you added to your bibliography in the Citation Generator or AI Research, so the list is still there when you come back. Stored only in this browser, not on our servers. | Until you clear the list or clear site data | localStorage | Functional |
| zerotell_feedback_draft | An unsent feedback message, so you don't lose it while signing in. | 7 days | localStorage | Functional |
| theme | Your light or dark mode preference, if you change it. | Until you clear site data | localStorage | Functional |
| zt:checkout-return | Remembers the tool page you opened a plan from, so after checkout you can continue where you left off. | Until the tab is closed | sessionStorage | Functional |
| zt:humanize-pending | Keeps your AI Humanizer text and result while you sign in to unlock it. | Until the tab is closed | sessionStorage | Functional |
| ztd_prefill | Hands text from the AI Detector to the AI Humanizer (and back) when you click between them. | Until used or the tab is closed | sessionStorage | Functional |
| zt_prefill:<tool> | Hands a passage from one tool to another when you click an action such as "Fix with Paraphraser" in a plagiarism report or "Open in tool" in your History. Read once, then deleted. | Until used or the tab is closed | sessionStorage | Functional |
| zt_flash | A one-time confirmation message shown after the page reloads (for example after you delete your account). Removed as soon as it is shown. | Until shown or the tab is closed | sessionStorage | Functional |
| zt:pxe:<test> | Stops the same price-test view from being reported to Google Analytics twice in this tab. Nothing is reported unless you accepted optional cookies. | Until the tab is closed | sessionStorage | Analytics |
| zt_conv:<type>:<id> | Stops the same purchase from being reported to Google Ads twice if you refresh the confirmation page. Nothing is reported unless you accepted optional cookies. | Until the tab is closed | sessionStorage | Advertising measurement |
| zt_conv:sign_up:<id> | Remembers that your new account was already reported to Google Ads as a sign-up, so it is never reported twice. Written only after you accepted optional cookies. | Until you clear site data | localStorage | Advertising measurement |
| zt:oai:<tool>-source, zt:oai:<tool>-used, zt:oai:last-page, zt:oai:seen:<id> | After you arrive from a ChatGPT ad: the time you opened the AI Humanizer or AI Detector from the ad (kept for one hour), the last page you viewed before signing in, the page your new account signed up from, and that an ad click was already counted, so a sign-up is reported to OpenAI only when it started on that tool page. Written only after you accepted optional cookies; deleted when you decline. | One hour (tool time); until you clear site data | localStorage (the last page also in sessionStorage, per tab) | Advertising measurement |
| zt_conv:oai_registration:<id> | Remembers that your new account was already reported to OpenAI (ChatGPT ads) as a sign-up, so it is never reported twice. | Until you clear site data | localStorage | Advertising measurement |
| oaiq_cs:<pixel>, oaiq_test_session | Set by the OpenAI pixel for its own session bookkeeping during your visit (ChatGPT ad visitors only, after you accept). | Until the tab is closed | sessionStorage | Advertising measurement |
| oaiq_consent | The OpenAI pixel's copy of your cookie choice (same as __oaiq_consent). | Until you clear site data | localStorage | Advertising measurement |
| zerotell-static-<version>, zerotell-pages-<version> | Offline copies kept by our service worker: site files (scripts, styles, images) and public pages you opened, so the site loads faster and can show an offline page without a connection. Signed-in pages such as your dashboard and AI Chat are never stored. | Until the next site update or until you clear site data | Cache storage | Functional |
How consent works
Until you answer the cookie banner, optional analytics and advertising tags do not load. Accept loads them; Decline keeps them off and tells Google's Consent Mode that analytics and ad storage are denied. Our sign-up source cookies (zt_attr and, when sign-up source tracking is on, user_tracking_data) are set either way and are not deleted when you decline: without an Accept they are used only to record the source of your sign-up, never for advertising, analytics tags, our usage statistics or site tests.
If your browser sends a Global Privacy Control (GPC) signal and you haven't chosen yet, we treat it as Decline: analytics and advertising tags stay off, our sign-up source cookies are used only to record the source of your sign-up, and the banner doesn't ask. You can still opt in from "Cookie settings" in the footer.
If you change your mind after accepting, Google stops using its cookies for our measurement once you decline, but cookies it already set stay in your browser until they expire or you clear them in your browser settings.
Checkout runs on Stripe's own pages (checkout.stripe.com and the billing portal). Stripe sets its own cookies there for payments and fraud prevention under Stripe's cookie policy, not this one. If the sign-in form shows a Cloudflare Turnstile check, Cloudflare may set a cookie to confirm you are not a bot.
Change your cookie choice
Re-open the cookie banner at any time — this button, or "Cookie settings" at the bottom of every page.
Open cookie settingsCookie questions
Yes. Every browser lets you block or delete cookies and site data. If you block essential cookies you won't be able to stay signed in, and clearing site data resets your free daily runs counter and your saved chats.
No. Cookies and storage hold identifiers and preferences. The text and files you submit to a tool are sent only when you run that tool; see the Privacy Policy for how they are handled.
If we add or remove a cookie or storage item, we update this page. Optional analytics tools beyond Google Analytics are not in use today; if we turn one on, it will appear here first.