cloudparts

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 pop as 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 alex package 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 →

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 warnings

See 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

  1. 2015

    August: first commit; September: 1.0.0 on npm

  2. 2020

    August: 9.0 adds MDX support

  3. 2021

    October: 10.0 switches to ES modules

  4. 2023

    August: 11.0.1, the latest release

Sources5 · facts checked 23 October 2026

Improve this page on GitHub