Text to SRT Converter

Paste text below, get a valid .srt subtitle file with reading-speed-appropriate timings. Runs in your browser — no signup, no upload.

Text → SRT Converter

0 characters · 0 cues

Paste text on the left to see the generated SRT here.

This tool computes cue timings from character count and reading speed (CPS) — no audio required. If you have the audio too and need real alignment, upload it here for accurate timestamps (60 min free, no credit card).

Last verified July 12, 2026

Have the audio too? Get real alignment

Text-only timing is math, not truth.The tool above computes cue durations from character count and reading speed — it produces plausible timings, but they don’t match what was actually said when. For that, you need forced alignment against real audio.

If you have the audio too, upload it to our audio-to-SRT flow. We transcribe the audio and produce word-level timestamps in the same pass — accurate to the millisecond. Processing takes roughly 1 minute per 1 hour of audio.

Free tier:60 minutes, no credit card required. For anything where timing accuracy matters (legal, medical, broadcast delivery, accessibility compliance), that’s the right path.

Upload audio for real alignment

How the timing math works (transparent)

The tool computes each cue’s duration from character count and reading speed (CPS — characters per second). This is the same math professional subtitlers use — the only difference is that pros then adjust each cue against the audio they can hear.

The formula

cue duration (ms) = max(minDuration, (chars_without_spaces / cps) * 1000)

What CPS actually means

  • 15 CPS— slower, easier to read. Good for children’s content or complex material.
  • 17 CPS— Netflix’s default for adult content. What most professional subtitles target.
  • 20 CPS— BBC’s maximum. Only for shorter on-screen durations.
  • 25+ CPS— viewers can’t keep up. Auto-caption tools that ignore this rule produce unreadable captions.

Why line length matters

42 characters per line (Netflix) and 37 (BBC broadcast) are industry defaults. Wider lines wrap mid-word, get clipped on widescreen TVs, and overlap on-screen graphics. The widget wraps automatically at word boundaries.

Two lines per cue, max

Three-line cues signal something else is wrong — usually a cue duration that should have been split into two shorter ones. The widget respects the 2-line max and splits automatically when text is too long.

When text-only timing is fine

  • Translation projects— you’re mimicking the timing of an existing source SRT
  • Script-first content — planning a shot list with subtitle timings before recording
  • Rough drafts— for internal review or handoff to an editor who’ll sync-adjust in Subtitle Edit / Aegisub
  • Educational subtitles where exact sync is less critical (asynchronous course content, static slideshow-style videos)
  • Screenwriter samples— pitch decks or read-throughs where the “when” doesn’t exist yet
  • Starting point for hand-tuning — download, open in Subtitle Edit, then sync each cue against your audio

When you actually need forced alignment

  • Legal / medical — exact timestamps carry evidentiary weight
  • Broadcast delivery — broadcaster QC will flag timing drifts and reject submissions
  • Accessibility compliance WCAG 2.1 SC 1.2.2 requires captions synchronized with audio
  • Long-form content with variable pacing — interviews, podcasts, lectures where reading-speed math drifts over an hour
  • Multi-speaker content— speakers change timing dynamically; math-based cues won’t match speaker transitions
  • Music-heavy content— reading speed doesn’t predict when a lyric hits a beat

For any of these, upload the audio and let real alignment produce accurate timestamps.

SRT format reference (for hand-editing)

Each SRT cue has four parts: an index number, a start-to-end timestamp, one or two lines of text, and a blank line before the next cue.

1
00:00:01,200 --> 00:00:03,800
First line of subtitle text.

2
00:00:04,000 --> 00:00:06,500
Second cue, optionally on
two lines maximum.

Timestamps are HH:MM:SS,mmm — hours, minutes, seconds, three-digit milliseconds. Note the commabefore the milliseconds (WebVTT uses a period; that’s the main format difference).

Save as UTF-8 without BOM to avoid character encoding issues on non-ASCII text. Full format spec, encoding gotchas, and troubleshooting: see the SRT Generator + Guide.

Common failures and fixes

Timing drifts as the video plays

Text-only timing math produces plausible durations but won’t match actual speech. Over 10+ minutes, cues accumulate drift. Fix: use audio alignment instead, or hand-tune each cue against the audio in Subtitle Edit.

