How AI text detection works

Seven detectors, seven different questions. What each of them measures, what it relies on and where it stops.

GPTRevealer sends a text to seven detectors at once and shows each score separately, on a scale from 0 to 100. Five of them run on our side and each measures one property: the deviation from your earlier texts, how closely the text follows the template of the chosen document type, phrases typical of AI, machine-like sentence rhythm and hidden characters. The other two are separate models, OpenAI and ZeroGPT. We never merge them into one number, because each measures a different property of the text and a disagreement between them is information in itself. The numbers come with a colour map of the text and the sentences each detector flagged. No AI text detector is one hundred per cent accurate, so the result is evidence for a decision, not a verdict.

What happens to the text before detection

First the language is identified — Czech, Slovak, English or German — from letters typical of each language and from the most common words. The language decides which phrase lists, comparison samples and style measures are used. For other languages some detectors have nothing to compare against and the result is indicative only.

Then the parts the author did not write in their own words, or that follow a prescribed form, are set aside: the bibliography, quotations, footnotes, figure and table captions, the table of contents, an abstract in another language, acknowledgements, the declaration of authorship, repeated page headers and, in e-mails and letters, the greeting, the signature and the quoted previous message. Left in, they would skew the score. The document type you pick decides what is set aside and which template the text is judged against.

The seven detectors

All seven run at the same time. If one of them does not respond, the other numbers still stand and only that one is missing.

Style deviation

How far the style of the text differs from your earlier texts. It compares properties people hardly ever change on purpose: sentence and word length and how much they vary, vocabulary richness, the share of long and short words, punctuation, the share of capitals, diacritics and digits, and the frequency of the most common words of the language. The passages that deviate most are highlighted in purple.

Relies on:Your own texts in the same language: up to the last fifty checks of the same document type, plus uploaded sample texts, which count double. Checks where ZeroGPT, AI phrases or Style deviation itself went above 50 are left out of the baseline, so it does not learn from AI text.

Limit:It starts working from six texts longer than 250 characters. It measures a change of style, not AI — a different style can have other causes, such as a co-author, a different topic or thorough proofreading.

Type template

How closely the text follows the outline of the document type you picked. It looks at paragraphs of equal length, a text chopped into many short paragraphs, bullet points of equal length, headings, lines shaped like “Term: explanation”, lists of three, hashtags and a lack of concrete details such as numbers and names.

Relies on:Rules for ten document types: essay, academic paper, reflection, narrative, blog, post, review, e-mail, cover letter and report. Each type weighs the signals differently — in an essay, even paragraphs, lists of three and vagueness matter most; in a report, headings, bullet points and short paragraphs.

Limit:Zero does not mean a person wrote it, and a person writing to a strict outline, such as a report or an academic paper, can score high. For German the lack of concrete details is not measured, because German capitalises every noun.

AI phrases

How many turns of phrase and formatting habits typical of language models the text contains — for example “in today's fast-paced world”, “it is important to note” or “delve into”, but also long dashes, arrows, bold text, markdown headings and tables, or emoji. The phrases found are highlighted in yellow.

Relies on:A list of more than 5,600 phrases in Czech, Slovak, English and German, in which strong phrases count double. The hits are counted per hundred words, so a longer text does not score higher just because it is longer.

Limit:It only sees what is on the list. A person who writes in a set formal style can score high, and an AI text someone has stripped of these phrases can score low. One phrase proves nothing; what matters is how dense they are.

Machine feel

How mechanical the structure of the text feels. Half of it comes from how similar in length the sentences are, thirty per cent from worn-out phrases and twenty per cent from words and three-word sequences that repeat in the text.

Relies on:Statistics of the text itself, with no comparison to other texts. Humanisation shows the same number, so you can see how the machine feel changed after a rewrite.

Limit:A short text has too few sentences to measure its rhythm reliably. A terse academic or formal style with sentences of similar length can feel mechanical even when a person wrote it.

Hidden characters

Invisible characters that travel with copied text: zero-width spaces, control and direction marks, unusual kinds of spaces and accented letters built from two separate characters. For an uploaded file it also looks for a signed C2PA provenance record.

Relies on:The number of such characters per thousand characters of text. Some of them never occur in ordinary writing, and a single one is enough for 100. A file whose provenance record carries a valid signature and states that the content was made by AI also scores 100.

Limit:Zero does not mean a person wrote it — rewriting the text or pasting it as plain text removes these characters. Some of them, on the other hand, appear without any AI involved, for example when copying from a PDF.

OpenAI

An OpenAI language model reads the text as a whole and estimates how much of it comes from AI. It also returns the sentences that led it there, and those are highlighted in blue.

Relies on:Comparison with samples. The model receives eight texts of the same type and language that are known to have been written by AI, along with samples of human writing from language corpora. The same text always gets the same samples. A long text is judged in parts of up to twelve thousand characters and the result is weighted by their length.

Limit:It is the judgement of another language model, not a measurement, and it can be wrong in both directions. For a borderline text its estimate can differ slightly between two checks.

ZeroGPT

A separate detector run by the ZeroGPT service. It returns the share of the text it considers AI and the sentences it flagged, which are highlighted in red.

Relies on:ZeroGPT's own model. A longer text is sent in parts of up to twelve thousand characters and the result is weighted by their length.

Limit:The service does not publish how it calculates the score or which texts it learned from, so its number cannot be explained from the inside. It is one more independent view next to the others, not a referee.

How to read the result

Each number is read on its own and says only what its detector measures. Sixty for AI phrases means typical phrases occur densely, not that sixty per cent of the text was written by AI. When the detectors agree on the same passages, you have stronger evidence. When each points somewhere else, the text is borderline and the decision needs to rest on something more.

The colours in the text show who flagged what: purple for the passages that deviate most from your style, yellow for AI phrases, blue for sentences flagged by OpenAI and red for sentences flagged by ZeroGPT. When you check the same or an edited text again, each number also shows the change since the previous check.

Reliability drops for short texts, translations, texts by non-native speakers and texts that AI only edited. The result is therefore a starting point for a conversation or further checking, not proof.

Try it on your own text

Paste a text or upload a file and look at the score and at the specific sentences that came out suspicious.

Run a detection