A linter for the words your product ships
Catch AI tells before you ship. Pass is the floor.
Copylint checks product copy against 148 rules for AI writing tells, shows the rule and line behind every flag, and suggests fixes you can accept or skip. Not a humanizer, not a detector.
2 free scans, no card. Plans from $19 a month.
Try it on a sample draft, or paste your own
Result
5 critical 8 major 1 minor
5 critical+20 each
let's dive in
line 1critical phrase…ms that want to unlock their potential. Let's dive in. We built a seamless experience that e…
game-changer
line 1critical phrase…ndscape, our cutting-edge platform is a game-changer for teams that want to unlock their pot…
Replace with the specific fact the phrase is standing in for.
evolving landscape
line 1critical phraseIn today's evolving landscape, our cutting-edge platform is a game-ch…
1 occurrence(s); use a single hyphen or restructure
em/en dash'not just X, it's Y' construction
negation-redefinitionSay the positive claim once, without the setup.
8 major+10 each
cutting-edge
line 1major phraseIn today's evolving landscape, our cutting-edge platform is a game-changer for teams th…
Replace with the specific fact the phrase is standing in for.
seamless experience
line 3major phrase…r potential. Let's dive in. We built a seamless experience that empowers every single team to leve…
seamless
line 3major phrase…r potential. Let's dive in. We built a seamless experience that empowers every single t…
leverage
line 3major phrase…ence that empowers every single team to leverage AI — without the friction. It's not jus…
landscape
line 1major phraseIn today's evolving landscape, our cutting-edge platform is a game-ch…
empower
line 3major phrase…n. We built a seamless experience that empowers every single team to leverage AI — with…
unlock
line 1major phrase…s a game-changer for teams that want to unlock their potential. Let's dive in. We bui…
absolute claim; qualify or cite
sweeping categorical claimQualify the scope or cite the source.
1 minor+3 each
just
line 3hedge/filler word…age AI — without the friction. It's not just a tool, it's a movement.
Catalog fixes apply here, in your browser. The app adds AI rewrites of single sentences, history, the API, and the team voice profile. Start free.
148
rules in the catalog
Every one is listed with its weight.
See the rulesNo model
in the score
Pattern matching only, so a score never drifts. AI rewrites are opt-in and never score.
How parity worksOne score
in every tool
CLI, GitHub Action, API, and app agree, checked on every commit.
Read the docsMIT
open-source scanner
Read the code and run it offline, free.
View on GitHub
Why a gate comes before any rewrite
Drafts converge
Models sample from the same distribution. Ten drafts by ten writers now share the same openers, the same dashes, and the same forty phrases.
Reviewers miss the same tells
A reader who sees a phrase every day stops seeing it. The catalog does not get tired.
“Sound human” is the same prompt
Asking a model to hide its tells samples the same distribution again. Model-specific word patterns survive rewriting and translation (arXiv:2502.12150, ICML 2025).
A pass is a floor
Below 40 means the draft avoids a known catalog. It does not mean a person wrote it, and we will not claim otherwise. Fixes are suggestions. The writer still decides.
How a draft gets stopped
Critical findings add 20, major add 10, minor add 3. Under 40 exits 0 and ships. At or above 40 exits 1 and lists every finding with its line, rule, and excerpt. The app and the API add a suggested fix where the catalog has one. Same input, same score, every run. No model in the score.
Your draft
docs/launch.mdIn today's evolving landscape, our cutting-edge platform is a game-changer for teams.
A rule from the catalog
scan_text.pyCRITICAL_PHRASES = [ "game-changer", # +20 "evolving landscape", # +20 ] MAJOR_PHRASES = [ "cutting-edge", # +10 ]
The verdict, in CI
exit code 1$ python3 scripts/scan_text.py docs/launch.md
[CRITICAL] docs/launch.md:1 critical phrase: game-changer
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[CRITICAL] docs/launch.md:1 critical phrase: evolving landscape
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[MAJOR ] docs/launch.md:1 major phrase: cutting-edge
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[MAJOR ] docs/launch.md:1 major phrase: landscape
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
slop score: 60/100 (threshold 40) -> FAIL
$ echo $?
1One gate, wherever copy gets written
The same catalog runs in four places, so a draft that passes on a laptop passes in review, and a draft that fails in the app fails in CI.
$ python3 scripts/scan_text.py docs/launch.md
[CRITICAL] docs/launch.md:1 critical phrase: game-changer
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[CRITICAL] docs/launch.md:1 critical phrase: evolving landscape
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[MAJOR ] docs/launch.md:1 major phrase: cutting-edge
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
[MAJOR ] docs/launch.md:1 major phrase: landscape
In today's evolving landscape, our cutting-edge platform is a game-changer for teams.
slop score: 60/100 (threshold 40) -> FAIL
$ echo $?
1Catch it while the draft is still yours to change.
- The open-source scanner runs offline with no account.
- Exit code 1 at the floor, so any script or hook can stop on it.
- Findings name the line, the rule, and the phrase.
A linter, not a detector
Copylint does not guess who wrote a draft, and it will not rewrite one to get past a classifier. It points at the sentences a reader will skim past, says why, and suggests a fix you can take or leave.
- The question it answers
- Copylint: Which sentences read like a template, and why
- AI detectorsDid a model probably write thisHumanizersHow to reword text until a detector passes
- What you get back
- Copylint: Findings with line and rule, plus suggested fixes
- AI detectorsA probabilityHumanizersA rewritten draft
- Your words
- Copylint: Change only where you accept a fix
- AI detectorsUnchangedHumanizersRewritten wholesale
- Same draft, same result
- Copylint: Every run, everywhere
- AI detectorsNot guaranteedHumanizersNot guaranteed
Pricing
Start with two free scans and 5 AI rewrites a month. Catalog fixes are free everywhere. Paid plans are billed monthly by Stripe, prices exclude tax, and you can cancel from the billing page at any time.
Straight answers
What people ask before they point Copylint at their own copy.
Is Copylint a humanizer?
No. A humanizer rewrites a whole draft so it reads as human or slips past a detector. Copylint flags specific tells and suggests fixes for them. Nothing changes until you accept it, and the score never uses a model.
Does it fix the text for me?
It suggests, you decide. Word-level fixes, such as trimming a wordy connective to one word or cutting a filler adverb, come from the catalog and apply in one click, even in the demo on this page. For a flagged phrase with no plain replacement, the app can rewrite that one sentence, or fix the whole draft in one pass: every safe catalog fix, then a rewrite of each flagged sentence, which costs one rewrite from your monthly allowance per sentence. Every rewrite is scanned again before you see it, the model is told never to add facts your draft does not contain, and you accept or discard the result.
Does it detect AI authorship?
No. A low score means the text avoids a known catalog of tells. It does not say who or what wrote it, and we do not claim otherwise.
Will it help me pass GPTZero or another detector?
No. Evasion is out of scope and stays out. The rules exist so readers get concrete sentences, not so a classifier gets fooled.
Why is the threshold 40?
One critical finding plus two majors trips it. Set it lower per project with a flag. A pass is a floor for review, not a substitute for it.
What about false positives?
A catalog word can be ordinary in your domain, as a garden-design blog knows. Findings carry line and excerpt so a reviewer can dismiss one in seconds. Per-project allowlists are on the roadmap.
What happens to the text I paste?
The open-source scanner makes no network requests. The hosted tier stores a scan for 90 days on your account and never trains anything on it. An AI rewrite sends only that sentence and its paragraph to OpenAI, which does not train on it, and we do not store the rewrite.
What can it scan?
Plain text and Markdown from anywhere: paste it in the app, run the CLI on files, send it to the API, or let the GitHub Action scan the Markdown a pull request changed.
Can I cancel?
Yes. Plans are monthly and cancel from the billing page at any time, and access lasts until the end of the period you paid for. Every account starts with two free scans, no card needed.
Ship the next launch email without the tells.
Start with 2 free scans in the app, or run the open-source scanner on your machine today.
Not ready yet? Get one short email when rules or plans change. No sequence, and the address is stored once.