SRT checker

Check an SRT File for Errors

To check an SRT file for errors, load it next to its video in the editor below. Blocks it can't read are counted the moment you import, and every remaining line is tested for overlaps, missing text, lines that flash past and reading speeds too fast to follow. This page lists each warning, what sets it off and how to clear it, plus what to do when all you have is the file.

Subtitle editor

Load a video, get subtitles from AI, an SRT/VTT file or your own typing, style them, and download an MP4 with the subtitles in the picture.

MP4, MOV, M4V, WebM or MKV · free to edit and render · no watermark · the video stays on your device

Two layers of checking

The editor examines a subtitle file twice. On import it checks structure: can each block be read at all? After that, every line is checked for whether viewers can actually read it, and those warnings update as you type, vanishing once the cause is fixed. Neither layer blocks you; the decisions stay yours.

What the import checks

A subtitle block is whatever sits between two blank lines. For each one, the parser looks for a timing line containing the arrow, -->, in the block's first two lines, reads the two times on it and keeps the text below. A block is skipped when:

No timing line
The arrow is missing, or it only appears on the third line or later, which usually means a stray extra line crept in above it.
Unreadable timestamp
A time it can't parse: minutes or seconds of 60 or more, a capital O typed in place of a zero, or four digits after the comma.
No text
The block has a timing line but nothing to show once formatting tags are removed, for example a cue holding only an empty italic tag.

The notice then reads, for example, "Imported 412 subtitles from interview.srt. Skipped 3 unreadable blocks." It gives the count, not the locations. When nothing at all can be read, the import stops with "No subtitles found in that file. Check that it's a valid SRT or VTT file."

Plenty of untidiness passes without comment. Sequence numbers are ignored, so gaps, repeats and numbers out of order do no harm, and lines are sorted by start time. A dot before the milliseconds, short minute-and-second times, text after the end time, a byte order mark, Mac or Windows line endings and blank lines holding stray spaces are all fine.

The one structural fault the import can't catch

When two subtitles have no blank line between them, the parser sees one block, and the second subtitle's number and timing line become part of the first one's text. Nothing is skipped and the count looks normal. The giveaway is a line whose text contains a bare number, an arrow and two timestamps; running to four or more lines, it nearly always carries the "More than 3 lines can cover the picture." warning. Add the missing blank line in a text editor and import again, or delete the stowaway number and timestamp, place the playhead where the second subtitle should begin, and click Split.

Every line warning, decoded

Each flagged row shows its message under the text. These are the exact messages and what triggers them:

"End time is before the start time."
The end is earlier than the start, almost always a typing slip in a time field. Correct whichever time is wrong; until then the line is left out of exports.
"This subtitle has no duration."
The start and end are identical. Give it a real end time or delete it; as it stands it won't be exported.
"Shown for under 0.8 s — hard to read."
The line is on screen for less than 800 milliseconds. Pull its end into the gap that follows, or merge it with a neighbour.
"Overlaps the previous subtitle." and "Overlaps the next subtitle."
A line starts before an earlier one has ended. Both lines are flagged and shown stacked during the overlap. Keep it for two people speaking at once; otherwise pull back the first line's end.
"N characters per second — viewers may not finish reading (aim for 21 or fewer)."
The line asks for more reading speed than the limit for its script: 21 characters per second for Latin and most scripts, 17 for Thai, 12 for Korean, 9 for Chinese and 8 for Japanese. Spaces and line breaks aren't counted. Give it more time, trim words or split it.
"A line is longer than 42 characters; it will wrap automatically."
One line of the subtitle exceeds the length limit: 42 characters for most scripts, 35 for Thai, 18 for Korean and 16 for Chinese and Japanese. Press Enter inside the text box to break it at a natural phrase boundary instead of wherever the wrap falls.
"More than 3 lines can cover the picture."
The subtitle has four or more lines. Split it into two subtitles at a pause.
"No text — this subtitle will be skipped."
The text box is empty or holds only spaces, usually after a stray Enter. Type the words or delete the line.

