Skip to content
Copylint

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

FAIL100/100
46 words · runs in your browser, nothing is sent

Result

0floor 40100

5 critical 8 major 1 minor

5 critical+20 each

  1. let's dive in

    line 1

    …ms that want to unlock their potential. Let's dive in. We built a seamless experience that e…

  2. game-changer

    line 1

    …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.

  3. evolving landscape

    line 1

    In today's evolving landscape, our cutting-edge platform is a game-ch…

  4. 1 occurrence(s); use a single hyphen or restructure

  5. 'not just X, it's Y' construction

    Say the positive claim once, without the setup.

8 major+10 each

  1. cutting-edge

    line 1

    In 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.

  2. seamless experience

    line 3

    …r potential. Let's dive in. We built a seamless experience that empowers every single team to leve…

  3. seamless

    line 3

    …r potential. Let's dive in. We built a seamless experience that empowers every single t…

  4. leverage

    line 3

    …ence that empowers every single team to leverage AI — without the friction. It's not jus…

  5. landscape

    line 1

    In today's evolving landscape, our cutting-edge platform is a game-ch…

  6. empower

    line 3

    …n. We built a seamless experience that empowers every single team to leverage AI — with…

  7. unlock

    line 1

    …s a game-changer for teams that want to unlock their potential. Let's dive in. We bui…

  8. absolute claim; qualify or cite

    Qualify the scope or cite the source.

1 minor+3 each

  1. just

    line 3

    …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.

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.md

In today's evolving landscape, our cutting-edge platform is a game-changer for teams.

A rule from the catalog

scan_text.py
CRITICAL_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 $?
1

One 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.

terminal
$ 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 $?
1

Catch 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.
See every rule

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.

Open source

For one person on one machine

Free forever

MIT license

  • Text and UI scanners
  • CLI that runs offline
  • Personal voice profile
Solo

For a developer or writer who ships copy every week

$19 per month

1 seat

  • Hosted API, 2,000 scans a month
  • 300 AI sentence rewrites a month
  • GitHub Action on pull requests
  • Web app and 90 days of history
Team

For teams that share a voice and a pipeline

$79 per month

up to 10 seats

  • Everything in Solo, 20,000 scans pooled
  • 1,000 AI rewrites a month per seat
  • Org voice profile applied everywhere
  • Up to 10 seats

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.