All Tools View Categories About Contact Privacy

Profanity Filter

Censor blocked words in subtitles.

Runs entirely in your browser — no data is uploaded or stored.

Comma-separate blocked words; matching is case-insensitive and word-boundary aware.

About this tool & how to use it
  • Your own word list: The Blocked words (comma-separated) field takes as many terms as you need, which lets you paste a client's house list straight in rather than working from a fixed built-in dictionary.
  • Choose the mask: The Censor character field decides what appears on screen, so you can match a house style that prefers asterisks, hashes or another symbol.
  • Word-boundary matching: Terms are matched with boundaries on both sides, so listing a short word does not accidentally censor the middle of an innocent longer one.
  • Case-insensitive by default: A term listed in lower case is caught at the start of a sentence and in all-caps emphasis without you having to list every variant.
  • Length-preserving replacement: Each match becomes the same number of censor characters as the original word, which keeps characters-per-line and reading-rate figures broadly intact.
  • Literal handling of odd terms: Every entry is escaped before it becomes a pattern, so symbols and punctuation in your list behave as plain text rather than breaking the match.
  • Timing untouched: Only the text inside cues is rewritten; start and end times and the cue structure are regenerated exactly as they came in.
  • Runs locally: Raw uncensored transcripts stay in your browser, which matters when the unfiltered version is the sensitive one.
  1. Paste the subtitle file you need to sanitise into the SRT Content box, or click Load sample to see how masking behaves before using a real file.
  2. Type your terms into Blocked words (comma-separated), separating each with a comma; the tool will prompt you if you leave this empty.
  3. Set Censor character to the symbol your house style or client specification calls for, such as an asterisk.
  4. Run the filter and read through the output pane, paying attention to words that share a stem with your blocked terms to confirm they were correctly left alone.
  5. Check that cue numbering and timecodes in the output match the source, since only the text should have changed.
  6. Download the sanitised track as a .srt file and keep the original separately, so you can still deliver the uncensored version where it is permitted.

Example 1 - masking a term without catching its lookalikes. With "bad" in the blocked list and an asterisk as the censor character:

Before
12
00:02:14,000 --> 00:02:17,200
That was a bad call, and his badge proves it.

After
12
00:02:14,000 --> 00:02:17,200
That was a *** call, and his badge proves it.

The standalone word is masked while "badge" survives, because the match requires a word boundary on both sides.

Example 2 - capitalisation and a custom mask. Blocked words "damn, hell" with a hash as the censor character:

Before
8
00:01:03,500 --> 00:01:06,000
Damn it - what the hell happened?

After
8
00:01:03,500 --> 00:01:06,000
#### it - what the #### happened?

Both spellings are caught regardless of case, and each mask is exactly as long as the word it replaced, so the line still fits the same two-line layout.

About Profanity Filter

The Profanity Filter masks a list of words you supply throughout a subtitle file. You paste the captions into the SRT Content box, type the terms you want blocked into Blocked words (comma-separated), choose what to mask them with in Censor character, and the tool returns a complete SRT in which every match has been replaced by a run of that character the same length as the original word. Timecodes and cue numbers are rebuilt unchanged and the file downloads as .srt.

Anyone preparing a single piece of content for more than one audience runs into this. A documentary cut for evening broadcast needs a clean caption track for its daytime schools showing; a corporate training video captioned from a candid interview needs the transcript sanitised before it goes on the intranet; a streaming platform hands a vendor a house list of terms that must be masked in the subtitle deliverable. Doing it with a plain find-and-replace catches the wrong things, and doing it by eye across a thousand cues is both slow and unreliable.

Matching is done per cue with a case-insensitive regular expression anchored to word boundaries on both sides, so the filter hits the standalone word in any capitalisation but leaves longer words that merely contain it alone. Each term you list is regex-escaped before use, which means punctuation and symbols in your list are treated as literal characters rather than as pattern syntax. The replacement preserves length: a four-letter word becomes four censor characters, so line lengths, reading rate and on-screen layout stay close to the original. If the blocked-words field is empty the tool asks you to fill it rather than returning the file unchanged.