Running a check, start to finish

  1. Open the editor and switch off "Write the subtitles automatically with AI". It is on by default, and you want a verdict on your file, not new subtitles.
  2. Choose the video the file was made for. The toolbar, including the import button, only appears once a video is loaded.
  3. Click Import SRT / VTT, select the file and compare the notice's count with the last sequence number in your file.
  4. Look at the Subtitles tab. The badge beside its name shows how many lines carry warnings, flagged rows are marked in the list, and the matching blocks are highlighted on the timeline.
  5. Step through with Up and Down. Each press selects the next line and moves the playhead to it, so you can hear the line while you read its warning.
  6. Fix as you go: retype text, edit times in the row, Split long lines at the playhead, Merge fragments with the next line. Ctrl+Z or Cmd+Z undoes any step, including the import.
  7. Play a few passages at normal speed, since no warning measures sync with the speech.
  8. Click Export SRT for the repaired file. If you render a video instead, the summary before rendering says how many lines still have warnings.

What these checks can't tell you

  • Whether the words are right. Spelling, misheard names and missing sentences only show up when you listen and read along.
  • Whether the timing matches the voice. A file that is two seconds late everywhere passes every check; shifting subtitle timing deals with that.
  • Gaps. Subtitles that follow each other with no pause aren't flagged, and neither is a line held on screen for far too long.
  • Lost formatting. Italics, bold, colour tags and position codes are removed on import without a warning, because the Style panel sets one look for every line.
  • Encoding. Files are read as UTF-8, so one saved in an older encoding shows accented letters as question-mark symbols, with no warning. Re-save it as UTF-8 and import again, as explained in subtitles showing strange characters.

Checking a file without its video

The editor needs a video before it will take a subtitle file, and the right video also shows timing problems. Without it, any MP4, MOV, M4V, WebM or MKV clip opens the toolbar, a short phone recording included. The import count and every warning come from the file's text and times alone, so the verdict is the same whatever video is open, and text fixes and Export SRT work normally. Leave timing repairs for later: times you type or drag are held inside the open clip's length, so a 30-second stand-in can't set a line to twelve minutes in.

With no video at all, a plain text editor is the fallback. Check that every block has a number, a timing line with a comma and an arrow, the text, and one blank line after it. Why an SRT file isn't working lists the usual culprits, and desktop subtitle editors such as Subtitle Edit include their own error-checking tools.

After the warnings are clear

Export SRT rebuilds the file from the cleaned lines: numbered from 1, comma timestamps, UTF-8 with a byte order mark, and with empty or zero-length lines left out. Overlaps you chose to keep are exported as they are. The SRT editor page covers the wider editing workflow, splitting and merging subtitles goes deeper on the two tools that fix most warnings, and a subtitle quality check adds the human review that no automatic check replaces. If the file is beyond saving, the AI subtitle generator can produce a fresh one from the speech.

About the subtitle editor on this page

Opens
MP4, MOV, M4V, WebM, MKV videos your browser can decode
Subtitles from
AI (from the speech, optionally translated into one of 21 languages), an SRT or VTT file, or typing them in
You download
An MP4 with the subtitles drawn into the picture at the original resolution and frame rate, plus SRT and VTT files
Cost
Editing, styling, rendering and SRT/VTT export are free, with no account and no watermark. AI subtitles cost 1 credit per minute (5-credit minimum per video); signing in with Google gives 100 free credits and accounts get 10 free credits a day
Privacy
The video never leaves your device and is rendered in your browser. Only for AI subtitles is the audio sent, over HTTPS, and it is deleted within 30 minutes of delivery
Rendering needs
Chrome or Edge 94+, Safari 16.4+, or Firefox 130+ on a computer. Editing and SRT/VTT export work in any current browser

More: srt and vtt workflows

Subtitle tools

Frequently asked questions

Does the import notice say which blocks were skipped?

No, only how many. Compare the number of subtitles in the list with the numbering in your file to find the gap, then open the file in a text editor to repair those blocks.

Do warnings stop me exporting or rendering?

No. Warnings are advice, and every flagged line is still exported except those with no text, no duration or an end before the start, which are left out.

Can I check a VTT file the same way?

Yes. Import SRT / VTT reads both, and the same line warnings apply. NOTE, STYLE and REGION blocks in a VTT are passed over quietly and don't count as skipped.

Why is a short, correct line flagged as too fast?

Reading speed divides the characters, spaces excluded, by the time on screen, so even a few words shown for half a second can exceed the limit. Give it a little more time if there's a gap after it.

Why does one subtitle contain a number and an arrow in its text?

The blank line between two subtitles is missing in the file, so they were read as one. Add the blank line and re-import, or remove the extra text and split the line at the right moment.