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 and the Google Ads tag load only after you click Accept on the cookie banner, and our own first-party attribution cookies are written only after you click Accept. If you click Decline, none of them are set, and any attribution cookies we set earlier are deleted.
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.
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 or GitHub 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) to highlight that option. | 30 days | First party | Functional |
| 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) used only to keep you in the same price test group while a price test runs in your country, so you always see the same prices. Not used for anything else. | 1 year | First party | Functional |
| 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 (Google Ads click ID, UTM tags, landing page, referring site) so we can tell which ads lead to subscriptions. Written only after you click Accept; never written if you decline or your browser sends a GPC signal; deleted when you decline. | 90 days | First party | Advertising measurement |
| user_tracking_data | Records the campaign or referral link you came from until you create an account, then it is deleted. Written only after you click Accept; never written if you decline or your browser sends a GPC signal. Only used when sign-up source tracking is switched on. | 30 days or until sign-up | First party | Analytics |
| _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 |
| g_state | Google sign-in prompt: remembers that you closed it so it isn't shown again too soon. 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. Only when live chat is switched on. | Up to 6 months | Third party (Crisp) | 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: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: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:video-jobs | The video generations you started in this tab, so the page can show their progress. | Until the tab is closed | sessionStorage | Functional |
| zt:attr:pending | Holds how you arrived (ad click ID, UTM tags, landing page, referring site, time of first visit) in this tab until you answer the cookie banner. Accept copies it into the zt_attr cookie; Decline or a GPC signal deletes it. Never sent to us on its own. | Until you answer the banner or close the tab | sessionStorage | Advertising measurement |
| zt:track:pending | Holds the campaign or referral link you came from in this tab until you answer the cookie banner. Accept copies it into the user_tracking_data cookie; Decline or a GPC signal deletes it. Only used when sign-up source tracking is switched on. | Until you answer the banner or close the tab | sessionStorage | Analytics |
| 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 |
| 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 and we set no attribution cookies: how you arrived is held only in this tab's sessionStorage (zt:attr:pending, zt:track:pending). Accept loads the tags and writes that held information into zt_attr (and user_tracking_data, when sign-up source tracking is on); Decline keeps the tags off, deletes the held information, and tells Google's Consent Mode that analytics and ad storage are denied.
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 attribution cookies aren't written, anything held in the tab is deleted 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.