Offline & Private AI Text Detector

Four writing-pattern signals and an optional local AI classifier run entirely in your browser. Your browser never transmits any text.

ZERO UPLOAD · ALL LOCAL
  1. Paste or type at least 100 words into the box below, then click Check for AI to score it.
  2. By default, the tool runs in Advanced mode, which scores with a local classifier model only. The classifier starts downloading the first time you click Check for AI once your text reaches 100 words.
  3. Switch to Basic mode if you'd rather skip that download. Basic mode scores your text instantly from the four writing-pattern signals alone, with no model involved.
  4. Check the reasons below your score to see what drove it, then click any reason to highlight the exact sentences behind it in your text.

Detection mode

Basic

Four writing-pattern signals (sentence rhythm, transition-word density, word predictability, vocabulary variety) score your text instantly. Nothing downloads. These are lightweight heuristics rather than a trained model.

Advanced

Scores with a local classifier model only. This is the default mode. The model, about 120MB, starts downloading the first time you click Check for AI once your text reaches 100 words.

Input (Text or HTML)

Add text to see a score. 100 words minimum, 2,000,000 characters maximum.

Output (AI score)

Score

Confidence

Model
Scoring

⚠ BEFORE YOU TRUST THIS SCORE This is a directional signal, not a verdict. No detector, free or paid, can prove how a piece of text was written.

WHY THIS SCORE

Click a reason to highlight the sentences behind it in your text. Click it again to remove the highlight.

Highlighted text

Offline

Load this page once and it keeps scoring text with no internet connection at all. Every computation, Basic or Advanced, runs on your machine, so a dropped connection never interrupts a score in progress.

Private

Your browser never uploads, logs, or sends anything you paste to a server, in either mode. The classifier model downloads once, then scores every later paste locally, the same way the four Basic signals always have.

No signup

There's no account to create and no email to hand over. Open this page and start pasting text, and every feature works immediately, the first time and every time after.

No paywall

Advanced mode isn't a paid tier hiding behind Basic. Both modes, including the classifier model, are free with no usage cap, because every CapyToolkit tool works this way.

How this tool differs

Most AI detectors ask for something before they'll score your text: an email address, a monthly word limit, or eventually a credit card. This one asks for nothing. Paste your text, click Check for AI, and a score appears, the same way whether it's your first visit or your hundredth, because there's no account behind the scoring and never has been.

Inside your browser is exactly where every signal here runs, never on a remote server. The four Basic signals are plain JavaScript math, computed the instant you click Check for AI. Once loaded, the Advanced classifier model works the same way, entirely through WebAssembly, so nothing you paste is ever transmitted anywhere to be scored.

That local computation is also why this page keeps working with no internet connection at all, once you've loaded it a single time. CapyToolkit is installable as a browser app, and its service worker caches the page itself along with the scripts that run it, so a dropped connection mid-session doesn't interrupt a score that's already in progress. The classifier model caches separately, through the browser's own storage, the first time you download it, and every later visit reuses that copy instead of fetching it again.

None of that comes with a catch. Advanced mode isn't a paid tier hiding behind Basic, and there's no usage cap tied to a plan you'd need to upgrade out of. Every feature on this page, including the classifier, is free the same way every CapyToolkit tool is free: permanently, not as a trial of something bigger.

How AI text detection works

Every AI detector, including this one, is trying to answer the same question: does a piece of text look more like something a language model produced, or something a person wrote? Early detectors leaned almost entirely on perplexity, a measure of how surprising each word choice looks to a reference language model. Predictable word choices scored low on perplexity, and low perplexity got treated as a sign of machine authorship.1

That approach ran into real problems once it left the lab. Because perplexity is measured against one specific model, a detector tuned for GPT-family output can misjudge text from Claude or Gemini, and the thresholds decay every time a new model ships. Most damagingly, simpler and more standard sentence structures score as predictable by default, and that pattern shows up disproportionately in writing from non-native English speakers.2

