gptcleanuppro.com / workspace
Ready0w
Output

Paste your text and run the scan. Hidden characters and AI-sounding phrases land here, each with the reason on hover.

Works with text copied from
ChatGPTClaudeGeminiGrokCopilotPerplexity
bytes transmitted
0
codepoints and patterns
14 + 17
probability scores produced
None

Premise

What an AI watermark detector can establish

A zero-width space is either in your text or it is not. That is a fact about the document, decidable exactly, with no confidence interval attached. Who or what put it there is a separate question that the fact does not answer, and no amount of scanning converts one into the other.

Most of this category collapses the two. A tool finds U+200B, reports it as an AI watermark, and the reader infers machine authorship from a character that a CMS, a PDF extractor, a translation memory or a careful typographer could equally have inserted. This detector reports presence and declines the inference, which is the whole reason its output looks less exciting than its competitors'.

Terminology

Two unrelated mechanisms share the name watermark

The ambiguity is not pedantic. It determines which claims on a page are even possible.

Character-level marking
Invisible codepoints present in the byte stream. Detection is exact string matching. This is the mechanism handled here.
Statistical, token-level marking
A generator biases sampling among near-equivalent continuations so a keyed statistical test can later recover the signal from the wording itself. Detection requires the key and the test. Neither exists in this repository.
Signed provenance metadata
A cryptographic manifest bound to a generated file. It concerns files rather than pasted text, and reading it is a different operation entirely.

Procedure

How to use the AI watermark detector in three steps

Every step runs locally. There is no request, therefore no allowance, no input ceiling and nothing to transmit.

Step 1
Paste the artefact unmodified. Any intermediate step through a plain-text buffer destroys the evidence, so a scan of retyped text is uninformative by construction.
Step 2
Read the per-codepoint counts rather than the total. One byte-order mark and forty zero-width spaces are different findings with different likely causes.
Step 3
Separate the character findings from the phrase findings. The first are facts about the encoding. The second are stylistic judgements offered with reasons, and they are arguable.

Method

The 14 codepoints, and why the list stays closed

Fourteen entries: the zero-width space, non-joiner and joiner, the word joiner, the byte-order mark, the soft hyphen, the no-break space, the narrow no-break space, the hair space, and the five directional formatting controls from left-to-right embedding through right-to-left override.

Competing lists run to 34, 87 or beyond, and the additional entries are largely visible characters: em dashes, curly quotation marks, variation selectors. Including a visible glyph in a list of hidden characters inflates the headline number while destroying the category. Three of our fourteen resolve to a space rather than to nothing, because the no-break space, narrow no-break space and hair space occupy positions where deletion would concatenate adjacent words. That distinction is encoded per entry rather than applied uniformly.

Output

Why this AI watermark detector reports no score

The analysis is deterministic. The same input produces the same output every time, because the operation is a scan against a fixed set of codepoints and a fixed set of documented patterns. There is no model, no threshold and no sampling, so there is nothing for a probability to quantify.

A percentage would therefore be pure presentation. What comes back instead is the text partitioned into plain runs, marked characters and flagged phrases, plus a count for each hidden codepoint, totals for hidden characters and flagged phrases, and the word and character counts. Every figure is a count of something you can verify by looking.

Implementation

How overlapping and ambiguous matches are resolved

Two decisions in the matcher are worth stating because they change what you see. Phrase patterns can overlap, and when they do the earliest match wins, with the longest preferred at equal starting position. So a passage is attributed to one pattern rather than counted three times, and the flagged phrase total is a count of distinct spans rather than of rule hits.

The second is a deliberate exception. A zero-width joiner between two pictographic characters is the mechanism that fuses several emoji into one glyph, so the matcher inspects the codepoints on either side and passes over joiners doing that job. Reporting them would be technically accurate and practically wrong, since removing them would break the emoji. Hidden characters found inside a flagged phrase also survive as their own markers rather than being absorbed into the highlight.

Out of scope

What this AI watermark detector does not read

It performs no statistical test on token choice, so a token-level watermark embedded by a generator is invisible to it. The published position on the one vendor watermark known to be deployed is that no public tool reliably reads it, and that any tool claiming to detect that vendor's text is either inferring from style or overstating what it does. We are not making that claim.

