How to Fix Corrupted Subtitles & UTF-8 BOM Import Errors
Fix damaged subtitle files that fail to import in Premiere Pro or DaVinci Resolve. Diagnose UTF-8 Byte Order Marks, CRLF line endings, and inverted timecodes.
Why Video Editors Reject Seemingly Normal Subtitle Files
Video editors frequently encounter cryptic errors when importing subtitle files: "The file has an unsupported format or is damaged" (Premiere Pro) or silent import failures where only the first 10 cues appear on the timeline (DaVinci Resolve).
Subtitle parsers in non-linear editing software are remarkably fragile. While human readers overlook minor syntax inconsistencies, NLE ingestion engines halt immediately when encountering non-standard byte sequences.
The 4 Structural Defects That Break Subtitle Files
1. The UTF-8 Byte Order Mark (BOM)
The Byte Order Mark is a legacy Unicode sequence (0xEF 0xBB 0xBF) intended to signal endianness in byte streams. Because UTF-8 is byte-oriented and has no endianness, the W3C and Unicode Consortium officially discourage using BOMs in UTF-8 documents.
However, default Windows applications (such as Windows Notepad when saving as UTF-8) still insert this 3-byte prefix. When an NLE opens the file, it reads:
\uFEFF1
00:00:01,000 --> 00:00:04,000
First dialogue line
The parser expects the integer 1 on line 1, encounters the hidden \uFEFF character instead, and aborts with a damaged file alert.
2. Mixed Line Endings (CRLF vs LF)
Windows uses Carriage Return + Line Feed (\r\n / CRLF), while macOS and Linux use Line Feed (\n / LF). When subtitle files are edited across different operating systems, line endings can become inconsistent.
A parser expecting blank lines (\n\n) to delimit subtitle blocks fails when encountering mixed \r\n\n sequences, resulting in merged cues or skipped blocks.
3. Inverted Timestamps (Start Time > End Time)
An inverted timestamp occurs when a cue start timecode is greater than its end timecode (e.g., 00:01:25,000 --> 00:01:22,000). This creates a negative duration of -3,000 ms.
Timeline software cannot render a negative duration layer on an edit track. Depending on the software, inverted cues cause playback crashes or freeze rendering during video export.
4. Zero-Gap & Micro-Overlap Collisions
When speech is rapid, transcribers often snap Cue 2 start time to the exact millisecond Cue 1 ends:
1
00:00:01,000 --> 00:00:04,500
First speaker dialogue.
2
00:00:04,500 --> 00:00:07,000
Second speaker starts immediately.
In digital video, timecodes resolve to whole video frames. At 24 fps, each frame lasts 41.67 ms. Having two cues share timestamp 00:00:04,500 creates a 1-frame collision where both captions demand rendering space simultaneously. DaVinci Resolve frequently resolves this by dropping the second cue entirely.
How SubPreflight Safe Auto-Repair Resolves Syntax Bugs
SubPreflight applies non-destructive structural repair rules verified against the SMPTE Timed Text specification:
- BOM Removal: Strips leading byte order markers while preserving UTF-8 multi-byte characters and accents.
- Line Ending Unification: Normalizes all line breaks to standard Unix LF (
\n). - Timestamp Comma Normalization: Converts period millisecond separators in SRT files to compliant commas.
- Sequential Renumbering: Re-indexes cue numbers from
1sequentially without touching cue timing. - Empty Cue Pruning: Removes empty blocks that contain timestamps but no text payload.
Frequently Asked Questions
- What is a UTF-8 Byte Order Mark (BOM) and why does it break subtitles?
- A BOM is a 3-byte marker (0xEF 0xBB 0xBF) that Windows applications like Notepad insert at the very beginning of a file. When video editors parse line 1, they see the BOM attached to cue number 1 (e.g., "\uFEFF1"), fail to parse it as an integer, and reject the entire file as damaged.
- How does SubPreflight safe repair fix files without changing dialogue?
- SubPreflight isolates structural syntax rules (line endings, BOM stripping, comma normalization, sequential renumbering) from text payload. Your dialogue wording, punctuation, line breaks, and intended timing are never modified without explicit consent.
- Why does DaVinci Resolve drop cues that overlap by 1 millisecond?
- DaVinci Resolve tracks do not allow two text cues to occupy the same frame simultaneously on a single subtitle track. If Cue 1 ends at 00:00:05,000 and Cue 2 begins at 00:00:05,000 without a frame gap, the timeline collision causes DaVinci to discard the second cue.
- Can corrupted subtitles cause audio sync drift?
- Usually no. Corrupted subtitles cause import crashes, missing lines, or scrambled character symbols (é instead of é). Timing drift is caused by framerate mismatches.