In your codebase
Extract prose from Astro, React, Solid, Go, templ, HTML, and Markdown. Find each issue at its file, line, and column.
Lint HTML and Markdown Choose a framework adapterA 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
We actually shipped the update in order to fix the bug.
We shipped the update
to fix the bug.
Paste your copy to check it. Try all 39 default and NLP checks. Your text stays in this browser.
Drafts are saved in this browser.
Select an issue to see what to change and where.
Install the packages, add the config from the setup guide, then lint. This example uses Astro.
Read the setup guidenpm install -D faircopy @faircopy/astro
# After adding faircopy.config.ts:
npx faircopy lintExplore 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 options39 rules. Examples use each rule’s default options.
@faircopy/rules-defaultno-complex-sentencesFlag individual sentences whose Flesch-Kincaid grade level exceeds a targetThe implementation of multifaceted computational methodologies necessitates the rigorous examination of numerous interdependent variables.
This method requires checking related variables.
Long, syllable-dense sentences are hard to read. Break them into shorter sentences that each make one point.
no-em-dashBan the em-dash character in marketing copyThe update ships today — check your inbox.
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.
no-weasel-wordsBan reinforcement adverbs that protest too muchWe actually shipped the update.
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.
no-rhetorical-scaffoldingBan formulaic "X is Y, not Z", "Without X / With X" and standalone importance announcementsThat distinction matters. Only owners can change the file.
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.
no-non-inclusive-languageFlag non-inclusive terms and suggest neutral alternativesAdd the address to the whitelist.
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.
no-redundant-phrasesFlag wordy redundant phrases and suggest concise replacementsSign in in order to continue.
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.
no-passive-voiceFlag likely passive-voice constructions using auxiliary + past participle patternsThe page was approved by the team.
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.
no-clichesFlag overused or clichéd phrases and suggest fresher alternativesAt the end of the day, we need to ship.
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.
no-repetitive-sentence-startingsFlag consecutive sentences that start with the same wordWe review every draft. We check every link. We ship every Friday.
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.
no-filler-wordsBan filler words that pad out a sentence without adding meaningJust sign in to continue.
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.
@faircopy/rules-nlpno-absolute-intensifiersFlag intensifiers before absolute adjectivesThe result is very unique.
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.
no-adverb-overuseFlag sentences with more than two -ly adverbsShe quickly, quietly, carefully, and slowly entered the room.
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.
no-buzzword-stacksFlag sentences overloaded with abstract benefit nounsOur platform drives productivity, collaboration, and transformation.
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.
no-complex-readabilityFlag prose whose Flesch-Kincaid grade level exceeds a targetThe 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.
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.
no-empty-transformation-claimsFlag broad transformation claims that do not name a concrete outcomeTransform the way teams work.
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.
no-expletive-openersFlag sentence openings that delay the real subjectThere are three approvals waiting in the queue.
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.
no-filter-wordsBan filter phrases that distance the claim from the readerI think the update is ready.
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.
no-future-promisesFlag future-tense promises without present evidenceThe checklist will help you ship.
The checklist tracks launch approvals.
Future promises defer proof. Rewrite the claim around current behavior, concrete evidence, or a specific outcome already available.
no-hedge-wordsFlag hedge words that soften claimsThe update is somewhat useful.
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.
no-jargonFlag business jargon and vague workplace idiomsWe need to leverage our synergies.
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.
no-llm-speakFlag phrases commonly overused by LLMs and suggest concrete alternativesDelve into the documentation.
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.
no-meaningless-modifiersFlag intensifiers that add no informationThe page is very fast.
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.
no-non-inclusive-language-nlpFlag non-inclusive terms and suggest neutral alternatives using NLP-aware matchingAdd the address to the whitelist.
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.
no-nominalized-phrasesFlag nominalized "X of Y" phrases that hide the action in a nounThe optimization of onboarding takes a week.
We optimize onboarding in a week.
Nominalized phrases bury the action. Rewrite the phrase with a verb so the sentence says who does what.
no-noun-stringsFlag dense strings of consecutive nounsThe customer account access management system needs a review.
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.
no-n-thingsFlag the enumerated "N things" frame common in AI-generated copyThree things to know before launch.
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.
no-overly-complex-sentencesFlag sentences with too many coordinating or subordinating conjunctionsWe review the draft and check the links and test the form and update the guide and ship the page.
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.
no-overused-adverbsFlag adverbs that appear excessively across the textShe quickly finished. He quickly left. They quickly agreed. We quickly moved.
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.
no-passive-voiceFlag likely passive-voice constructions using POS tagging patternsThe page was approved by the team.
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.
no-pronoun-led-claimsFlag vague claims that start with it, this, that, these, or thoseThis helps teams move faster.
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.
no-qualifier-creepFlag stacked qualifiers or intensifiers before an adjective or adverbThe result is very really quite good.
The test passed every check.
Stacked qualifiers dilute the claim and feel hedged. Keep the strongest qualifier or replace the phrase with concrete evidence.
no-redundant-pairsFlag redundant word pairs and padded fixed phrasesFirst and foremost, review the end result.
Review the result.
Redundant pairs repeat the same idea twice. Keep the stronger word or replace the phrase with a more specific claim.
no-stacked-adjectivesFlag noun phrases with multiple adjectives before the nounThe adaptive intelligent workflow engine handles approvals.
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.
no-superlative-claimsFlag unproven superlatives and market-positioning claimsChoose our best-in-class platform.
Compare the review tools against your requirements.
Superlative claims need proof. Replace broad market-positioning words with evidence, scope, or a concrete product behavior.
no-vague-comparativesFlag comparative claims that omit a clear baselineOur editor is faster.
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.
no-vague-quantifiersFlag bare quantifiers without numeric anchorsMany teams use several workflows.
Twelve teams use four workflows.
Vague quantifiers make claims hard to evaluate. Replace them with a number, range, or concrete scope when precision matters.
no-weak-modalsFlag hedged modal claims like "can help" and "might improve"The checklist can help teams ship.
The checklist tracks launch approvals.
Hedged modal claims sound tentative. Replace them with the outcome, capability, or proof you can stand behind.
no-weak-verbsFlag vague action verbs and suggest stronger alternativesWe make changes to the page.
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.
sentence-complexityFlag sentences that exceed a word or clause thresholdThe 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.
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.
No rules match. Try another phrase or choose a different pack.
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.
Extract prose from Astro, React, Solid, Go, templ, HTML, and Markdown. Find each issue at its file, line, and column.
Lint HTML and Markdown Choose a framework adapterThe Claude Code plugin checks copy when a turn ends. Lint errors send the agent back to revise.
Set up the pluginChoose the rules that fit your voice. Configure severity, ignore files, or write a custom rule.
Configure your rulesFrom Omni Aura. Inspired by Impeccable's approach to design, applied to the words you ship. View the source.