It does not parse signed provenance metadata, which is a file-level operation on a file we never receive. It does not attribute text to a model, because the characters it finds carry no vendor identifier and the inference is unavailable in principle. It performs no similarity matching. And it makes no statement about intent: nothing here establishes that any vendor inserts these characters deliberately, and the simpler explanation, that a generator has no keyboard and so pays no cost for emitting one, requires no motive at all.

Straight answer

Does removal change what an AI detector reports?

Essentially not. AI detection operates on lexical and structural properties of the prose, and invisible characters are not among the features those systems weigh. Vendors in the detection business state this directly, and we have no reason and no evidence to contradict them.

The defensible returns from cleaning are all mechanical: search and replace that matches, slugs that resolve, parsers that accept the file, wrapping that behaves, and character limits that reflect visible length. These are verifiable at your desk. A third party's verdict is not, and nothing on this site will be sold as influencing one.

FAQ

Scope and method

All answered in full, nothing to click open.

What exactly does this detector establish?

That specific codepoints are present in your text, and where. It does not establish who or what produced the text.

Why does it produce no probability score?

Because the operation is deterministic string matching against fixed lists. There is no model or threshold for a probability to describe.

Is anything transmitted?

No. Zero bytes leave the device. The scan executes in the page, which is also why there is no allowance and no input ceiling.

How many codepoints are in the list?

Fourteen, each with a codepoint, a label and a documented reason it matters.

Why not 87, as some tools claim?

Larger lists count visible characters such as em dashes and curly quotes. A visible glyph in a list of hidden characters inflates the number and voids the definition.

Why are three of the fourteen replaced rather than deleted?

The no-break space, narrow no-break space and hair space sit between words. Deleting them would concatenate the neighbours, so they resolve to an ordinary space.

Can it detect a token-level statistical watermark?

No. That requires the generator's key and a matching statistical test, and neither exists in this implementation.

Can it read Content Credentials or C2PA manifests?

No. That is a file-level operation and this tool receives no file, only pasted text.

Can it attribute text to a specific model?

No. The characters carry no vendor identifier, so the attribution is unavailable in principle rather than merely unimplemented.

Does it claim vendors insert these characters deliberately?

No. Nothing here establishes intent, and a generator emitting an invisible character at no cost explains the observation without one.

How are overlapping phrase matches counted?

The earliest match wins, longest preferred at equal start, so a span is attributed once. The phrase total counts distinct spans, not rule hits.

Why are emoji joiners not flagged?

A zero-width joiner between two pictographic characters builds a combined glyph. The matcher checks both neighbours and passes over joiners doing that work.

What happens to a hidden character inside a flagged phrase?

It survives as its own marker rather than being absorbed into the highlight, so you see both findings.

What does the output contain?

The text partitioned into plain runs, marked characters and flagged phrases, per-codepoint counts, hidden and phrase totals, and word and character counts.

Are the 17 phrase patterns deterministic too?

The matching is. The judgement is not, which is why each pattern carries a stated reason rather than a verdict you are expected to accept.

Is finding a zero-width space evidence of AI authorship?

No. Content management systems, PDF extraction, translation tooling and deliberate typography all introduce them. Presence is not provenance.

Should every finding be removed?

No. Soft hyphens, no-break spaces and the zero-width non-joiner have legitimate functions, and the non-joiner is meaningful in Persian and several Indic scripts.

Is there an input length limit?

None imposed. Nothing is sent anywhere, so the practical bound is your browser's capacity.

How many scans are permitted?

Unlimited. A local operation has nothing to meter.

Does removing these characters affect an AI detector's output?

Essentially not. Detection weighs lexical and structural features of the prose, and invisible characters are not among them.

What is the strongest claim you make for this tool?

That it finds every instance of fourteen specified codepoints and every match of seventeen specified patterns, exactly. Nothing beyond that is claimed.

How does this differ from the watermark remover?

This reports and leaves the text intact. The remover applies the same fourteen-entry list, deleting eleven and substituting a space for three.

A closed list, stated in full.

Fourteen codepoints, seventeen patterns, deterministic output and no score. Everything outside that boundary is named above rather than implied.

Run a scan