detick

A linter for prose written with a language model

Paste a text. Twelve rules look for the phrasing a model reaches for more often than a person does, with thresholds measured on a corpus of 389 documents. Each finding gives you the line, the column, the rule and a way to rewrite it.

up to 20 000 characters · 20–60 s per check · text is not stored

⌘↵ / Ctrl↵ runs it
1 324 / 20 000
Language of the text

Every finding names a place in your text — a line and a column — and proposes a rewrite. What to change stays your call.

What it catches

All twelve rules, in two kinds: nine judged by a model against a written criterion, three that count words and compare against a threshold. A dashed badge marks a model rule.

Statements that say nothing

Antithesismodelno-antithesis

“This is not just a tool, but a platform”: a contrast standing in for a statement.

Unsupported claimmodelclaim-without-source

A claim about the world with no number, source, example or mechanism behind it.

Worn-out phrasemodelno-banned-phrases

Stock wording a model reaches for: delve into, it’s important to note, at the end of the day.

Text about the text

Meta-commentarymodelno-meta-commentary

“In this article we’ll look at”, “as discussed above”: the text describing itself.

Author stage directionmodelno-author-stage-directions

“Let’s break it down”, “picture this”: a remark about what the author is doing.

Choppy templated openermodelno-choppy-opener

“Bottom line: we fixed it”: a label doing a sentence’s work.

Rhythm and repetition

Anaphoramodelno-anaphora

Adjacent sentences that open the same way.

Repeated rhetorical framemodelrepeated-rhetorical-frame

One rhetorical device used several times in a row.

Fragment of the previous thoughtmodelno-sentence-initial-i

A fragment that opens with a conjunction and leans on the sentence before it.

Counted per 1 000 words

Em-dash densitydeterministicdash-density

More than 20 em dashes per 1 000 words — 15 in Russian, each measured on its own corpus.

Analogy densitydeterministicanalogy-density

More than 5 analogy markers (like a, as if, akin to) per 1 000 words.

Evaluative-word densitydeterministicevaluative-density

More than 12 evaluative words (amazing, revolutionary, seamless, robust) per 1 000 words.

Compared with AI detectors

A detector reads the whole text and answers with one number: the probability that a model wrote it. detick answers per sentence, with the rule it broke and a way to rewrite it. Who wrote the draft is a question detick never asks. It reports what a reader will trip over.

detick's answer2

  1. 3:1
    no-antithesismodel

    Antithesis: Onboarding is not just a checklist, but a revolutionary first impression — the one moment a user decides whether to stay. Classic "not just X, but Y" antithesis construction. Rewrite as a direct statement, or as cause and effect.

  2. :1
    claim-without-sourcemodel

    Unsupported claim: Onboarding is not just a checklist, but a revolutionary first impression — the one moment a user decides whether to stay. Sweeping claim that onboarding is the single moment a user decides to stay, with no data, source, mechanism, or example. Check what it's based on — if the source is you, that's fine.

Captured from a run on the text above, unedited.

How it works

3 rules · deterministic
They count words and dictionary hits and compare the count with a threshold per 1 000 words, so the same text always gives the same result.
9 rules · model
A model judges the text against a criterion written in plain language. Each criterion was tested in runs against the real API, including control examples on the edge of the rule: a rhetorical device, a legitimate parallel structure, a real quotation.
thresholds · 389 en · 583 ru
Calibrated by measurement on a real corpus: 389 English documents, 358 thousand words of real markdown; 583 documents for Russian, each locale on its own numbers.
parser · markdown
A markdown parser does the reading, which is how inline code, code blocks and frontmatter drop out of the check before a rule ever sees them.
positions · line:column
The model names sentences by number and detick computes the positions itself. In detick's own runs against the API, models pointed at character offsets too unreliably to trust.
status · found / clean / failed
A rule that could not run reports that it could not run. “Nothing found” and “could not check” stay separate, so an empty list means the check happened.

The same in the terminal

The CLI came first: twelve rules, two locales, findings printed in your terminal.

$ detick onboarding.mdonboarding.md  1:1  [analogy-density] Too many analogies: 4 in 227 words (limit 2).  1:1  [evaluative-density] Evaluative-word density too high: 6 in 227 words       (limit 3).  3:74  [dash-density] Too many em dashes: 11 in 227 words (limit 5). Replace       some with a period, a comma, or "because".  7:1  [repeated-rhetorical-frame] The rhetorical frame "the key question"       repeats 3 times — reads like a template, not a live thought.
$ detick guide# prints the note each rule ships with for the writer
Antithesis. Say what the thing is, and don’t say what it isn’t. “It’s not a tool, it’s a platform” replaces a statement with a contrast: cut the first half, and the second either stands on its own or turns out empty.
Unsupported claim. When asserting something about the world, give it support: a number, a named source, an example, or a mechanism. “This noticeably improves conversion” can’t be checked by anyone; “12% in our test over two weeks” can.
Meta-commentary. Start with the content, not with a plan for narrating it. The reader already opened the article and knows it’s about something. The first approach is the first sentence.