/faircopy

Clean copy.
Before you ship.

A linter for the words in your code.

Catch filler, vague claims, and the writing habits agents repeat. Set your rules. Get precise feedback in your CLI or Claude Code.

Explore all 39 rules · Open source · MIT licensed · Runs locally

A few words less.A clearer sentence.

We actually shipped the update in order to fix the bug.

Drop the filler. Keep the meaning.

We shipped the update
to fix the bug.

Try it with your words

Your copy. Under the lens.

Paste your copy to check it. Try all 39 default and NLP checks. Your text stays in this browser.

0 errors0 warningsClick a highlight to inspect it.

Drafts are saved in this browser.

Select an issue to see what to change and where.

Make the next draft
a fair copy.

Install the packages, add the config from the setup guide, then lint. This example uses Astro.

Read the setup guide
Terminal
npm install -D faircopy @faircopy/astro
# After adding faircopy.config.ts:
npx faircopy lint

Every rule.
A clearer way to say it.

Explore all 39 rules in faircopy 1.25.0. Open a rule to compare drafts and check its example with the published package.

Start with the 10 default checks, or add the 29 NLP checks for sentence structure and vague claims. In your project, set each rule to an error, a warning, or off.

Read the rule options

39 rules. Examples use each rule’s default options.

Default rules

10 checks · @faircopy/rules-default
Dense sentencesno-complex-sentencesFlag individual sentences whose Flesch-Kincaid grade level exceeds a target

Before

The implementation of multifaceted computational methodologies necessitates the rigorous examination of numerous interdependent variables.

A possible rewrite

This method requires checking related variables.

Long, syllable-dense sentences are hard to read. Break them into shorter sentences that each make one point.

View rule source
Em dashesno-em-dashBan the em-dash character in marketing copy

Before

The update ships today — check your inbox.

A possible rewrite

The update ships today. Check your inbox.

Em-dashes are a stylistic tell. Split the sentence at the break. Use a period, a semicolon, parentheses, or a new sentence. If the clauses genuinely belong together and a comma reads worse, write shorter sentences.

View rule source
Weasel wordsno-weasel-wordsBan reinforcement adverbs that protest too much

Before

We actually shipped the update.

A possible rewrite

We shipped the update.

Reinforcement adverbs defend a claim instead of making it. Delete the word. If the sentence no longer reads right, the original claim was the problem — rewrite it, don't prop it up.

View rule source
Rhetorical scaffoldingno-rhetorical-scaffoldingBan formulaic "X is Y, not Z", "Without X / With X" and standalone importance announcements

Before

That distinction matters. Only owners can change the file.

A possible rewrite

Only owners can change the file.

These patterns spend a clause denying a straw man or performing a reveal instead of making a claim. State the claim or consequence directly. Standalone importance announcements should explain what changes or why.

View rule source
Inclusive languageno-non-inclusive-languageFlag non-inclusive terms and suggest neutral alternatives

Before

Add the address to the whitelist.

A possible rewrite

Add the address to the allowlist.

Non-inclusive terms can alienate readers. Replace them with neutral alternatives that name the same idea without relying on identity, ability, or historical power metaphors.

View rule source
Padded phrasesno-redundant-phrasesFlag wordy redundant phrases and suggest concise replacements

Before

Sign in in order to continue.

A possible rewrite

Sign in to continue.

Redundant phrases pad copy with extra words that add no meaning. Replace them with the concise alternative, or delete the phrase entirely if the replacement is empty.

View rule source
Passive voiceno-passive-voiceFlag likely passive-voice constructions using auxiliary + past participle patterns

Before

The page was approved by the team.

A possible rewrite

The team approved the page.

Passive voice often hides the actor and adds drag. Prefer naming who did the action unless the actor genuinely does not matter.

View rule source
Clichésno-clichesFlag overused or clichéd phrases and suggest fresher alternatives

Before

At the end of the day, we need to ship.

A possible rewrite

We need to ship.

Clichés and overused phrases make copy feel generic and forgettable. Replace them with specific, concrete language that reflects your actual product or idea.

View rule source
Repeated sentence openingsno-repetitive-sentence-startingsFlag consecutive sentences that start with the same word

Before

We review every draft. We check every link. We ship every Friday.

A possible rewrite

We review every draft and check every link. Releases ship on Fridays.

Starting several consecutive sentences with the same word creates a repetitive rhythm. Vary the sentence openings or combine related sentences to keep the reader engaged.

View rule source
Filler wordsno-filler-wordsBan filler words that pad out a sentence without adding meaning

Before

Just sign in to continue.

A possible rewrite

Sign in to continue.

Filler words like "just" dilute your claim. Remove the word; if the sentence then feels too blunt, rewrite the surrounding copy instead of softening it.

View rule source

NLP rules

29 checks · @faircopy/rules-nlp
Intensified absolutesno-absolute-intensifiersFlag intensifiers before absolute adjectives

Before

The result is very unique.

A possible rewrite

The result is unique.

Absolute adjectives already express an extreme. Intensifiers like "very" before them are redundant and weaken the claim. Remove the intensifier or replace the phrase with concrete evidence.

