alexDormant
A Node.js linter that flags gendered, ableist, condescending or profane wording in Markdown, MDX, HTML and plain text, and suggests neutral alternatives.
- What it is
- Linters, formatters and type checkers (prose linters)
- Type
- Open source
- Made by
- Titus Wormer and contributors (community project)
- License
- MIT
- Status
- Dormant. Last release 11.0.1 in August 2023; the last commit, a README change, was in November 2024.
- Facts checked
- 23 October 2026
What it is
alex catches “insensitive, inconsiderate writing”. Given We’ve confirmed his identity it suggests their; it flags master and slave and suggests primary and replica, flags condescending words such as obviously, gendered job titles and proverbs, ableist phrases and profanities. It skips words meant literally, such as a quoted “he”. The rules come from two plugins for retext, a natural-language processor, retext-equality and retext-profanities, and alex runs them through parsers for Markdown, MDX and HTML so it reads the prose, not the markup.
It runs as an npm CLI (alex docs/) or a JavaScript API. Each finding names its rule, so .alexrc files can allow or deny rules, noBinary decides whether pairs like “he or she” count, and profanitySureness sets how likely a word must be to be profane before it is reported. HTML comments such as <!--alex ignore dad-mom--> silence one paragraph. Community integrations cover Vim, VS Code, Sublime Text, GitHub Actions and Slack, and Vale ships the same rules as its alex package. The project has had no release since 11.0.1 in August 2023.
Why teams pick it
- A focused rule set for inclusive language, each finding with a suggested replacement
- Markdown, MDX and HTML aware, with per-paragraph ignore comments for deliberate wording
- Easy to add to an existing JavaScript project’s test script and CI
Watch out for
- Word-list matching produces false positives (the README’s own example flags
popas a parent word), so most teams keep an allow list - Covers only inclusive language and profanity, not style, terminology or readability
- No release since 2023 and little activity since; the Vale
alexpackage is an alternative that runs in a broader prose linter - Needs Node.js, and the API is ESM-only since version 10
Alternatives
What all prose linters have in common →Compare side by side →
ReadableCommercialA hosted readability service, with an HTTP API, that scores text or a web page with 15 readability formulas, CEFR and IELTS levels, an A–E rating, tone and sentiment, and highlights long sentences, passive voice, clichés and hedge words.Running alex on a Markdown file (from the README) · text
$ alex example.md
example.md
1:5-1:14 warning `boogeyman` may be insensitive, use `boogeymonster` instead boogeyman-boogeywoman retext-equality
1:42-1:48 warning `master` / `slaves` may be insensitive, use `primary` / `replica` instead master-slave retext-equality
1:69-1:75 warning Don’t use `slaves`, it’s profane slaves retext-profanities
2:52-2:54 warning `he` may be insensitive, use `they`, `it` instead he-she retext-equality
2:61-2:68 warning `cripple` may be insensitive, use `person with a limp` instead gimp retext-equality
⚠ 5 warningsSee it in a real stack
No architecture uses alex yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2015–2023
alex started from a tweet in July 2015 that raised the problem of inconsiderate wording; Titus Wormer (@wooorm), encouraged by Sindre Sorhus, built it on retext, a plugin-based natural-language processor from the unified collective that dates from 2014. The first commit was in August 2015 and 1.0.0 reached npm that September, followed by attention on Product Hunt and press coverage.
Later versions added MDX support (9.0, 2020) and moved to ES modules (10.0, 2021), while the word lists grew in retext-equality and retext-profanities. Releases stopped after 11.0.1 in August 2023.
Why it’s built this way
- Build on retext plugins instead of a standalone parser
- retext already turned natural language into a tree that plugins inspect, so the rules could live in reusable plugins (
retext-equality,retext-profanities) and alex only had to wire up the inputs and output. - Warn and suggest, don’t block
- The README says alex assumes good intent; findings are warnings with alternatives, and comments or config can turn any rule off.
Timeline
- 2015
August: first commit; September: 1.0.0 on npm
- 2020
August: 9.0 adds MDX support
- 2021
October: 10.0 switches to ES modules
- 2023
August: 11.0.1, the latest release
- alex README: Origin story and Acknowledgments
- The tweet credited in alex’s origin story (Jul 2015)
- retext README (plugin-based natural-language processor, unified collective)
- npm registry: alex package metadata (release dates)
- alex release 9.0.0 (MDX support)
- alex release 10.0.0 (ESM)
- alex release 11.0.1 (Aug 2023)