Reading speed too fast (cues disappear before you finish reading)

Reduce the CPS setting (15 or 17 instead of 20+), or split long cues into shorter ones manually with the --- separator option.

Lines wrap mid-word

Your source text has a word longer than maxCharsPerLine. Increase the max line length (50) or edit the source to break the word manually.

Encoding garbled (é shows as é)

The downloaded SRT is UTF-8, but if you re-open it in a text editor and save with a BOM or Windows-1252, characters break. Save as UTF-8 without BOM from any modern editor (VS Code, Notepad++, Sublime).

Chinese / Japanese / Korean timing wrong

CJK characters carry more information per character than Latin characters. Netflix’s CJK guideline is 9 CPS, not 17. For CJK text, set CPS to 15 or lower for readable timings.

  • Audio to SRT (real alignment) Upload audio, get transcript + word-level timestamps. When timing has to match what was actually said.
  • SRT Generator + Guide Full SRT format explainer — anatomy, timing rules (BBC/Netflix), encoding gotchas, and 4 ways to generate.
  • Video to SRT Full video → .srt workflow. Extract, attach as soft-sub, burn-in with FFmpeg or NLE.
  • Caption Generator Generate captions on any video with force_style styling reference for social media platforms.
  • What Is Closed Captioning? Closed vs open captions vs subtitles vs SDH. Legal requirements. File formats.

Frequently Asked Questions

How does text-to-SRT timing work if I don't upload audio?

The tool computes cue durations from character count and reading speed (CPS — characters per second). Netflix uses 17 CPS as the standard for adult content; BBC allows up to 20 CPS. So a 34-character cue gets a 2-second duration at 17 CPS. This gives you plausible timings that a reader could keep up with, but they won't match what was actually said when — for that, you need forced alignment against real audio.

When is text-only timing good enough?

For rough drafts, translation projects where you're mimicking a source SRT's timing, script-first content, educational subtitles where exact timing is less critical, and screenplays being converted for pitching. Also useful when you want to hand-tune timings later in Subtitle Edit or Aegisub — this tool gives you a valid starting point instead of typing SRT from scratch.

When do I actually need audio-aligned SRT?

Legal or medical (exact timestamps matter). Broadcast delivery (broadcaster QC flags drifts). Accessibility compliance (WCAG requires accurate sync). Long-form content with variable pacing. Multi-speaker content. Anything where the subtitle needs to appear at the moment a specific word is spoken. For those, upload the audio — our transcription flow produces both the text and word-level timestamps in the same pass.

What's the difference between this and your /audio-to-srt page?

/audio-to-srt takes an audio file and produces both the transcript AND the timing in one flow (real forced alignment). This page takes existing text and produces plausible timing math (no audio needed). If you have audio, use /audio-to-srt — the timing will be actually correct. If you only have text (translated dialogue, existing transcript, script), use this tool.

Is the tool actually free?

Yes. It runs entirely in your browser — no signup, no upload, no server calls, no file limits. The generated SRT downloads directly from your device. We built it as a real utility, not as a signup wall. The paid part of DeluxeScribe is the audio transcription service (/audio-to-srt) which is a different tool that solves a different problem.

How do I split my text into cues?

Three options in the widget: (1) Blank line — put a blank line between each cue's text. Default and most flexible. (2) Sentence — auto-split on sentence-ending punctuation. Good for prose or dialogue without existing cue breaks. (3) Manual separator — use `---` on its own line between cues. Best when you want explicit control over cue boundaries.

Why do my cues wrap into two lines?

The widget respects the max characters per line setting (42 by default — the Netflix standard). Lines longer than that get wrapped at word boundaries. If a wrapped cue exceeds max lines per cue (2 by default), the widget splits it into multiple cues automatically. To keep single-line cues, reduce line length or split text into shorter chunks manually.

How do I add these subtitles to a video after downloading?

Soft-attach (viewer toggles on/off): use FFmpeg — `ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4`. Burn-in (permanent): `ffmpeg -i video.mp4 -vf subtitles=subtitles.srt output_burned.mp4`. In NLEs: Premiere Pro (Captions panel → Import), DaVinci Resolve (Timeline → Import Subtitles), Final Cut Pro (Edit → Captions → Import Captions). Full guide at /video-to-srt.