A plain text file has no timing information, and an SRT file is almost entirely timing information. So converting one to the other is not really a file conversion. Except for LRC, which already contains timestamps and converts mechanically, you are adding timing that does not exist yet, and that means either syncing the text against audio or setting the times yourself.
This catches people out. You search for a TXT to SRT converter, upload your file, and get back subtitles where every line appears for two seconds regardless of how long it takes to say. Technically an SRT. Useless as subtitles.
This guide covers what each format actually needs, and the three routes that produce usable output.
Why text to SRT is not a normal conversion
An SRT entry is four parts: a number, a start and end time, the text, and a blank line.
1
00:00:04,000 --> 00:00:08,000
So the first thing to understand about subtitles
A text file gives you line three. Lines one and two have to come from somewhere else.
That somewhere is either the audio the text corresponds to, or your own judgement about pacing. There is no third option, and any tool claiming to convert text to SRT without one of those is guessing.
LRC is the exception, and it is why that conversion is genuinely automatic. More on it below.
How to convert a text file to SRT
- Check whether your file already contains timestamps. LRC and ITT do. TXT, DOC, DOCX and RTF do not.
- If it has timestamps, use a converter or a subtitle editor to remap them to SRT format.
- If it has no timestamps, open the text and the matching audio together in a subtitle editor and sync them.
- Save as .srt and check the first and last few entries against the audio.
LRC to SRT: a real conversion
LRC is a lyrics format, and it already carries timing. A line looks like this:
[00:12.34]So the first thing to understand
That is a start time and some text. Everything an SRT entry needs except an end time, and the end time can be inferred: each line runs until the next line begins.
So the conversion rule is mechanical:
- The LRC timestamp becomes the SRT start time, reformatted from
[mm:ss.xx]toHH:MM:SS,mmm. Note the comma, not a period. - The following line's timestamp becomes this entry's end time.
- The final line has no following timestamp, so give it a sensible duration, typically three to five seconds.
- Number the entries sequentially and separate them with blank lines.
Subtitle Edit handles this directly: open the .lrc, then File, Save as, and choose SubRip (.srt). Aegisub can also open LRC files and export SRT.
One thing to check afterwards: LRC files often have a block of metadata at the top, lines like [ar:Artist] and [ti:Title]. Some converters turn these into subtitle entries at 00:00. Delete them.
ITT to SRT
ITT is Apple's caption format, used by Final Cut Pro and iTunes. Like LRC it already has timing, so this is a genuine conversion rather than a re-timing job.
Subtitle Edit opens ITT and exports SRT directly. Expect to lose styling: ITT supports positioning, colour and italics that SRT has no equivalent for, so those attributes are dropped. The text and timing survive intact.
TXT, DOC, DOCX and RTF to SRT
None of these carry timing. You are not converting, you are timing a script. Three routes, in order of how good the result is.
Route 1: Sync against the audio
The best result, and less work than it sounds. Subtitle Edit has an auto-sync feature: give it your text file and the matching audio, and it aligns the text to the speech automatically. Open the audio, then File, Import, Plain text, then use Auto-translate or the sync tools to align.
This works well when the text is an accurate transcript of the audio. It degrades when the text is a script that the speaker paraphrased, because the aligner cannot match words that were never said.
Route 2: Time it manually in a subtitle editor
Load the audio in Subtitle Edit or Aegisub, paste your text, and set start and end points against the waveform. Slow, but it is the only route that gives exact control, and it is what you want for song lyrics, comedy timing, or anything where a subtitle landing a beat early is noticeable.
Route 3: Even distribution, the last resort
Some converters spread your lines evenly across a duration you specify. This produces a valid SRT that will drift out of sync within the first minute of anything with natural speech rhythm.
It is defensible in one case: as a starting skeleton you will then correct manually. It is not defensible as a finished file.
Preparing the text first
Whichever route, the output is better if the text is cleaned up before you start:
- Save Word and RTF as plain text first. DOC, DOCX and RTF carry formatting that subtitle tools either ignore or mangle. File, Save as, Plain Text (.txt) in Word gives you a clean starting point.
- Watch for smart quotes. Word converts straight quotes to curly ones. Most players handle them, some older ones do not, and they can encode badly if the file is not saved as UTF-8.
- One subtitle per line. Subtitle tools generally treat each line as one entry. If your text is in paragraphs, break it into subtitle-length lines first, around 42 characters, before importing.
- Remove speaker names if they are not meant to be shown. A script with "NARRATOR:" at the start of every line will put that in every subtitle.
The format is the easy part
Once you have timing, writing the file is trivial. The SRT format is plain text, and these are the details people get wrong:
| Rule | Correct | Common mistake |
|---|---|---|
| Millisecond separator | 00:00:04,000 | 00:00:04.000 with a period |
| Arrow | --> with a space either side | -> or no spaces |
| Hours field | Always present, 00: if under an hour | Omitting it for short files |
| Numbering | Sequential from 1, no gaps | Gaps after deleting an entry |
| Blank lines | One after every entry, including the last | No trailing blank line |
| Encoding | UTF-8 | UTF-8 with BOM, or ANSI |
If a file will not load, it is nearly always one of these. Open it in a plain text editor and check the first entry character by character.
When you have audio instead of a script
Everything above assumes you already have the text. If you have the recording and need both the text and the timing, skip this entirely: generate the SRT from the audio directly and you get accurate timing for free.
OmniveraLabs' SRT generator takes an MP3, WAV, M4A, MP4 or MOV and returns a timed .srt file. Our guide to converting audio to SRT covers that route in detail.
This is worth considering even if you already have a script. Generating from audio and then correcting the words against your script is often faster than timing the script by hand, because the timing is the slow part and the words are the quick part.
Working from a recording rather than a script? OmniveraLabs' free SRT generator produces a timed .srt file directly from audio or video, so the timing is handled for you.