Home › Tools › Plain Text to SRT Converter

Plain Text to SRT Converter

Turn a transcript — one line per caption — into a valid .srt file with evenly spaced timing you can retime later.

Drop a subtitle file here, or
Each cue lasts seconds Start at s Wrap lines at characters (0 = no wrap)

Your file never leaves your device

This tool is plain JavaScript. There is no upload step and no server-side processing, so confidential captions, unreleased content and client material stay on your machine.

What this does

Sometimes there is no subtitle file to convert — only a transcript. A meeting recording, a YouTube transcript panel, a translated script, a set of narration lines. This tool turns that text into a structurally valid .srt so it can be loaded into an editor, handed to a client or played back immediately. The timing it produces is evenly spaced, which means it is a scaffold to align rather than a finished sync.

How to use it

  1. Paste the transcript into the box — one caption per line. Blank lines are ignored, so pasted documents do not produce empty cues.
  2. Set how many seconds each cue should last, an optional start offset, and a maximum line length if you want long lines wrapped automatically.
  3. Copy the result or download it as a .srt, then align it to the audio in your editor.

Good to know

  • One line becomes one cue. Blank lines and lines that are only whitespace are skipped entirely.
  • Cue duration applies to every cue equally. There is no per-line override — if you need variable durations, generate the file and adjust the cues you care about in an editor.
  • Maximum line length defaults to 42 characters, the long-standing subtitling convention — longer lines are split on word boundaries into as many lines as needed, and each piece becomes its own cue. Set it to 0 to disable wrapping and keep one source line per cue.
  • The start offset shifts the whole file later, which is useful when a recording opens with silence or a title card. It does not add an initial gap of its own.
  • No transcription happens here. This tool formats text you already have; it does not listen to audio.

Evenly spaced timing is a scaffold, not a sync

Be clear about what this does. The tool cannot know when each line is spoken, because a plain transcript contains no timing information. So it assigns every cue the same duration, back to back. If your cue duration is 2.5 seconds and you have 200 lines, the file runs to roughly eight minutes and twenty seconds — regardless of how long the recording actually is.

What that is genuinely useful for. A scaffold gets you past the part of the job that is pure typing. Import the generated file into Subtitle Edit, Aegisub, Premiere or DaVinci Resolve and you have numbered cues with real timestamps to drag against the waveform. Retiming a cue that already exists is far faster than authoring one from an empty track, and it guarantees the numbering and structure are valid from the start.

Fixing the timing afterwards. If the whole file is uniformly too early or too late, the shift tool adds or subtracts a fixed offset in one step. If the text was transcribed at the wrong speed — a common outcome when a transcript is generated from a clip played back at the wrong rate — the resync tool scales every timestamp by a ratio instead.

Where the defaults come from. 2.5 seconds per cue is roughly 150 words per minute, which sits comfortably inside the reading speeds broadcasters work to. A maximum line length of 42 characters is the long-standing convention for subtitling and captions, chosen because it keeps a line inside the safe area of a 16:9 frame at typical font sizes. Wrapping is done on word boundaries, never mid-word.

If you already have a subtitle file, use a different tool. Text that already contains timestamps is not plain text, and running it through here would turn every timestamp line into its own cue. Use VTT to SRT or SBV to SRT instead.

Worked example

Input — plain text
Welcome back to the channel.
Today we are converting captions.
Let's start with the timing.
Output — .srt
1
00:00:00,000 --> 00:00:02,500
Welcome back to the channel.

2
00:00:02,500 --> 00:00:05,000
Today we are converting captions.

3
00:00:05,000 --> 00:00:07,500
Let's start with the timing.

Three lines became three cues at the default 2.5 seconds each. The timestamps are placeholders — the next step is aligning them to the audio.

FAQ

Will the timing line up with my audio?
No, and no tool of this kind could. A plain transcript carries no timing information, so every cue gets the same duration. The output is a starting point to align in an editor, not a finished subtitle track.
Where do I get a transcript to start from?
YouTube's transcript panel gives you plain lines that paste in directly. Whisper and most speech-to-text services export plain text as well as SRT. Zoom and Teams meeting recordings produce transcripts too. Any of them will work.
How do I keep a long sentence in one cue?
Leave the maximum line length at 0 so nothing is wrapped, and put the whole sentence on a single line. Blank lines are what separate cues — a line break in the source is a cue boundary, not a soft wrap.
Does my text get uploaded anywhere?
No. The conversion runs in JavaScript on your device. Confidential transcripts, legal recordings and unreleased scripts stay on your machine.
Can I go the other way — strip a subtitle file down to plain text?
Yes. The remove timestamps tool does exactly that, with an option to merge repeated lines.

Troubleshooting

  1. Every cue is exactly the same lengthThat is the design. A transcript has no timing data, so the duration you set is applied to every cue. Retime them in your editor, or use the shift and resync tools if the error is uniform.
  2. Lines were split in the middle of a sentenceThe maximum line length is doing it. Wrapping only happens when a line exceeds that value, so raise it or set it to 0 to keep each source line as a single cue.
  3. The first cue starts at 00:00:00 when I wanted a delaySet the start offset to the number of seconds of silence at the top of the recording. That value is added to every cue, so the gap stays consistent.
  4. Some lines are missing from the outputBlank lines are treated as separators and skipped, and so is any line that is only spaces. If a line you expected is gone, it was empty in the source.
  5. The output looks like a normal subtitle file but nothing lines upExpected for the reason above. This tool produces valid structure with placeholder timing. Use the shift tool for a constant offset, or resync if the whole track is compressed or stretched.

Related tools

Last updated 2026-09-21. All conversions happen locally in your browser.