Detection Methodology
How aichecker.tech analyzes text for AI-generated content. What we measure, what we don't, and what the honest accuracy limits look like.
Last reviewed: 2026-07-18 · Maintained by the aichecker.tech editorial team
1. Detection engine
Every analysis request is sent to OpenAI's gpt-4o-mini model with a forensic-linguistics system prompt that requires structured JSON output. We use response_format: json_object to constrain the output, temperature: 0.1 for determinism, and a strict input-delimiter pattern (<<<TEXT>>> … <<<END_TEXT>>>) so that any prompt-injection attempts embedded in the input are treated as data, not instructions. The model returns a 0–100 AI probability, a categorical verdict, a confidence level, a likely-source attribution, and a five-signal breakdown.
2. The five signals
The model assesses five independent statistical and stylistic properties of the input text:
- Perplexity — how predictable the next word is at each position. Language models systematically prefer high-probability continuations; humans produce more surprising word choices. Low perplexity is a strong AI signal.
- Burstiness — sentence-length variance across the passage. Human writing alternates short and long sentences; AI output tends toward uniform length. Low burstiness is an AI signal.
- Sentence uniformity — structural regularity beyond just length: topic-sentence-then-detail patterns, parallel construction, absence of fragments. AI output is structurally uniform.
- Formal transitions — rate of phrases like “Furthermore,” “In conclusion,” “Moreover,” “Additionally.” Used at much higher rates by AI than humans.
- Vocabulary repetition — reuse of mid-frequency words and avoidance of unusual ones. AI writing has narrower vocabulary distributions than typical human writing.
No single signal is decisive. The composite probability score combines all five and is what we surface as the headline result.
3. Output sanitization
Before any model output is returned to a user, every field is validated and constrained:
ai_probabilityis coerced to a number and clamped to 0–100.verdictis whitelisted againsthuman | mixed | ai.confidenceis whitelisted againstlow | medium | high.- Each signal value is whitelisted against the same three-value vocabulary.
model_likelyandsummarystrings are length-capped and stripped of< > " ' &.
This means even an adversarial or malformed model response cannot inject content into the response payload.
4. Input handling
Every input is normalized before analysis: leading and trailing whitespace stripped, zero-width characters (U+200B, U+200C, U+200D, U+FEFF, U+00AD, U+2060, U+180E) removed, and C0/C1 control characters (except tab, LF, CR) stripped. We enforce a 50-character minimum (below which results are statistically unreliable) and a 1,000-word ceiling per scan. Submitted text is held in process memory only for the duration of the request — typically 1–3 seconds — and is never written to disk, logged, or used for training.
5. Accuracy benchmarks
We report accuracy as the rate of correct classifications on unmodified AI output from each named model, measured on a rolling internal evaluation set that includes recent model releases and a control set of human writing.
- ChatGPT (GPT-4o, GPT-4 Turbo, GPT-3.5): ~99.2%
- Claude (3, 3.5, 4 family): ~98.8%
- Gemini (Pro, Ultra): ~98.4%
- Llama 3 / 3.1: ~97.9%
- Mistral / Mixtral: ~97.2%
These numbers degrade meaningfully on heavily paraphrased or hand-edited output. We do not claim accuracy on such text — the engine reflects this honestly by returning lower probability values and lower confidence ratings rather than false certainty.
6. Known limitations
We publish these limitations because pretending detection is perfect erodes trust and causes real harm when scores are misused.
- Heavy editing defeats detection. Substantially rewritten AI text approaches human statistical patterns. If a piece has been rewritten line-by-line, we may not be able to detect it.
- Non-native English writing can trigger false positives. Formulaic sentence structures, narrower vocabulary, and heavy use of transitional phrases overlap with AI characteristics. The engine outputs lower confidence on such text, but the false-positive risk is real.
- Highly formulaic academic writing can also score AI-leaning. Templated lab reports, standardized rubric-driven essays, and methods sections often resemble AI patterns.
- Short text is unreliable. Below ~150 characters there isn't enough statistical signal. We accept inputs of 50+ characters but treat any single sentence as low-confidence.
- This is a probability estimate, not proof. Detection results should never be the sole basis for academic discipline, employment decisions, content removal, or any other consequential action. Combine our output with human judgment, the writer's known capability, and other evidence.
7. Editorial standards
Our published content — including this methodology page, the how detection works guide, the accuracy reference, and per-model pages — is maintained by the aichecker.tech editorial team. We update content whenever the underlying detection model changes, when new AI systems are released that we add coverage for, or when accuracy data is re-benchmarked.
If you find a factual error, a stale claim, or an accuracy number that no longer matches your testing, we want to hear about it — email editorial@aichecker.tech and we'll review and correct.
8. Plagiarism scanning (separate engine)
The plagiarism checker uses a different methodology and a different upstream provider. It compares submitted text against billions of indexed web pages and returns source URLs with match percentages and character-level highlight spans. Like the AI detector, the plagiarism response is field-by-field sanitized before returning to the browser, and submitted text is not retained after the scan completes.
9. Changes to methodology
Methodology changes — model upgrades, prompt revisions, scoring re-calibrations — are reflected in the “Last reviewed” date at the top of this page. Material changes that would meaningfully shift detection scores are called out in the change log we maintain internally and surface here as updates.