Because of that history, this tool treats detection as two separate modes rather than a single perplexity number. Basic runs four independent, explainable writing-pattern signals instantly on everything you paste. Advanced runs a local classifier model as its own headline, with no mix-in from those four signals. Nothing here claims to prove authorship. Every score is a statistical estimate, shown alongside the reasoning behind it, so you can judge for yourself instead of trusting one opaque percentage.

The four Basic signals

Sentence-length burstiness is the first signal, and it measures how much your sentence lengths vary across the whole document. Human writing tends to mix short, punchy sentences with longer, more complex ones, producing a high standard deviation in words per sentence. AI-generated text, by contrast, tends toward a narrower, more uniform range, so a low standard deviation pushes this signal's score up.

Check for AI enables at 100 words, and the input line states both that gate and the 2,000,000-character ceiling up front. The minimum exists because every measure here is statistical. For burstiness, a run of sentences must exist before lengths can vary; the transition-density and pair scores need enough words for their rates to stabilize; and the classifier packs whole sentences into its windows. A short paste produces noise rather than evidence. Instead of scoring it anyway and handing you a number, the tool simply waits for more text, the same in both modes.

Transition density and word predictability

Transition-word density comes next, counting how often your text reaches for formal connectors like "furthermore," "in conclusion," or "it is important to note," relative to its length. Language models lean on these phrases far more heavily than typical human writing does, which makes density a cheap but genuinely useful tell. Word predictability works similarly but at a smaller scale: it checks your text's two-word phrases against a table of the 15,000 most common word pairs in English, built from a large public frequency corpus, and scores how often your phrasing lands on well-worn ground.3

Vocabulary variety across your document

The fourth signal, vocabulary variety, tracks lexical diversity using a length-normalized measure so a five-paragraph essay and a five-sentence comment get judged fairly against each other. Because repeated word choices are cheaper for a model to sustain than for a person, low variety still pushes this signal's own score up and can surface below your result as a reason of its own. What it no longer does is move your number: the Basic score weights come from the other three signals, so vocabulary variety reads as a diagnostic rather than a scorer. Once any signal crosses the AI-typical threshold, it appears as a plain-language reason, and you can toggle the highlightable ones on or off to mark the exact sentences behind them in your text.

What the filter removes before scoring

Before any sentence is counted, a normalization pass strips the formatting out of your paste. Markdown goes first: the pass removes heading markers, emphasis markers, images, links, and inline code, and replaces fenced code blocks with a placeholder. The same pass strips HTML tags and decodes their entities, so a paste from a rendered web page and the same text from a plain file meet the signals on equal footing. Bare URLs, www. addresses, and email addresses drop out too, which keeps links and contact details from inflating the word count. What survives is prose, and that is all the signals ever see, in either mode.

A second layer excludes content the signals cannot meaningfully score. Near-duplicate passages drop out, so a report that repeats its boilerplate three times is scored once, not three times. Along with gibberish, list-heavy stretches and code or structured data drop out as well. Every exclusion surfaces as its own filter reason, with the excluded sentences shown muted below your result, so a paste that mixes prose with a code appendix scores the prose and names what it skipped. The word counts on those tiles tell you how much of your paste actually fed the number, which is the number worth trusting.

The English boundary

Both layers of measurement share one calibration. The transition list and the common-pair table are English, so text in another language mostly measures how unfamiliar its phrasing looks to those English baselines, and that cuts in both directions: a formal human translation can read as AI-typical, and generated text in a second language can read as human. Like the Basic signals, the Advanced classifier carries the same boundary, because the model card describes training that is primarily English.4 The honest position follows from those two facts: for text in another language, scores here are not evidence in either direction.

The non-native-writer bias documented earlier on this page is a finding about English text, and it marks the edge of what the signals can say, not the start of a new range. A wholly different language sits outside every baseline this tool measures: its connectors are not in the list, its word pairs are not in the table, and the classifier's training centered on English. Treat a score on such text as unusable rather than as weak evidence, the same honesty the limits paragraph applies to every other number here. This tool is the wrong instrument for non-English writing, and it says so plainly.

The Advanced classifier model

