Skip to content

Media

Subtitle Cleaner

Subtitle Cleaner

Beta

Strip HTML tags, ASS/SSA overrides, SDH brackets and speaker labels from SRT and VTT subtitles in your browser. Timing never changes.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

Runs in your browser — your file is not uploaded

Input

Accepts .srt, .vtt and .txt

  • Strip HTML tags

    <i>, <b>, <font …>

  • Strip ASS overrides

    {\an8}, {\i1} and other {\…} blocks

  • Strip SDH brackets

    [music], (applause)

  • Strip speaker labels

    JOHN: at the start of a line

  • Normalize whitespace

    Collapse double spaces, trim lines

Output

Cues processed
–
Tags removed
–
Empty cues dropped
–

Preview

timing is never changed

Nothing to preview yet

Drop a file, paste subtitles or load the sample. The first cues appear here with removed markup struck through.

Cleaned file

Appears after a file is read

The cleaned file will appear here.

How to clean a subtitle file

  1. Add the file

    Drop an .srt, .vtt or .txt file on the input card, choose one with the file button, or paste the subtitle text. It is cleaned straight away.
  2. Pick what to remove

    HTML tags, ASS overrides and extra whitespace are removed by default. Turn on SDH brackets to remove [music] and (applause), and speaker labels to remove JOHN: at the start of a line.
  3. Check the preview

    The first cues are shown before and after, with the removed markup struck through. Timestamps are printed as they are in the file, because they are never changed.
  4. Download

    Download the cleaned file, named after the original with -cleaned added (episode-04-cleaned.srt), or copy its text. Choose Force SRT to turn a VTT file into SRT at the same time.

Common uses

Uploading captions to a video platform

Remove <i> tags and {\an8} overrides that would otherwise show up as literal text in the uploaded captions.

Importing subtitles into a video editor

Give the editor plain cue text, so a caption track does not carry styling tags it cannot read.

Making hearing captions from an SDH track

Turn on SDH and speaker-label removal to drop [door slams], (applause) and NARRATOR: from a hard-of-hearing track. Cues left empty are dropped.

Tidying a merged or converted file

Files joined or converted from ASS often keep override blocks. Clean them in one pass before you ship the file.

Why clean a subtitle file?

Subtitle files pick up markup on their way between tools. A fansub script converted from ASS leaves {\an8} and {\i1} blocks in every line, a ripped track carries <i> and <font color> tags, and a WebVTT file from a streaming site can hold <c> and <v> tags. Many players hide some of it, but upload platforms, video editors and burn-in tools often show it as literal text. Subtitle Cleaner cleans subtitle text in your browser: it removes that markup from the cue text and leaves every start and end time exactly as it was, so the cleaned file stays in sync with the video it was made for. It does not change cue timing, does not translate, and does not upload your files.

Subtitle Cleaner removes formatting markup from the text of a SubRip (.srt) or WebVTT (.vtt) file and keeps every start and end time exactly as it was. By default it strips HTML-style tags such as <i>, <b> and <font color>, WebVTT <c> and <v> tags, ASS/SSA override blocks such as {\an8} and {\i1}, and repeated spaces. Two further options remove SDH descriptions in square or round brackets and speaker labels such as JOHN: at the start of a line.

A cue that has no text left after cleaning is dropped and counted rather than written as a blank cue, because a blank line inside an SRT or VTT file ends the cue and can corrupt the rest of the file. SRT cues are renumbered from 1 after a drop. A VTT file stays VTT, with its cue identifiers and cue settings such as line:90%, unless you choose Force SRT. To change the format without cleaning, use SRT to VTT; to flatten a full ASS script first, use ASS to SRT.

The file is read and cleaned in your browser tab and is not uploaded. The cleaner changes text only. If the subtitles are out of sync, use the Subtitle Shifter for a constant delay or the Subtitle FPS Converter for drift that grows over time; to fix cues that overlap, use the Subtitle Overlap Fixer.

How it compares

Desktop subtitle editors can remove formatting tags and hearing-impaired text too, often with more options, such as fixing line lengths or reading speed. They are a good choice if you edit subtitles often and can install software. A text editor with regular expressions also works if you know the patterns and check the result yourself.

This page covers one job: open a file, choose what to remove, check the before-and-after preview and download. It needs no install and no account, and it reads the file in the browser. It shows which cues would be emptied, drops them instead of writing blank cues, and refuses options that would empty every cue.

It does not change timing, spell-check, translate, fix line lengths, or edit styled ASS scripts. For those, a desktop editor is the better tool.

Tips

  • SDH and speaker-label removal are off by default because they remove words, not just markup. Turn them on only when you want captions for a hearing audience.
  • If a warning says every cue would be emptied, the file is probably all sound descriptions. Turn SDH removal back off.
  • A speaker label is only removed at the start of a line and only when it starts with a capital letter and has at most four words, so "The time is 10:30" is left alone.
  • An ASS \N inside a line becomes a real line break, and \h becomes a space.
  • The cleaner does not fix timing. For overlapping cues use the Subtitle Overlap Fixer, and for a constant delay the Subtitle Shifter.

Frequently asked questions

How do I remove HTML tags like <i> from an SRT file?

Drop the file on this page with Strip HTML tags turned on, which is the default. Tags such as <i>, <b> and <font color="…"> are removed from every cue, the text between them is kept, and the timestamps are not changed. Then download the cleaned file.

What does {\an8} mean in a subtitle, and can this remove it?

{\an8} is an ASS/SSA override that places a line at the top of the screen. It often leaks into SRT and VTT files converted from ASS and then shows as literal text. Strip ASS overrides, on by default, removes every {\…} block that starts with a backslash. A plain {text} without a backslash is left alone.

Does cleaning change the subtitle timing?

No. Every start and end time is kept exactly. The only changes are to the cue text, and SRT cue numbers are renumbered from 1 when a cue is dropped.

How do I remove [music] and other hearing-impaired descriptions?

Turn on Strip SDH brackets. It removes text in square or round brackets, such as [music] or (applause), and music notes (♪ ♫). It is off by default because it removes words as well as markup.

What happens to a cue that is empty after cleaning?

It is dropped and counted under Empty cues dropped. A blank cue is never written, because a blank line inside an SRT or VTT file ends the cue. If the options would empty every cue, the page shows a warning and offers no download.

Which speaker labels are removed?

A label at the start of a line that starts with a capital letter, has up to four words and ends in a colon followed by text, such as JOHN:, Mary: or Dr. Smith:. A dialogue dash is kept, so "- JOHN: Hi" becomes "- Hi". A colon later in a sentence, such as "the time is 10:30", is not removed.

Does a VTT file stay VTT?

Yes, by default. Cue identifiers and cue settings such as line:90% are kept. Choose Force SRT to write SubRip instead. WebVTT NOTE, STYLE and REGION blocks are not copied to the cleaned file.

Is my subtitle file uploaded?

No. The page reads the file and cleans it in your browser tab. The subtitle text is not sent to a server.

Can I clean subtitles through an API?

Yes. The same cleaner is available as the subtitle_clean tool through the FindUtils REST API and MCP server. An API call sends your subtitle text to FindUtils over TLS; it is processed and returned, not stored or logged.

What if the page says it could not read the file?

The file has a timing line the parser does not recognise, and the message gives its line number. Each timing line needs hours, minutes, seconds and milliseconds on both sides, such as 00:00:09,000 --> 00:00:11,300 in SRT or 00:00:09.000 --> 00:00:11.300 in VTT. Fix that line in the paste area and the file is cleaned at once.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool