About
An inspector, not an accusation.
This desk finds characters, not authors. It reports
exactly what is in the text in front of it — these code points,
at these offsets, this many times — and it stops there. It does
not say that a document was written by a machine, it produces no
score and no probability, and it will not be extended to do so. There
is no reliable path from a non-breaking space to a conclusion about a
person, and a tool that pretends otherwise is a tool for accusing
people wrongly.
Invisible characters have ordinary, legitimate uses.
A zero-width joiner is what makes one emoji out of three, and what
spells out a subdivision flag behind a black one; a zero-width
non-joiner is what keeps Persian and Hindi words correctly shaped,
and in every Indic script it does that work after the virama, which
is a combining mark rather than a letter; an
ideographic variation selector is how a specific written form of a Han
character is named; the bidirectional controls are how Arabic and
Hebrew are set alongside Latin without one of them coming out
backwards. Every one of those is invisible, deliberate and correct.
Safe mode exists because of them, it is on by default, and it names
each character it kept and why.
A document with none of these is not proven to be
anything. An empty finding is an empty finding. Plain ASCII
with straight quotes and LF line endings is what a plain text editor
produces, and what a great many people and programs produce. Absence
of evidence is the ordinary state of most text, and nothing on this
page treats it as a result.
Nothing typed here leaves the browser. There is no
fetch, no upload, no beacon and no analytics call carrying content
anywhere in this page’s scripts. Files are read with FileReader,
locally; the cleaned text and the two reports are built in memory and
handed to you through a Blob and an object URL that is revoked
afterwards. The site’s ordinary page-view tag is present, as it
is on every page here, and it reports that this page was opened —
never a character of what you put in it.
What the detectors cannot do is stated in each panel rather than
hidden here. The zero-width bit channel has no standard, so the
mapping assumed is printed beside every decode. The HTML detector
reads inline styles and attributes only, so text hidden by a
stylesheet rule is not found. Statistical watermarks in generated
text, image metadata and C2PA provenance are all outside what this
reads. And inspection runs on up to 500,000 characters in one pass,
because every detector walks the text character by character; past
that the page says so and offers the first slice rather than locking
up.