Advanced is the tool's default mode, so pasting at least 100 words is all it takes for the classifier to start downloading on its own, no button required. It's a RoBERTa-based model trained specifically to separate human from AI-generated text, converted to a compact, quantized format that runs entirely inside your browser through WebAssembly. A status line beneath the mode switcher tracks the download the whole time, so you always know whether the model is loading, ready, or still waiting on enough text.

The download itself is a one-time cost of about 120MB, and your browser caches the model afterward and reuses it on every later visit without fetching it again. Nothing about the download or the scoring afterward touches a server, since the model runs on your machine start to finish. That's the same one-time download behavior described earlier: once cached, later visits skip the network entirely for the Advanced classifier, the same way the page itself does once you've installed it.

How Advanced scores a long document

The Advanced headline is the classifier's own score. It does not mix in the four Basic signals. Switching the mode pill to Basic is how you see those signals; they never move the Advanced number. The model reports 99.28% AUROC on RAID,45 a large public detector benchmark, and that figure describes the model, not a guarantee on any single paste you run here.

Because the model reads at most 510 tokens at a time, the tool packs your included sentences into sections that fill that budget, then runs the classifier on each section. Each sentence is trimmed and joined with a single space before it goes in, so stray line breaks between sentences are not part of what the model sees. A leftover section at the end of a document still gets scored, even when it is shorter than a full pack. The headline is a word-weighted average of those section probabilities, rounded once, so longer sentences count more than short ones.

Reading your score, and its limits

Your headline score lands in one of three bands. Zero to 33 reads as Likely Human, 34 to 66 as Mixed or Uncertain, and 67 to 100 as Likely AI. Treat these bands as a starting point for judgment, not a verdict. In Advanced mode a Mixed result means the classifier landed in the middle of its range on the packed sections it scored. In Basic mode it means the writing-pattern signals did not pull strongly toward either end.

Score versus confidence

Beside the headline score sits a second gauge, labeled Confidence, that reports how much weight the result deserves. In Basic mode, the number rises with the amount of scorable text you pasted and with how much the three scoring signals agree, and it falls when the filter excluded a larger share of the paste. In Advanced mode, it rises with how far the classifier's sections sit from the middle and with how consistent they are with each other. Both formulas are built into the tool, and both reward the same thing: a result computed from enough text, with the pieces agreeing.

Read the two gauges as a pair. A high score at low confidence deserves a shrug rather than a verdict, because the tool is telling you its own estimate is thin. A mid score at high confidence still lands in the Mixed band, because confidence describes the quality of the estimate, never which direction it points. Reading the two numbers together is the intended workflow: the score says what the measurement found, and the confidence says how much of a measurement there was. The second gauge exists to keep the tool honest about its own estimate.

Below the headline number, the reasons for that score show up as their own tiles. Advanced lists the classifier, any higher-scoring sections, and anything the filter excluded. Basic lists the four writing-pattern signals that crossed the threshold, plus the same exclusions. Click a highlightable reason to mark the sentences behind it in the pane, so you can inspect those lines instead of rereading the whole draft to figure out what moved the number.

The hidden-character check

Every scan runs one more check, in both modes, before anything is reported: a sweep for invisible Unicode characters. The set includes zero-width spaces and joiners, directional formatting marks, interlinear annotation characters, and the variation-selector range, none of which render as anything visible. When the sweep finds them, a reason tile of its own appears with the total and distinct counts, and clicking it highlights every sentence that carries one. Ordinary typing and copy-paste essentially never introduce these. A hit is not something you typed by accident; it is something the text brought with it.

What a hit means is narrower than the word watermark suggests. The tile's own note stays hedged on purpose: some AI tools and export pipelines leave them behind as invisible tracking or watermark marks, and that is as far as the claim goes. Presence is a fact about the file's history, an invisible payload that traveled with the paste, and it is worth investigating where the text has been. Origin is a different matter. The tile reports that invisible characters exist and where they sit, never who put them there, which is the same honesty every other number on this page carries.

