How to validate SRT files
TL;DR — Validate SRT subtitle files before upload by checking cue structure, timestamp separators, cue order, and parseable subtitle blocks.
Related tool
SRT Validator Online
Validating an SRT file is a fast way to find obvious format problems before a platform rejects it. This guide shows you how to validate SRT files and fix common issues.
Quick answer
Open the SRT Validator, paste or upload the subtitle file, and read the validation report. The validator checks cue structure, timestamp format, cue order, and common syntax errors.
The report helps confirm whether the file has parseable cues, standard SRT timestamps, and basic cue structure before you upload to YouTube, Vimeo, or other platforms.
Read the validation report before choosing a fix
Do not start by changing everything in the file. First look at the error category in the report, then use the narrowest repair path.
| Validation result | What it usually means | Best next step |
|---|---|---|
Dot timestamps such as 00:00:01.000 | The file still has WebVTT-style timing | Use Fix SRT Timestamps or follow how to fix malformed SRT timestamps |
| Missing blank lines or duplicated cue numbers | The SRT structure is messy but the cues are still readable | Use Clean SRT File or follow how to clean subtitle formatting before upload |
| Parse failure near the middle of the file | One broken cue may be stopping the rest of the file from loading | Fix the first reported cue, validate again, then repair the next error |
| Validation passes but upload still fails | The platform may be applying stricter upload rules | Check SRT file will not upload or best SRT settings for YouTube upload |
This keeps the workflow simple: validate once, repair the specific problem, then validate again before re-uploading.
Why SRT validation matters
SRT is the most common subtitle format, but it’s easy to break:
- Platform rejections - YouTube, Vimeo, and other platforms reject malformed SRT files
- Silent failures - Some players accept invalid SRT but display captions incorrectly
- Manual editing errors - Hand-editing timestamps or text can introduce syntax errors
- Conversion issues - Converting from other formats can create malformed SRT
- Encoding problems - Wrong character encoding causes garbled text
Validating before upload saves time and prevents frustrating rejections.
What to check
A valid SRT file must follow this structure:
1. Numbered cue blocks (required)
Each subtitle cue starts with a sequential number:
1
00:00:01,000 --> 00:00:03,000
First subtitle
2
00:00:03,000 --> 00:00:05,000
Second subtitle
Requirements:
- Numbers must be sequential (1, 2, 3…)
- Each cue must have a unique number
- Numbers can’t be skipped (no jumping from 5 to 7)
2. Timestamp format (required)
SRT uses this exact format: HH:MM:SS,mmm --> HH:MM:SS,mmm
✅ Correct: 00:00:01,000 --> 00:00:03,500
❌ Wrong: 00:00:01.000 --> 00:00:03.500 (dots instead of commas - that’s WebVTT)
Format breakdown:
HH= hours (00-99)MM= minutes (00-59)SS= seconds (00-59)mmm= milliseconds (000-999),= comma separator (not a dot!)-->= arrow with spaces
3. Arrow separator (required)
Use exactly --> (space, two hyphens, greater-than, space):
✅ Correct: 00:00:01,000 --> 00:00:03,000
❌ Wrong: 00:00:01,000->00:00:03,000 (no spaces)
❌ Wrong: 00:00:01,000 - 00:00:03,000 (single hyphen)
4. Start time before end time (required)
The start timestamp must be earlier than the end timestamp:
✅ Correct: 00:00:01,000 --> 00:00:03,000 (1 second to 3 seconds)
❌ Wrong: 00:00:03,000 --> 00:00:01,000 (end before start)
5. Blank lines between cues (required)
Each cue must be separated by at least one blank line:
1
00:00:01,000 --> 00:00:03,000
First subtitle
2
00:00:03,000 --> 00:00:05,000
Second subtitle
6. Subtitle text (required)
After the timestamp line, add the subtitle text:
1
00:00:01,000 --> 00:00:03,000
This is the subtitle text.
Multiple lines allowed:
1
00:00:01,000 --> 00:00:03,000
This is line one.
This is line two.
7. UTF-8 encoding (recommended)
SRT files should be saved as UTF-8 to support international characters. If you see garbled text (�, ?, boxes), the encoding is wrong.
Small formatting issues can still break upload workflows, especially in strict caption tools like YouTube Studio or professional video editors.
Step-by-step workflow
1. Open the SRT Validator
Go to the SRT Validator tool.
2. Load your SRT file
Option A: Upload file
- Click “Choose File” or drag and drop your
.srtfile - The validator reads the file locally (nothing is uploaded to a server)
Option B: Paste content
- Open your SRT file in a text editor
- Copy all content (Ctrl+A, Ctrl+C)
- Paste into the validator text area
3. Run validation and check the cue count
Click “Validate”. The validator checks:
- ✅ Cue numbering (sequential, no gaps)
- ✅ Timestamp format (commas, not dots)
- ✅ Arrow separator (
-->with spaces) - ✅ Start/end time order
- ✅ Blank lines between cues
- ✅ Overall file structure
If validation passes:
✓ Valid SRT file
- 127 cues found
- No errors detected
- Ready for upload
4. Look for timestamp separator warnings or parse failures
If validation fails, you’ll see specific errors:
✗ Invalid SRT file
- Line 15: Dot instead of comma in timestamp
- Line 23: Missing blank line between cues
- Line 45: Start time after end time
- Line 67: Invalid arrow separator
Each error shows the line number and what’s wrong.
5. Fix the source file or use a repair tool
Common fixes:
Dot-based milliseconds → Replace all . with , in timestamps
Missing blank lines → Add empty lines between cues
Wrong separator → Use --> (with spaces)
Out-of-order cues → Renumber cues sequentially
For mechanical issues, use repair tools:
- Fix SRT Timestamps - Fixes timestamp format
- Clean SRT File - Rebuilds spacing and numbering
6. Validate again before uploading
After making fixes:
- Save the file
- Re-upload or paste the updated content
- Validate again
- Repeat until all errors are fixed
Then test in your target platform (YouTube, Vimeo, video editor) to ensure it works in practice.
Common validation problems
Dot-based milliseconds (WebVTT format)
Problem: Timestamps use dots instead of commas.
Example of broken SRT:
1
00:00:01.000 --> 00:00:03.000
This won't work in SRT
Why this happens: After converting from WebVTT to SRT, the converter failed to change dots to commas.
Fix: Replace all . with , in timestamps:
1
00:00:01,000 --> 00:00:03,000
This will work
Quick fix: Use Find & Replace in your text editor, but be careful not to replace dots in subtitle text.
Missing blank lines between cues
Problem: Cues run together without separation.
Example of broken SRT:
1
00:00:01,000 --> 00:00:03,000
First subtitle
2
00:00:03,000 --> 00:00:05,000
Second subtitle
Fix: Add blank lines between each cue:
1
00:00:01,000 --> 00:00:03,000
First subtitle
2
00:00:03,000 --> 00:00:05,000
Second subtitle
Automatic fix: Use the Clean SRT File tool to rebuild spacing automatically.
Out-of-order cues
Problem: Cue numbers are not sequential or timestamps are out of order.
Example of broken numbering:
1
00:00:01,000 --> 00:00:03,000
First
3
00:00:03,000 --> 00:00:05,000
Third (skipped 2!)
2
00:00:05,000 --> 00:00:07,000
Second (out of order)
Why this matters:
- Some players require sequential numbering
- Out-of-order timestamps cause captions to appear at wrong times
- Video editors may reject the file
Fix: Renumber cues sequentially and sort by timestamp. Use the Clean SRT File tool to do this automatically.
Invalid arrow separator
Problem: Using wrong characters for the arrow.
Examples of broken separators:
00:00:01,000->00:00:03,000 (no spaces)
00:00:01,000 - 00:00:03,000 (single hyphen)
00:00:01,000 — 00:00:03,000 (em dash)
00:00:01,000 => 00:00:03,000 (wrong arrow)
Fix: Use exactly --> (space, two hyphens, greater-than, space):
00:00:01,000 --> 00:00:03,000
Start time after end time
Problem: The end timestamp comes before the start timestamp.
Example:
1
00:00:05,000 --> 00:00:03,000
This is backwards
Why this happens: Manual editing error or timestamp shifting gone wrong.
Fix: Swap the timestamps:
1
00:00:03,000 --> 00:00:05,000
This is correct
Missing cue numbers
Problem: Some cues lack numbers.
Example:
1
00:00:01,000 --> 00:00:03,000
First subtitle
00:00:03,000 --> 00:00:05,000
Missing number!
Fix: Add sequential numbers to all cues. Use the Clean SRT File tool to renumber automatically.
Character encoding issues
Problem: Special characters display as � or garbled text.
Example:
1
00:00:01,000 --> 00:00:03,000
Caf� (should be Café)
Cause: File is not saved as UTF-8.
Fix:
- Open the file in a text editor that supports encoding (VS Code, Notepad++, Sublime)
- Save as UTF-8 (without BOM)
- Re-validate
Or use the Subtitle Encoding Fixer to convert automatically.
Extra blank lines at the end
Problem: Multiple blank lines at the end of the file.
Why this matters: Some parsers treat trailing blank lines as errors.
Fix: Remove all blank lines after the last cue. Most cleaners do this automatically.
When to repair instead of validate
Validation tells you what’s wrong. Repair tools fix it.
Use validation when:
- You want to check if a file is correct
- You need to identify specific errors
- You’re debugging upload failures
Use repair tools when:
- You need corrected output, not just a report
- You have many mechanical errors (spacing, numbering)
- You want to automate fixes
Recommended repair tools:
- Fix SRT Timestamps - Fixes timestamp format issues
- Clean SRT File - Rebuilds spacing, numbering, and structure
- Subtitle Encoding Fixer - Fixes character encoding
Workflow: Validate → Identify errors → Repair → Validate again → Upload
Validation vs testing
Validation checks file format.
Testing checks if captions work in the actual player.
Both are necessary:
- ✅ Validate first to catch syntax errors
- ✅ Then test in your target platform (YouTube, Vimeo, video editor)
Don’t skip either step. A file can pass validation but still fail in specific platforms due to platform-specific requirements.
Frequently asked questions
Can the validator fix errors automatically?
No, the validator only reports errors. Use repair tools like Clean SRT File or Fix SRT Timestamps to automatically fix common issues.
What if validation passes but YouTube rejects my file?
YouTube has additional requirements beyond basic SRT syntax:
- Maximum file size (usually 5MB)
- Maximum cue duration (usually 7 seconds)
- Character limits per line
- Specific encoding requirements
Check YouTube’s help documentation for platform-specific requirements.
Can I validate multiple SRT files at once?
The validator processes one file at a time. For batch validation, validate each file individually.
Does the validator work offline?
Yes, the validator runs entirely in your browser. No files are uploaded to a server. You can save the validator page and use it offline.
What’s the difference between SRT and WebVTT validation?
- SRT uses commas for milliseconds:
00:00:01,000 - WebVTT uses dots:
00:00:01.000 - WebVTT requires a
WEBVTTheader; SRT doesn’t
Use the SRT Validator for SRT files and the WebVTT Validator for VTT files.
Can I use the validator for other subtitle formats?
No, this validator is specifically for SRT format. For WebVTT files, use the WebVTT Validator. For ASS files, convert to SRT first.
Related guides
- How to fix malformed SRT timestamps
- How to clean an SRT file
- How to clean subtitle formatting before upload
- SRT file will not upload
- Best SRT settings for YouTube upload
Related tools
Use the SRT Validator Online
Validate SRT subtitles online and check upload errors, timestamp format, cue order, and numbering. No signup, no upload, and everything runs locally in the browser.
Open SRT validator