Zero server upload / No 2 MB file cap / Instant Blob download

Whisper SRT Max Characters Per Line Splitter

Pre-configured to 16 max characters per line and 1 line per cue so vertical 9:16 captions never clip behind TikTok, Instagram Reels, or YouTube Shorts UI overlays.

Quick Workflow Mode One click sets format, line width, line count, and speaker tags
No 2 MB cap / Zero upload
Detected: OpenAI Whisper verbose_json | 12 cues | Duration: 00:09.4 (9.4s) | Size: 3.1 KB
Line-Fit (<=16c) 100% (12/12)
Reading Speed 21.3 CPS (5 >20 CPS)
Words / Cues 25 words / 12 cues
Track Duration 00:09.4 (9.4s)
Auto-converts on edit or file drop

Cue Timing, Reading Speed & Line-Width Preview (First 25 Cues)

Showing 12 of 12 cues
# Start End Max Chars Speed Cue Lines
1 00:00:00,180 00:00:00,920 15 20.3 CPS
Welcome back to
2 00:00:00,940 00:00:01,620 15 22.1 CPS
the engineering
3 00:00:01,640 00:00:02,120 8 16.7 CPS
podcast,
4 00:00:02,940 00:00:03,780 16 19.0 CPS
today we convert
5 00:00:03,800 00:00:04,620 16 19.5 CPS
raw Whisper JSON
6 00:00:04,640 00:00:04,980 15 44.1 CPS
directly inside
7 00:00:04,990 00:00:05,120 13 100.0 CPS
your browser.
8 00:00:05,840 00:00:06,740 15 16.7 CPS
Word timestamps
9 00:00:06,780 00:00:07,380 9 15.0 CPS
keep fast
10 00:00:07,420 00:00:07,980 10 17.9 CPS
short-form
11 00:00:08,020 00:00:08,840 14 17.1 CPS
captions crisp
12 00:00:08,880 00:00:09,420 13 24.1 CPS
and readable.

Browser-Local Pipeline

How It Works in 3 Steps

Pre-tuned for Short Video Splitter with instant client-side conversion and zero file size caps.

  1. 01

    Paste or Drop Local ASR JSON

    Drop a .json file onto the highlighted upload box, paste raw API output, or pick one of five built-in ASR dialect samples. Multi-megabyte multi-hour files parse in local browser RAM with zero server upload.

  2. 02

    Select a Layout Pill & Check CPS Health

    Tap a one-click mode pill (Broadcast 42c x 2, TikTok/Shorts 16c x 1, Podcast Speaker Tags, or WebVTT Player) and watch the live Cue Health Summary flag >20 CPS fast cues and line-fit compliance.

  3. 03

    Verify Timings & Download Subtitles

    Inspect exact timestamps and per-cue character counts in the preview table, apply a positive or negative millisecond sync offset if needed, then copy or download .srt, .vtt, .txt, or .csv immediately.

Preset Specification & Field Mapping

JSON Schema Notes & Format Field Reference for Short Video Splitter

Detailed parser behavior for this workflow alongside field references for all five supported speech-to-text JSON dialects.

Active preset rules (/short-video-caption-splitter/)

  • Locks default wrapping to maxCharsPerLine of 16 and maxLinesPerCue of 1, producing punchy 2-to-4-word captions tailored for large bold fonts inside 1080x1920 vertical safe zones.
  • Uses word-level startSec and endSec timings so rapid short-form speech snaps onto screen on the exact spoken syllable rather than drifting across multi-sentence blocks.
  • Breaks cues early on natural micro-pauses (0.35s gap threshold) and caps cue duration at 2.5 seconds to maintain brisk visual pacing.
  • Displays the exact maximum character count and reading speed of generated cues so editors can verify safe-zone compliance before importing into CapCut, Premiere Pro, or DaVinci Resolve.
verbose_json Float seconds (1.62)

OpenAI Whisper & faster-whisper

  • segments[].start / end / text
  • words[].word / start / end
  • segments[].words[]

