Profanity Filter Word Lists and How to Use Them
Published: October 28, 2026. Updated: October 2026 by Andrew Apell, who builds PureWord and previously built Flookup Data Wrangler
A profanity filter is only as good as the list behind it. The list holds the words and spellings the filter knows to catch, and everything the filter does, masking, replacing, hiding, is a lookup against that list. When a swear word appears on the page and nothing happens, the cause is almost always that the spelling on screen does not match anything in the list.
This page covers how a list is structured, why exact matching alone fails on real comment sections and how to extend a list so the variants you actually meet are covered.
What a Word List Actually Contains
A usable list has two layers, and they behave differently:
- The base list. Standard entries in their dictionary spelling, shipped with the filter and covering the everyday vocabulary. This is what a fresh install already masks, with no configuration.
- Custom entries. Words you add yourself, stored exactly as written and matched literally. Slang from the communities you read, a nickname, a misspelling the base list has no reason to know, a term from a school or a workplace.
The division matters because the two layers answer different questions. The base list answers what most readers want gone on day one, while the custom layer answers what appears in your particular comment sections this month.
Why Exact Matching Fails on Its Own
Comment culture evolves spellings specifically to slip past filters, and the tricks fall into a handful of families. Any list used without a matcher that understands these families will miss them:
- Inflections. Word endings change, so the list has to stem back to the base form before comparing.
- Digits standing in for letters. A number that looks like a letter replaces it, so the matcher folds common substitutions before comparing.
- Separators inside the word. Hyphens, full stops and underscores are inserted between letters and have to be removed first.
- Abbreviations. Initialisms that everyone reads as one word need their own entries.
- Spaced letters and stretched words. Letters pulled apart, or one letter repeated, break the token so completely that folding cannot reconstruct it. These close through a custom entry with the exact spelling.
- Lookalike characters. Letters borrowed from another alphabet that render like Latin letters pass every Latin comparison unless the matcher folds them too.
Published benchmark tables show the split plainly: patterns that keep a readable token are caught by folding, and patterns that destroy the token are caught by custom entries. A filter that claims one mechanism for both is claiming something the text does not support.
How a Filter Applies the List
The order of operations decides the outcome. A filter that walks the page text, folds the input, compares against the base list and then against custom pairs in that order gets both layers right: general coverage first, then your literal overrides, which always win.
Two settings change what the reader sees rather than what is caught. Masking replaces the match with symbols and keeps the sentence shape intact. Replacement swaps it for a clean alternative from a custom pair, which keeps the meaning readable for younger readers. The same list drives both modes.
Building Your Own Additions
- Collect from the page itself. The words that bother you are already on the screen. Select one, right click and block it, and PureWord writes the entry for you.
- Write pairs in the options page. One
word, replacementpair per line for anything you want changed rather than masked. Custom pairs match literally, so the spaced and stretched spellings belong here. - Scope it if the household needs it. Per site rules keep a list tight on one domain, and Parental Lock stops anyone from editing the entries back out.
- Prune once a season. Lists grow by accretion and dead entries make the next edit harder. Removing what nobody says anymore costs nothing.
Checking a List Before You Trust It
Ask any filter for its behaviour on four test patterns before believing its coverage claims: a spaced spelling, a stretched word, a digit substitution and a symbol substitution. Two of the four survive every automatic matcher and can only be closed by a custom entry, so a filter that handles all four gives you both mechanisms and tells you where the gaps are.
The comparison in the extension roundup runs those checks across the leading tools, and the setup guide covers the install side.
FAQ
What is a profanity filter word list?
The set of words and patterns a filter knows how to catch. It is usually shipped as a base list of standard entries, plus a place for your own custom entries that match exactly as written.
Why do some swear words get through the filter?
Because the spelling on the page does not match the entry in the list. Spaced letters, stretched words, symbols standing in for letters and lookalike characters from another alphabet all defeat exact matching until the variant is added as a custom entry.
Can I add my own words to the list?
Yes. In PureWord the options page takes one word, replacement pair per line, and any word on a page can be selected, right clicked and blocked everywhere without opening the options page.
How do I test whether a list is complete?
Run the patterns that usually slip through: a spaced spelling, a stretched word, a digit standing in for a letter and a symbol substitution. A filter that passes those four tests has coverage beyond dictionary spellings.
Summary
A list has two layers, a base set that covers standard spellings and custom entries that cover everything your pages actually use. Folding handles the variants that keep a readable token, and custom literal entries handle the ones that do not. Build the custom layer from words you select on the page, prune it occasionally and test any filter with the four patterns before trusting its claims.
Related Articles
A List That Covers What You Actually Read
PureWord ships a base list, takes custom pairs per line and locks the settings behind a password. Free and private.
Add to Chrome