No data is collected
That is the entire privacy disclosure for the Ghostchars browser extension, and it is a statement about the code rather than a policy that could be changed without changing the code. What follows is exactly what the extension does in every place it touches your text.
Applies to version 0.9.0 · Last updated
What the extension sends
Your text: never, under any circumstances — not a word of it, not a hash of it, not a count of what was in it. Everything Ghostchars does to your text happens inside your browser. The extension makes exactly one network request, and only when you ask for it: activating a licence. Nothing else — no analytics, no error reporting, no update pings of its own, no remote configuration, no remote fonts, images or scripts. Every other byte it runs is inside the extension package.
That request happens when you type a licence key into the settings page and press Activate, and at no other time: never in the background, never on a timer, never at install. It goes to https://ghostchars.com/api/v1/activate, our own server, and it carries three things, which are the complete list. The licence key you just typed. A random id for this browser — a UUID generated on your machine the first time you press Activate, not a serial number, not a hardware id, not a Chrome profile id and not derived from anything about you; it exists so that a licence in use on 3 machines can be counted, which is what the licence allows. And the word "extension", so we know which of our apps is asking. What comes back is a signed licence, stored on your machine and checked there, offline, from then on.
What that request does not carry: your text, your clipboard, the sites you visit, the sites you opted in to, your weekly count, your email address, and any cookie — it is made with credentials omitted, so it sends none and accepts none. If you never buy a licence the request never happens and the random browser id is never generated. A fresh install stores nothing at all.
What the extension stores
Six values at most, in your browser’s local extension storage, on your machine and nowhere else: the twelve cleaning switches, all off by default; the list of sites you turned clean-as-you-paste on for; whether you chose "clean as you paste, everywhere"; the weekly free-clean count; a random id for this browser; and the signed licence itself. That is the whole storage surface, and a test asserts it.
The last three do not exist until you use the feature that creates them — the count the first time clean-as-you-paste cleans something, the browser id and the licence only if you press Activate. The count is which week it is and how many cleans you have used in it, and it is never transmitted: not with the activation request, not anywhere else. It is a number this extension reads on your own machine to decide whether to clean a paste, and you can read it, and edit it, in Chrome’s own developer tools. There is no history of what you cleaned, no copy of your text, and no identifier of any kind other than that random licence id.
What the extension reads
The popup reads only what you type or paste into its own box. It has no access to the page behind it.
The right-click menu reads the text you had selected, in the tab you right-clicked in, at the moment you click the item. That click is the permission, it covers one tab, and it expires — the extension holds no standing access to any site.
Clean as you paste reads the text of a paste event, and only where you explicitly switched it on in the settings page. The extension is not installed with access to any website: the permission is requested one site at a time when you turn that site on, or for all https sites in a single prompt if you choose the "everywhere" switch, and whichever you granted is handed straight back when you switch it off. Even with "everywhere" on, the only thing that runs is the paste cleaner, and it still reads nothing but the text of a paste you made yourself.
In all three cases the text is processed in your browser, in memory, and is not written anywhere or sent anywhere.
What it never touches
Password fields — a focused password input is treated as an empty selection — any site you have not opted in to, your browsing history, your cookies, your other extensions, and every clipboard flavour other than the plain text and HTML of a paste you make yourself.
A paste that carries a file — a screenshot with its caption, an attachment — is left entirely to the browser. Ghostchars does not read the file and does not take the event at all, so nothing you pasted goes missing.
Third parties
None. There is no SDK, no CDN, no hosted service and no analytics vendor in this extension. It has zero runtime dependencies, and the one server it can talk to is ours.
Changes
Any future version that needed a second network call would change this page and the store listing in the same update, and would say exactly what is sent and when. Version 0.9.0 makes the one request described above and no other.
This website is a separate thing
The extension and this site are different programs with different privacy stories. The site has its own policy, including the optional, consent-gated analytics it can run; the extension has none of that — no analytics, no telemetry, no account — and the only server it can reach at all is the licence signer, only when you press Activate.
Contact
Questions, or anything on this page that does not match what you observe: privacy@ghostchars.com. We would rather correct it than be believed.