The whole pass runs in your browser, so sensitive raw transcripts are never uploaded, and a full-length feature filters in a moment.

Features

  • Your own word list: The Blocked words (comma-separated) field takes as many terms as you need, which lets you paste a client's house list straight in rather than working from a fixed built-in dictionary.
  • Choose the mask: The Censor character field decides what appears on screen, so you can match a house style that prefers asterisks, hashes or another symbol.
  • Word-boundary matching: Terms are matched with boundaries on both sides, so listing a short word does not accidentally censor the middle of an innocent longer one.
  • Case-insensitive by default: A term listed in lower case is caught at the start of a sentence and in all-caps emphasis without you having to list every variant.
  • Length-preserving replacement: Each match becomes the same number of censor characters as the original word, which keeps characters-per-line and reading-rate figures broadly intact.
  • Literal handling of odd terms: Every entry is escaped before it becomes a pattern, so symbols and punctuation in your list behave as plain text rather than breaking the match.
  • Timing untouched: Only the text inside cues is rewritten; start and end times and the cue structure are regenerated exactly as they came in.
  • Runs locally: Raw uncensored transcripts stay in your browser, which matters when the unfiltered version is the sensitive one.

How to Use

  1. Paste the subtitle file you need to sanitise into the SRT Content box, or click Load sample to see how masking behaves before using a real file.
  2. Type your terms into Blocked words (comma-separated), separating each with a comma; the tool will prompt you if you leave this empty.
  3. Set Censor character to the symbol your house style or client specification calls for, such as an asterisk.
  4. Run the filter and read through the output pane, paying attention to words that share a stem with your blocked terms to confirm they were correctly left alone.
  5. Check that cue numbering and timecodes in the output match the source, since only the text should have changed.
  6. Download the sanitised track as a .srt file and keep the original separately, so you can still deliver the uncensored version where it is permitted.

Examples

Example 1 - masking a term without catching its lookalikes. With "bad" in the blocked list and an asterisk as the censor character:

Before
12
00:02:14,000 --> 00:02:17,200
That was a bad call, and his badge proves it.

After
12
00:02:14,000 --> 00:02:17,200
That was a *** call, and his badge proves it.

The standalone word is masked while "badge" survives, because the match requires a word boundary on both sides.

Example 2 - capitalisation and a custom mask. Blocked words "damn, hell" with a hash as the censor character:

Before
8
00:01:03,500 --> 00:01:06,000
Damn it - what the hell happened?

After
8
00:01:03,500 --> 00:01:06,000
#### it - what the #### happened?

Both spellings are caught regardless of case, and each mask is exactly as long as the word it replaced, so the line still fits the same two-line layout.

Benefits

  • One master, several audiences: You can derive a clean caption track for daytime, schools or in-flight use from the same source file in a couple of minutes.
  • Meets client and platform specifications: A supplied house list can be applied literally and completely, which is much easier to defend in QC than a manual pass.
  • Avoids embarrassing over-censoring: Boundary-aware matching means you do not ship a file where ordinary words have been mangled by a careless find-and-replace.
  • Preserves on-screen layout: Same-length masking keeps line breaks and reading rates where the original author put them, so no re-QC of caption timing is needed.
  • Much faster than reading every cue: A full-length programme is filtered in one action rather than an afternoon of scrolling.
  • Sensitive originals stay private: The uncensored transcript never leaves your machine, which is often the version with the real confidentiality risk.

Frequently Asked Questions

How are words matched?
With word boundaries and case-insensitivity, so "Bad" and "bad" are both caught without harming "badge".
What replaces the word?
A censor character (default *) repeated to the word’s length, preserving layout.
Can I list many words?
Yes, comma-separate as many blocked words as you need.
Is my file uploaded?
No, filtering runs locally.