WTFclause.ai
WhatTheFinePrint
WTF Clause privacy policy
Last updated 9 September 2026.
WTF Clause reads a website’s privacy policy and terms with an AI model and tells you what you agreed to. This is what it does with your data. It is short because there is not much to say.
There is one server, and what it is sent is a public document
From version 2.0.0 WTF Clause reads documents through the WTF Clause service by default, so that you need no API key and so that a policy somebody has already had read is answered in a moment instead of being read again. The service is sent the text of the company’s public privacy policy and terms, a hash of that text, the site’s hostname, the page address without its query string, and the tone you picked. Not the page title, which on a signed-in site can carry your name. It is not sent anything about you: no account, no login, no sign-up, no analytics, no crash reporting, no telemetry, no advertising identifier, no cookie, no browsing history, no key. It keeps the document and the reading, keyed by the hash of the text, and nothing keyed by you. Like any server it sees the IP address a request comes from; the only thing it does with it is count how many documents that address has had read in the last hour, so one connection cannot spend the service’s whole budget.
If you would rather the service saw nothing at all, choose “My own API key” in the settings. In that mode the documents go from your browser straight to the provider you picked, on your own key, and this project’s server is never contacted.
What is stored, and where
Everything is stored by your own browser, on your own machine.
In chrome.storage.local, which never leaves this computer:
Your API key, if you chose to use one. Deliberately not synced. A synced key is a key copied onto every machine signed into your browser, and it is not ours to spread.
Your last 300 scan reports: the site’s hostname, the page address without its query string, the page title, the score and the level taken from it, the verdict and the clauses quoted from that site’s own documents.
A small index of hostname to score, used to colour the toolbar badge.
A snapshot of the last 40 documents read: the full text of the privacy policy and terms as they were fetched, the address each came from, the second it was read in UTC, and a SHA-256 of that text.
The snapshot is the reason a card can say “this is what the page said at this second” rather than just asserting it, and it is what tells you a policy has changed since your last scan. It is a copy of a public document, and it is never uploaded anywhere: the archive.org option described below is off by default, is offered per download, and never runs during a scan.
In chrome.storage.sync, which Chrome copies between your own signed-in browsers: whether the service or your own key reads, which provider and model you picked for the latter, whether you want the savage or the straight tone, and whether the archive option is ticked. Nothing else.
Deleting a report from the Hall of Shame deletes it, and deletes the snapshot of that site’s documents with it. Clearing the Hall clears both. Removing the extension removes all of it.
What leaves your machine, and to whom
Five kinds of request, and nothing else. A scan makes the first and then either the second or the third, never both. The last two only happen if you press something, and never during a scan.
To the website you are scanning. When you press scan, the extension fetches that site’s privacy policy and terms. Those requests are sent with cookies explicitly switched off, so the site cannot see who you are from them.
To the WTF Clause service, in the default mode. First a hash of the text that was found, the site’s hostname, the page address and the tone; then, only if the service has never read that exact text, the text itself. The service reads it once, on its own key, with the same procedure this extension runs, and keeps the answer for everyone who scans the same words after you. The full list of what it is sent and what it keeps is above.
To the AI provider you chose, if you chose “My own API key”. Several requests per scan, to OpenRouter, Anthropic or OpenAI, with the API key you pasted. Between them they contain the text of the policy and terms that were found, the site’s hostname and the page title, and nothing else about you. One request per part of the documents, one that reads them all to give the score, and one per finding that carries only a quote and the few hundred characters on either side of it. They are billed to you, by your provider, and governed by your provider’s own policy, not this one.
Requests to OpenRouter carry two attribution headers naming the extension, so a model provider can identify the traffic as coming from WTF Clause. They do not identify you.
To archive.org, only if you ask, and to two of its addresses. On the report page, next to the button that downloads a share card, there is an unticked checkbox that asks archive.org to save the policy page you are about to publish a quote from. Ticking it asks Chrome for permission first, once, covering both of the archive.org addresses below. Then, at the moment you press download, archive.org/wayback/available is asked whether a recent capture already exists, and if there is none, web.archive.org/save/ is asked to make one. Both carry the address of the company’s own public policy page and nothing else: nothing about you, your report or your score. It is deliberately not done during a scan, because that would tell archive.org which sites you are looking at, every time you look.
That is the complete list. Nothing about you is sent to the developer, and nothing is sent to any other party.
It never opens a page for you during a check
Some sites build their privacy policy in the browser, so the page exists but a plain fetch of it comes back empty. duolingo.com/privacy is eight characters of text until JavaScript runs. Versions before 1.9.0 opened such a page in a background tab to read it. From 1.9.0 the extension opens no tab and loads no page on your behalf: it tells you the document was found and could not be read, shows you the link, and reads it when you open it yourself. Every request it makes is a plain fetch with your cookies switched off.
What is never read
The extension only reads a page when you press the button. It does not run in the background, does not watch what you browse, and does not inject anything into any page until you ask it to.
Even then, the page you are standing on is only sent to the model if it is actually a legal document, judged by length and by legal wording. A page whose address merely contains the word “privacy” is not enough. This rule exists because an account settings page can have “privacy” in its URL, and sending one would mean sending your name and your address to a model. It does not happen.
The extension does not read form fields, passwords, payment details, messages or anything you type.
The toolbar badge
The badge only works if you have given the extension permission to see other sites, and it does nothing at all until you do. What that permission is and how it is asked for is in the next section.
The badge shows the risk level of a site you have already scanned. To do that the extension looks at the address of the tab you are on and checks it against the index of scores held on your machine. The address is used and forgotten. It is never recorded and never sent anywhere.
Permissions, and exactly what each one is for
storage and unlimitedStorage: to keep your settings, your key, your reports and the snapshots of the documents you read on this machine. A full terms of service runs to a few hundred kilobytes, which is past the default allowance.
activeTab: to read the page you are on, at the moment you press scan.
scripting: to run the reader inside that page so it can see the document.
host access to four addresses: the WTF Clause service (wmvvifhaffhwguzlhuqk.supabase.co) and the three providers, openrouter.ai, api.openai.com and api.anthropic.com. This is the only host permission you are asked for when you install the extension, and it is the only thing the install dialog warns you about. It is what lets the extension talk to the service, or to whichever provider you chose instead.
Two more are OPTIONAL. They are not granted when you install, they are not in the install dialog, and the extension asks for them in a Chrome prompt at the moment it first needs one. Saying no leaves a working extension.
access to other websites: to fetch the policy itself. Most large companies park their policy on a different domain from the site you are on, and reading it needs permission for that other domain. There is no way to know those domains in advance, which is why this one is broad, and why it is optional instead of being taken at install. It is asked for the first time you press scan. If you say no, scans still run and read whatever the site serves from its own address, and a policy the extension found but was not allowed to open is reported as not read. It is never reported as missing: a permission you declined must not turn into an accusation that a company publishes nothing. The toolbar badge also needs this one, and simply stays blank without it. You can turn it on later on the options page, and off again in Chrome’s own extension settings.
access to archive.org: asked for when you tick the archive.org checkbox, and used only when you then download a card.
There is no permission here for history, bookmarks, downloads, the clipboard, your camera, your microphone or your location. There is no permission to read tabs, and none for cookies.
Children
The extension is not directed at children and collects nothing from anybody.
Changes
If this policy changes, the date at the top changes with it. A change to what actually leaves your machine also raises a notice on the extension’s own settings page, so you are told rather than expected to come back and reread this.
Contact
service@wtfclause.ai
WTF Clause privacy policy
Last updated 9 September 2026.
WTF Clause reads a website’s privacy policy and terms with an AI model and tells you what you agreed to. This is what it does with your data. It is short because there is not much to say.
There is one server, and what it is sent is a public document
From version 2.0.0 WTF Clause reads documents through the WTF Clause service by default, so that you need no API key and so that a policy somebody has already had read is answered in a moment instead of being read again. The service is sent the text of the company’s public privacy policy and terms, a hash of that text, the site’s hostname, the page address without its query string, and the tone you picked. Not the page title, which on a signed-in site can carry your name. It is not sent anything about you: no account, no login, no sign-up, no analytics, no crash reporting, no telemetry, no advertising identifier, no cookie, no browsing history, no key. It keeps the document and the reading, keyed by the hash of the text, and nothing keyed by you. Like any server it sees the IP address a request comes from; the only thing it does with it is count how many documents that address has had read in the last hour, so one connection cannot spend the service’s whole budget.
If you would rather the service saw nothing at all, choose “My own API key” in the settings. In that mode the documents go from your browser straight to the provider you picked, on your own key, and this project’s server is never contacted.
What is stored, and where
Everything is stored by your own browser, on your own machine.
In chrome.storage.local, which never leaves this computer:
Your API key, if you chose to use one. Deliberately not synced. A synced key is a key copied onto every machine signed into your browser, and it is not ours to spread.
Your last 300 scan reports: the site’s hostname, the page address without its query string, the page title, the score and the level taken from it, the verdict and the clauses quoted from that site’s own documents.
A small index of hostname to score, used to colour the toolbar badge.
A snapshot of the last 40 documents read: the full text of the privacy policy and terms as they were fetched, the address each came from, the second it was read in UTC, and a SHA-256 of that text.
The snapshot is the reason a card can say “this is what the page said at this second” rather than just asserting it, and it is what tells you a policy has changed since your last scan. It is a copy of a public document, and it is never uploaded anywhere: the archive.org option described below is off by default, is offered per download, and never runs during a scan.
In chrome.storage.sync, which Chrome copies between your own signed-in browsers: whether the service or your own key reads, which provider and model you picked for the latter, whether you want the savage or the straight tone, and whether the archive option is ticked. Nothing else.
Deleting a report from the Hall of Shame deletes it, and deletes the snapshot of that site’s documents with it. Clearing the Hall clears both. Removing the extension removes all of it.
What leaves your machine, and to whom
Five kinds of request, and nothing else. A scan makes the first and then either the second or the third, never both. The last two only happen if you press something, and never during a scan.
To the website you are scanning. When you press scan, the extension fetches that site’s privacy policy and terms. Those requests are sent with cookies explicitly switched off, so the site cannot see who you are from them.
To the WTF Clause service, in the default mode. First a hash of the text that was found, the site’s hostname, the page address and the tone; then, only if the service has never read that exact text, the text itself. The service reads it once, on its own key, with the same procedure this extension runs, and keeps the answer for everyone who scans the same words after you. The full list of what it is sent and what it keeps is above.
To the AI provider you chose, if you chose “My own API key”. Several requests per scan, to OpenRouter, Anthropic or OpenAI, with the API key you pasted. Between them they contain the text of the policy and terms that were found, the site’s hostname and the page title, and nothing else about you. One request per part of the documents, one that reads them all to give the score, and one per finding that carries only a quote and the few hundred characters on either side of it. They are billed to you, by your provider, and governed by your provider’s own policy, not this one.
Requests to OpenRouter carry two attribution headers naming the extension, so a model provider can identify the traffic as coming from WTF Clause. They do not identify you.
To archive.org, only if you ask, and to two of its addresses. On the report page, next to the button that downloads a share card, there is an unticked checkbox that asks archive.org to save the policy page you are about to publish a quote from. Ticking it asks Chrome for permission first, once, covering both of the archive.org addresses below. Then, at the moment you press download, archive.org/wayback/available is asked whether a recent capture already exists, and if there is none, web.archive.org/save/ is asked to make one. Both carry the address of the company’s own public policy page and nothing else: nothing about you, your report or your score. It is deliberately not done during a scan, because that would tell archive.org which sites you are looking at, every time you look.
That is the complete list. Nothing about you is sent to the developer, and nothing is sent to any other party.
It never opens a page for you during a check
Some sites build their privacy policy in the browser, so the page exists but a plain fetch of it comes back empty. duolingo.com/privacy is eight characters of text until JavaScript runs. Versions before 1.9.0 opened such a page in a background tab to read it. From 1.9.0 the extension opens no tab and loads no page on your behalf: it tells you the document was found and could not be read, shows you the link, and reads it when you open it yourself. Every request it makes is a plain fetch with your cookies switched off.
What is never read
The extension only reads a page when you press the button. It does not run in the background, does not watch what you browse, and does not inject anything into any page until you ask it to.
Even then, the page you are standing on is only sent to the model if it is actually a legal document, judged by length and by legal wording. A page whose address merely contains the word “privacy” is not enough. This rule exists because an account settings page can have “privacy” in its URL, and sending one would mean sending your name and your address to a model. It does not happen.
The extension does not read form fields, passwords, payment details, messages or anything you type.
The toolbar badge
The badge only works if you have given the extension permission to see other sites, and it does nothing at all until you do. What that permission is and how it is asked for is in the next section.
The badge shows the risk level of a site you have already scanned. To do that the extension looks at the address of the tab you are on and checks it against the index of scores held on your machine. The address is used and forgotten. It is never recorded and never sent anywhere.
Permissions, and exactly what each one is for
storage and unlimitedStorage: to keep your settings, your key, your reports and the snapshots of the documents you read on this machine. A full terms of service runs to a few hundred kilobytes, which is past the default allowance.
activeTab: to read the page you are on, at the moment you press scan.
scripting: to run the reader inside that page so it can see the document.
host access to four addresses: the WTF Clause service (wmvvifhaffhwguzlhuqk.supabase.co) and the three providers, openrouter.ai, api.openai.com and api.anthropic.com. This is the only host permission you are asked for when you install the extension, and it is the only thing the install dialog warns you about. It is what lets the extension talk to the service, or to whichever provider you chose instead.
Two more are OPTIONAL. They are not granted when you install, they are not in the install dialog, and the extension asks for them in a Chrome prompt at the moment it first needs one. Saying no leaves a working extension.
access to other websites: to fetch the policy itself. Most large companies park their policy on a different domain from the site you are on, and reading it needs permission for that other domain. There is no way to know those domains in advance, which is why this one is broad, and why it is optional instead of being taken at install. It is asked for the first time you press scan. If you say no, scans still run and read whatever the site serves from its own address, and a policy the extension found but was not allowed to open is reported as not read. It is never reported as missing: a permission you declined must not turn into an accusation that a company publishes nothing. The toolbar badge also needs this one, and simply stays blank without it. You can turn it on later on the options page, and off again in Chrome’s own extension settings.
access to archive.org: asked for when you tick the archive.org checkbox, and used only when you then download a card.
There is no permission here for history, bookmarks, downloads, the clipboard, your camera, your microphone or your location. There is no permission to read tabs, and none for cookies.
Children
The extension is not directed at children and collects nothing from anybody.
Changes
If this policy changes, the date at the top changes with it. A change to what actually leaves your machine also raises a notice on the extension’s own settings page, so you are told rather than expected to come back and reread this.
Contact
service@wtfclause.ai
WTFclause.ai
Stop agreeing to things
you haven't read
Stop agreeing to things
you haven't read
Ready to check
your website
2 documents found
Join waitlist
FAQ
Frequently asked questions
Frequently asked questions
Everything you need to know about WTFclause.ai
Everything you need to know about WTFclause.ai
What does WTF stand for?
How does WTFclause.ai work?
What kind of clauses does it catch?
How does it decide what to flag?
What laws does it check against?
Is this legal advice?
Is it really free?
Can I use it for my company's contracts?
How do you handle my data?