View rule source
Adverb-heavy sentencesno-adverb-overuseFlag sentences with more than two -ly adverbs

Before

She quickly, quietly, carefully, and slowly entered the room.

A possible rewrite

She slipped into the room.

Too many -ly adverbs in one sentence make copy feel padded. Remove the adverb, replace it with a stronger verb or adjective, or add it to allowedAdverbs if it is essential.

View rule source
Buzzword stacksno-buzzword-stacksFlag sentences overloaded with abstract benefit nouns

Before

Our platform drives productivity, collaboration, and transformation.

A possible rewrite

The review queue shows owners, blockers, and approvals.

Buzzword-heavy sentences make copy sound interchangeable. Replace abstract benefit nouns with the specific product behavior, customer outcome, or proof point.

View rule source
Passage readabilityno-complex-readabilityFlag prose whose Flesch-Kincaid grade level exceeds a target

Before

The implementation of multifaceted computational methodologies necessitates the rigorous examination of numerous interdependent variables. Organizational stakeholders systematically operationalize comprehensive transformation initiatives across heterogeneous infrastructures. Consequently, interdisciplinary coordination facilitates the institutionalization of sophisticated administrative procedures.

A possible rewrite

Teams test related variables. They share results across systems. Owners then approve the next step.

Landing-page copy should be readable by a broad audience. Break long sentences, replace jargon, and front-load the point until the grade level drops.

View rule source
Empty transformation claimsno-empty-transformation-claimsFlag broad transformation claims that do not name a concrete outcome

Before

Transform the way teams work.

A possible rewrite

Show your team which approvals are blocked.

Transformation cliches promise a feeling instead of a result. Replace them with the specific workflow, metric, or customer outcome the product changes.

View rule source
Delayed subjectsno-expletive-openersFlag sentence openings that delay the real subject

Before

There are three approvals waiting in the queue.

A possible rewrite

Three approvals are waiting in the queue.

Expletive openers like "there are" make copy indirect. Start with the actor, product, or benefit so the sentence lands faster.

View rule source
Filter wordsno-filter-wordsBan filter phrases that distance the claim from the reader

Before

I think the update is ready.

A possible rewrite

The update is ready.

Filter phrases announce a perspective or pad the sentence instead of making the point. Delete the phrase or rewrite the sentence so the claim stands on its own.

View rule source
Future promisesno-future-promisesFlag future-tense promises without present evidence

Before

The checklist will help you ship.

A possible rewrite

The checklist tracks launch approvals.

Future promises defer proof. Rewrite the claim around current behavior, concrete evidence, or a specific outcome already available.

View rule source
Hedgesno-hedge-wordsFlag hedge words that soften claims

Before

The update is somewhat useful.

A possible rewrite

The update adds keyboard shortcuts.

Hedge words make claims sound uncertain. Remove the hedge or replace the sentence with a specific proof point. Words like "pretty" and "quite" can be intentional adjectives in some contexts; override hedges when that trade-off is too noisy for your copy.

View rule source
Business jargonno-jargonFlag business jargon and vague workplace idioms

Before

We need to leverage our synergies.

A possible rewrite

We need to share our research.

Jargon makes copy sound generic. Replace it with the specific action, technical behavior, or customer outcome, or tune the phrase list for terms that are legitimate in your context.

View rule source
LLM clichésno-llm-speakFlag phrases commonly overused by LLMs and suggest concrete alternatives

Before

Delve into the documentation.

A possible rewrite

Read the documentation.

LLM-speak uses padded, abstract phrases that sound authoritative without saying much. Replace them with direct verbs, concrete nouns, or delete them entirely.

View rule source
Meaningless modifiersno-meaningless-modifiersFlag intensifiers that add no information

Before

The page is very fast.

A possible rewrite

The page loads in 120 ms.

Meaningless modifiers inflate a claim without adding evidence. Delete the modifier, replace it with a concrete detail, or opt out specific words such as "clearly" and "obviously" when they are part of your voice.

View rule source
Inclusive language with NLPno-non-inclusive-language-nlpFlag non-inclusive terms and suggest neutral alternatives using NLP-aware matching

Before

Add the address to the whitelist.

A possible rewrite

Add the address to the allowlist.

Non-inclusive terms can alienate readers. Replace them with neutral alternatives that name the same idea without relying on identity, ability, or historical power metaphors.

View rule source
Nominalized phrasesno-nominalized-phrasesFlag nominalized "X of Y" phrases that hide the action in a noun

Before

The optimization of onboarding takes a week.

A possible rewrite

We optimize onboarding in a week.

Nominalized phrases bury the action. Rewrite the phrase with a verb so the sentence says who does what.

View rule source
Noun stringsno-noun-stringsFlag dense strings of consecutive nouns

Before

The customer account access management system needs a review.

A possible rewrite

Review the system that manages access to customer accounts.

Three or more nouns in a row create dense, hard-to-read compounds. Rewrite them with prepositions or verbs.