None of that adds up to proof. Every score on this page is a statistical estimate built from patterns that correlate with AI generation, not a forensic record of what happened when the words were typed, and no detector on the market, free or paid, can close that gap. Because simpler, more standard sentence structures read as statistically predictable, non-native English writers are disproportionately likely to score higher here, exactly as documented in published research on this category of tool.2 If that describes your writing, weigh the result accordingly rather than treating it as an accusation. A 100% Likely Human score is reassuring for the same reason: it means your writing didn't trigger the patterns this tool looks for, which is useful, but it isn't a certificate you could submit anywhere as evidence.

Editing is the last limit worth naming. The signals here are statistical patterns, which is exactly why they move under rewriting: light edits can shift a score, and heavily paraphrased text can drift toward the human band regardless of who or what produced the first draft. For the whole category, published research documents this: recursive paraphrasing significantly reduces detection rates across detector types.6 The practical reading follows: a low score on text that was rewritten after generation is weaker evidence than a low score on untouched text, and a confidence gauge that drops while its sections disagree is the tool showing you exactly that split.

How it compares to other AI detectors

Every major AI detector on the market processes your text somewhere other than your own device, even the ones that don't charge for it. That distinction matters more than price does, because a server has to receive your text before it can score it, whether or not that server bills you afterward for the privilege. The table below compares this tool against five widely used detectors on the terms that actually separate them: whether you need an account, how much text you get before hitting a wall, what it costs, and whether your text ever leaves your browser to get scored at all.

Tool Signup required Free-tier cap Price Text leaves your browser?
Offline & Private AI Text Detector Never None (2,000,000 characters) Free, always Never
GPTZero Not for a base scan 10,000 characters/scan Around $14.99/mo Yes
Originality.ai Yes, paid only None, no free plan $14.95/mo Yes
Copyleaks No, for a base scan 25,000 characters/scan $13.99/mo Yes
QuillBot AI Detector Effectively, yes 1,200 words/scan Free tier + paid Premium Yes
ZeroGPT No 15,000 characters/scan Free Yes, not stored

Each competitor's row links to a page comparing it against this tool in more depth, including the places where that competitor genuinely does something this tool doesn't, like GPTZero's classroom integrations or Copyleaks' compliance certifications. Not one of the five listed here runs entirely inside your browser, and that's the one distinction no pricing change on their end can close.

Sources
  1. 1.

    Eric Mitchell, Yoonho Lee, Alexander Khazatsky, Christopher D. Manning, and Chelsea Finn, "DetectGPT: Zero-Shot Machine-Generated Text Detection using Probability Curvature," International Conference on Machine Learning, 2023. https://arxiv.org/abs/2301.11305

  2. 2.

    Weixin Liang, Mert Yuksekgonul, Yining Mao, Eric Wu, and James Zou, "GPT Detectors Are Biased Against Non-Native English Writers," Patterns, vol. 4, no. 7, July 2023. https://arxiv.org/abs/2304.02819

  3. 3.

    Peter Norvig, "Natural Language Corpus Data: Beautiful Data," norvig.com, updated November 2011. https://norvig.com/ngrams/

  4. 4.

    Oxidane, "TMR: Target Mining RoBERTa AI Text Detector," huggingface.co, 2025. https://huggingface.co/onnx-community/tmr-ai-text-detector-ONNX

  5. 5.

    Liam Dugan, Alyssa Hwang, Filip Trhlik, Josh Magnus Ludan, Andrew Zhu, Hainiu Xu, Daphne Ippolito, and Chris Callison-Burch, "RAID: A Shared Benchmark for Robust Evaluation of Machine-Generated Text Detectors," Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics, 2024, pp. 12463–12492. https://aclanthology.org/2024.acl-long.674/

  6. 6.

    Vinu Sankar Sadasivan, Aounon Kumar, Sriram Balasubramanian, Wenxiao Wang, and Soheil Feizi, "Can AI-Generated Text be Reliably Detected?," Transactions on Machine Learning Research, arXiv:2303.11156, 2023. https://arxiv.org/abs/2303.11156

FAQ