Uses exact word timings when present and falls back to proportional word-boundary splitting on segment-only payloads.

Diarized JSON Float seconds (4.36)

WhisperX + pyannote.audio

  • segments[].speaker
  • segments[].words[].speaker
  • word_segments[]

Splits cues on speaker turn changes and interpolates missing timestamps on unaligned digits or currency symbols.

-oj / -ojf Integer ms (4220)

whisper.cpp Local CLI

  • transcription[].offsets.from / to
  • transcription[].timestamps.from / to
  • transcription[].text

Prioritizes integer millisecond offsets for drift-free timing and falls back to HH:MM:SS,mmm string parsing.

REST / SDK JSON Float seconds (5.44)

Deepgram Nova-2 & Nova-3

  • results.channels[0].alternatives[0].words[]
  • results.utterances[].speaker
  • words[].punctuated_word

Prefers punctuated_word capitalization and maps integer speaker indices into clean Speaker N prefixes.

Utterances JSON Integer ms (6120)

AssemblyAI Transcripts

  • utterances[].start / end / speaker
  • utterances[].words[]
  • words[].text / start / end

Auto-scales integer millisecond word and utterance timings to seconds without colliding with float Whisper schemas.

4 Export Targets Comma vs dot ms

SRT, WebVTT, CSV & TXT Output

  • SRT: HH:MM:SS,mmm
  • VTT: WEBVTT + HH:MM:SS.mmm
  • CSV: index,start,end,speaker,text

Clamps negative sync offsets safely at 00:00:00,000 and guarantees minimum 50 ms cue duration for NLE timelines.

Internal Subtitle Tool Matrix

Switch between all six specialized Whisper and ASR subtitle converters with pre-tuned line widths, speaker diarization labels, and export formats.

Technical FAQ for whisper srt max characters per line

Why do Whisper CLI --max_line_width and --max_line_count often fail or error out?
In Python Whisper CLI, passing --max_line_width or --max_line_count throws an error unless --word_timestamps True is also enabled, and changing your target width from 42 chars (YouTube 16:9) to 16 chars (Reels 9:16) otherwise requires re-running GPU transcription. Splitting from saved word-level JSON takes under 10 milliseconds in your browser.
What happens when a single spoken word is longer than the max characters per line setting?
Single Latin words that exceed the configured character threshold stay intact on their own single-word cue rather than hyphenating mid-word, preserving clean readability during fast playback.
What character limit works best for TikTok, Reels, and YouTube Shorts?
For large center-screen bold subtitles (65 to 85 pt on a 1080px canvas), 14 to 18 characters on 1 line keeps every word inside the central safe margin away from right-side action buttons. For standard two-line lower-third captions on horizontal 16:9 video, switch Max chars to 42 and Max lines to 2.

Why browser-local parsing beats 2 MB paywalled cloud converters

An hour-long Whisper transcript with word-level timestamps routinely reaches 3 MB to 8 MB of JSON. Cloud upload tools meter that file size behind subscriptions while exposing private audio transcripts to remote storage.

Capability JSON to SRT Local Engine Paywalled Cloud Converters
JSON file size limit No artificial cap; parses >5 MB multi-hour transcripts in milliseconds Blocks uploads over 1 MB or 2 MB without a paid plan
Data privacy & NDA compliance Zero bytes leave your browser tab; safe for client, legal, and medical audio Uploads raw transcript JSON to remote servers and third-party buckets
ASR dialect coverage Auto-detects OpenAI verbose_json, WhisperX, whisper.cpp, Deepgram, AssemblyAI Breaks when segments[] is missing or timestamps use integer milliseconds
Cue line-width wrapping Live 8 to 84 char wrapping, 1 or 2 lines per cue, word-level timing split Exports raw 100-character decoder blocks that overflow video frames
Speaker labels & sync offset Instant [SPEAKER_XX] prefixes, turn-boundary breaks, and millisecond offset Drops pyannote speaker fields or requires manual desktop retiming