View rule source
Counted placeholdersno-n-thingsFlag the enumerated "N things" frame common in AI-generated copy

Before

Three things to know before launch.

A possible rewrite

Prepare your launch checklist.

A count plus a placeholder noun ("three things", "5 things to know") spends its number on rhythm instead of meaning. Name the items in the heading, or drop the count and state the claim.

View rule source
Nested clausesno-overly-complex-sentencesFlag sentences with too many coordinating or subordinating conjunctions

Before

We review the draft and check the links and test the form and update the guide and ship the page.

A possible rewrite

We review the draft, links, and form. Then we update the guide and ship.

Sentences packed with conjunctions are often run-ons or nested too deeply. Break them into shorter sentences so each point stands on its own.

View rule source
Repeated adverbsno-overused-adverbsFlag adverbs that appear excessively across the text

Before

She quickly finished. He quickly left. They quickly agreed. We quickly moved.

A possible rewrite

She finished. He left. They agreed. We moved.

Repeating the same adverb throughout a passage weakens copy and reads as filler. Replace the adverb with a stronger verb or adjective, cut it, or add it to allowedAdverbs if it is essential.

View rule source
Passive voiceno-passive-voiceFlag likely passive-voice constructions using POS tagging patterns

Before

The page was approved by the team.

A possible rewrite

The team approved the page.

Passive voice often hides the actor and adds drag. Prefer naming who did the action unless the actor genuinely does not matter.

View rule source
Vague pronoun-led claimsno-pronoun-led-claimsFlag vague claims that start with it, this, that, these, or those

Before

This helps teams move faster.

A possible rewrite

The checklist shows which launch approvals are blocked.

Pronoun-led claims make the reader infer the subject. Name the feature, product, or user action that creates the outcome.

View rule source
Stacked qualifiersno-qualifier-creepFlag stacked qualifiers or intensifiers before an adjective or adverb

Before

The result is very really quite good.

A possible rewrite

The test passed every check.

Stacked qualifiers dilute the claim and feel hedged. Keep the strongest qualifier or replace the phrase with concrete evidence.

View rule source
Redundant pairsno-redundant-pairsFlag redundant word pairs and padded fixed phrases

Before

First and foremost, review the end result.

A possible rewrite

Review the result.

Redundant pairs repeat the same idea twice. Keep the stronger word or replace the phrase with a more specific claim.

View rule source
Stacked adjectivesno-stacked-adjectivesFlag noun phrases with multiple adjectives before the noun

Before

The adaptive intelligent workflow engine handles approvals.

A possible rewrite

The workflow engine handles approvals.

Stacked adjectives make copy feel generic. Keep the one descriptor that earns its place or replace the phrase with concrete evidence.

View rule source
Unproven superlativesno-superlative-claimsFlag unproven superlatives and market-positioning claims

Before

Choose our best-in-class platform.

A possible rewrite

Compare the review tools against your requirements.

Superlative claims need proof. Replace broad market-positioning words with evidence, scope, or a concrete product behavior.

View rule source
Comparisons without a baselineno-vague-comparativesFlag comparative claims that omit a clear baseline

Before

Our editor is faster.

A possible rewrite

Our editor is faster than the old one.

Comparative words like "better" or "faster" only persuade when the reader knows what is being compared. Add "than" and a concrete baseline, or rephrase with a specific metric.

View rule source
Vague quantitiesno-vague-quantifiersFlag bare quantifiers without numeric anchors

Before

Many teams use several workflows.

A possible rewrite

Twelve teams use four workflows.

Vague quantifiers make claims hard to evaluate. Replace them with a number, range, or concrete scope when precision matters.

View rule source
Weak modalsno-weak-modalsFlag hedged modal claims like "can help" and "might improve"

Before

The checklist can help teams ship.

A possible rewrite

The checklist tracks launch approvals.

Hedged modal claims sound tentative. Replace them with the outcome, capability, or proof you can stand behind.

View rule source
Weak verbsno-weak-verbsFlag vague action verbs and suggest stronger alternatives

Before

We make changes to the page.

A possible rewrite

We revise the page.

Weak verbs like "make" and "do" hide the real action. Replace them with specific verbs that tell the reader exactly what happens.

View rule source
Sentence length and clausessentence-complexityFlag sentences that exceed a word or clause threshold

Before

The launch team reviews every draft before the release manager checks each link and the designer tests the form while the editor updates the guide for the next release.

A possible rewrite

The launch team reviews each draft. The manager checks links. The designer tests the form. The editor updates the guide.

Long, clause-heavy sentences are harder to read. Split them into shorter sentences that each make one point.

View rule source

Examples are editorial suggestions, not automatic fixes. The playground above runs both packs; your project runs only the rules you enable. NLP warnings need a writer’s judgment.

Put your writing standards to work.

With your agent

The Claude Code plugin checks copy when a turn ends. Lint errors send the agent back to revise.

Set up the plugin

On your terms

Choose the rules that fit your voice. Configure severity, ignore files, or write a custom rule.

Configure your rules

From Omni Aura. Inspired by Impeccable's approach to design, applied to the words you ship. View the source.