Writing
Strip the AI tell from your own writing
An 88 percent AI score matters less than the phrases that produced it. Google DeepMind and University of Pennsylvania researchers released DetectorScope, which marks the expressions that made a text look machine written. This guide covers how to read those marks, how the threshold changes what you see, and how to install it.
Checked 2026-10-29
Official GitHub README · arXiv paper · Free demo · Python package
Summary before you start
| Item | What it is |
|---|---|
| What | A detector that scores AI authorship and names the phrases behind the score |
| Who | Google DeepMind and University of Pennsylvania researchers |
| What changed | Instead of one probability, every contributing phrase gets a name and a weight |
| How to use | Paste text in the Hugging Face demo, or pip install detectorscope |
| License | Public release. Running it locally needs model downloads and compute |
| Paper | arXiv 2610.30006, collected in the EMNLP 2026 proceedings |
Read the section you need. If you only want a quick check, start with sections 1 and 2. If you want to know why results move, go to section 3. Skip the code in section 4 unless you work in Python.
🖱️Run your own text through the demo
The Hugging Face demo works without installing anything, as long as the service is up. The screen names below come from the published demo code; the live interface may change.
- 1Paste your text into the input field in Edit mode. Start with a short piece whose origin you already know.
- 2Choose Run. When the result appears, hover the marks to see the phrase and its explanation.
- 3Return to Edit to revise. Keep the original text separate and note which sentence you changed and why.
| Control | What you choose | First run |
|---|---|---|
| Model | Which domain the detector was trained on | Use detector-scope for general text |
| Setting | How the detector was trained | Leave the Default option |
| Head | How features are combined into a verdict | Keep the default |
| Interp. threshold | How strict the explanations must be to count | Read the default first, compare in section 3 |
Change one thing at a time
If you change several settings together you cannot tell which one moved the result. When editing text, leave the settings alone. When comparing settings, leave the text alone.
The general-text experiments in the paper used English material. Accepting an English sentence is not the same as being validated on English, and this guide makes no accuracy claim for other languages.
A stopped demo is not a verdict. If the analysis fails, do not read the absence of marks as human authorship. A failed run and a human verdict are different outcomes.
📊How to read the result
The official README lists an example output with p_ai = 0.88 alongside English sample text. That is a documented example, not a measurement taken here. The same sentence can move when the model or settings change.
| Phrase (official description) | Weight | Which way it pushed |
|---|---|---|
| The word about used as a preposition | +0.23 | Toward AI |
| Repeated phrases or sequences | +0.14 | Toward AI |
| Conversational filler such as like i said | -0.05 | Toward human |
Positive values push toward AI, negative values push toward human, and larger absolute values matter more. A weight is how far the verdict score falls when that feature is removed, not a percentage of probability.
88 percent and +0.23 are different numbers
The percentage is the model's AI probability. The weight is how much that one feature added to the internal score. Reading +0.23 as 23 percentage points of AI-ness is a mistake.
| What you see | Read it as | Do not conclude |
|---|---|---|
| High AI probability | This model, on this setting, leaned AI | That the author used AI |
| Positive weight on a phrase | That feature contributed to the AI verdict | That the phrase is forbidden |
| Negative weight on a phrase | That feature contributed here to the human verdict | That adding it improves writing |
| Score drops after edits | The model responded differently to new input | That readers find it better |
Decide what to change by reading the context. Ask whether repetition carries meaning or is a habit. Rewriting necessary terminology or quoted lines to lower a number blurs what the text says.
🎚️Compare results with the threshold
The threshold, tau, controls how strict the explanations must be before a feature counts in the verdict. Each feature carries a score for how accurately its explanation predicts where it fires; tau is the line that score must clear.
| tau | What you see | What you gain | What it costs |
|---|---|---|---|
| High, up to 0.95 | A few clearly explained features | Easy to read and verify by hand | Accuracy drops somewhat |
| Default 0.85 | The official baseline | A starting point for comparison | Not optimal for every text |
| Low, down to 0.00 | More features, including loosely explained ones | Higher accuracy | Explanations get harder to read |
tau is not a cutoff for the AI verdict
A tau of 0.85 does not mean anything above 85 percent is called AI. It selects which features are trustworthy enough to use. The final classification threshold is a separate setting.
| Record for each comparison | Example |
|---|---|
| The input text | Save the original; do not edit mid-comparison |
| Model and settings | Model, Setting, Head, tau |
| Noticeable evidence | The repeated phrase, its neighbours, the explanation |
| Your judgement | Whether the repetition is needed or habitual |
💻Install it and run your own code
The official package requires Python 3.10 or newer. Installing happens in the terminal; analysis happens in a Python file. The first run downloads model files, so it needs bandwidth and disk space.
python -m venv .venv && source .venv/bin/activate
pip install detectorscopefrom detectorscope import AuditableDetector
# Load the AI detector
detector = AuditableDetector.from_pretrained("liamdugan/detector-scope")
# Run it on some input
output = detector("Like I said, this is about accuracy, about speed, and about cost.")
print(output)| Result field | Plain meaning | What to use it for |
|---|---|---|
| label | Final classification | See which side it landed on |
| p_ai | AI probability | Overall reference |
| logit | Internal score before the probability | Connect to feature weights |
| bias | A base value added besides feature weights | Do not infer the verdict from a few weights alone |
| features | The features used, with descriptions | Read the positions and context |
Save the provenance
When you store results, keep the original text, the model and the settings together. A probability on its own cannot explain later why it moved.
⚠️What this tool cannot do
A verdict is not proof
An AI verdict does not establish who wrote the text. Use it only to see which expressions contributed. The official README states the detector is released for research and can be wrong on human writing.
- Accuracy on unfamiliar domains and unseen generators is not established.
- The official position forbids using it for decisions about people, including grading, hiring and paper review.
- Feature explanations may omit the conditions under which a feature fires, so read the surrounding sentence.
- The README states this is a research artifact, not an official Google product.
When you revise, read the marked phrase aloud. If it sounds natural and says what you mean, keep it. Fix one unnecessary repetition or vague explanation at a time, and do not add experiences, numbers or examples that were not in the original.
Then read the piece again with the marks hidden. Choose whichever version a reader understands more easily. In your notes, write what the reader gains, such as a clearer subject or less duplicated explanation, rather than how far a score moved.
Sources
| Official source | What it established here |
|---|---|
| GitHub usage | Example output, result fields, tau and position display |
| GitHub models | General-text and peer-review models, default settings |
| GitHub disclaimer | Error rates, ban on decisions about people, not an official product |
| Package configuration | Python 3.10 minimum and dependencies |
| Demo source code | Edit and Run screens, Model, Setting, Head, threshold |
| arXiv HTML | English evaluation data, Table 1 comparisons, stated limitations |
| ACL Anthology | EMNLP 2026 collection record and PDF |
Context before score
Keep the original, read the marked phrases in context, and change only what genuinely reads badly. The final test is whether a reader understands the text more easily. If the demo is down, use the official recording, or install the package when you have a Python environment.
Open the demo