Text Censor
Mask every word on a custom list wherever it appears — fully, keeping the first letter, as a grawlix or with your own text — with whole-word and case toggles.
Every listed word, masked to its length
Paste any text, keep or edit the built-in word list, and every listed word is masked wherever it appears. By default each match is replaced by a mask character repeated to the word's length, so damn becomes **** while the surrounding spacing and punctuation stay intact; the "Censor style" select can instead keep the first letter, keep the first and last letters, swap in a grawlix (@#$%), put replacement text such as [censored] in its place, or remove the word altogether. A short, mild default list is included and fully editable — add your own terms one per line or comma-separated, and delete any you don't need. Tick "Add a list of common profanity" to censor a built-in list of stronger words on top of yours, and a line under the output says how many matches were censored and which words they were; “Save the matches as CSV (word, count)” saves that list as a spreadsheet file.
Whole-word and case controls
Turn on whole words only so listing ass never censors class or glass, or turn it off to match every substring. Ignore case masks DAMN, Damn and damn alike, and you can set any mask character you like. Words are matched literally — even regex characters are safe — and everything runs locally in your browser, so your text and blocklist never leave your device. To swap a single known phrase instead of a whole list, try find and replace.
Frequently asked questions
Does the mask keep the same length as each word?
Yes, except when the word is removed or replaced with text. By default each matched word is replaced by your mask character repeated to the word's length, so "damn" becomes "****"; keeping the first letter, keeping both end letters and the grawlix keep the length too, while "Replace with text…" puts your text in, whatever its length, and "Remove the word" takes the word out with one space beside it. Otherwise the spacing and punctuation around it are left untouched.
Will it censor parts of innocent words like "class"?
Not while "whole words only" is on, which is the default — listing "ass" leaves "class" and "glass" alone. Switch it off if you deliberately want to match every substring.
Is there a ready-made list of swear words?
Yes, off by default. Tick "Add a list of common profanity" and a built-in list of swearing and sexual vulgarity — with the inflected forms that whole-word matching would otherwise miss — is added to your own words; slurs aimed at groups of people are deliberately left out. Under the result, a line says how many matches were censored and how many times each word appeared, or that no listed word appears in the text, so a typo in your list does not pass in silence.
Can it catch disguised spellings, spare certain words, or remove words instead of masking them?
Yes. “Catch disguised spellings (h3ll, daaamn, d a m n)” reads leet digits, stretched letters and spaced-out letters back to the listed word; a word written only in digits is left alone. “Never censor these words” keeps whole words such as classic or Scunthorpe untouched, even with whole-word matching off. Censor style has “Remove the word”, which takes the match out with one space beside it, and “Show the matches in the original” marks every hit in the untouched text.
Can I take the list of caught words away as data?
Yes. Once anything is censored, “Save the matches as CSV (word, count)” saves the list printed under the output as a CSV file — one row per distinct word, as it was first written, with how many times it appeared, most frequent first. A word that starts like a spreadsheet formula is saved with a leading apostrophe so it opens as text. The censored text has its own .txt Download.