How to rip closed captions from an mp4 locally
- Step 1Drop the MP4 onto the extractor — Drag your
.mp4(or.mov,.m4v) onto the tool. It is processed one file at a time, locally — the recording never touches a server. FFmpeg.wasm loads in the page on first use. - Step 2No options to set — The panel shows No options — JAD reads the embedded tracks and exports them. There is nothing to configure: JAD scans the container's subtitle streams (
0:s:0–0:s:4) automatically. - Step 3JAD converts the caption stream to SRT — Each text caption track (
mov_textin most MP4s) is converted to SubRip with-c:s srt. Timing and text are preserved exactly. Most MP4s carry a single caption stream, so expect one.srt. - Step 4Download the .srt (or ZIP) — A single caption stream downloads as
<name>.srt. In the rare case of multiple caption streams you get<name>-subtitles.zipwith<name>-track-1.srt,<name>-track-2.srt, etc. - Step 5Verify the transcript against the recording — Open the
.srtand spot-check a few cues against the audio. Auto-generated captions can contain ASR errors and mis-timed cues — the extractor copies them verbatim; it does not correct them. - Step 6Edit, redact, or archive — Use any text editor to redact names or fix timing, then keep the
.srtas the searchable transcript of record, or feed it to the subtitle burner if you need an on-screen version.
Caption types in an MP4 and what JAD can rip
JAD rips container-level soft TEXT subtitle streams. Other caption carriers are listed so you know which case you have.
| Caption carrier | Where it lives | Rippable here? | Notes |
|---|---|---|---|
mov_text soft subtitle | Container subtitle stream 0:s:0 | Yes → .srt | The standard MP4 caption format; converts cleanly to SubRip |
subrip / webvtt soft track | Container subtitle stream | Yes → .srt | Rare in MP4 but supported; converted to SubRip |
| CEA-608 / 708 embedded | Video stream user-data | Usually no | Not a 0:s subtitle stream — the map typically does not see it |
| Burned-in (hardsub) text | Video pixels | No | Part of the picture; no stream to demux — needs OCR |
| Bitmap (PGS/VobSub) in MP4 | Container, image-based | No | Picture subtitles cannot convert to SubRip text |
Sidecar .srt/.vtt | Separate file, not in MP4 | N/A | Already a text file — no extraction needed |
Privacy: where the work happens
Every step in ripping captions from a confidential MP4 runs on your device.
| Step | Location | What leaves your machine |
|---|---|---|
| Read MP4 into the page | Browser (local) | Nothing |
FFmpeg demux + -c:s srt | Browser via WASM | Nothing |
| SRT file generated | Browser memory | Nothing |
| Download .srt | Local download | Nothing — file written to your disk |
| Usage counter (if signed in) | Server | A count only — no video, no caption text |
Tier limits for caption ripping
Long depositions and meeting recordings are fine — the cap is file size, not minutes.
| Tier | Max file size | Files at once |
|---|---|---|
| Free | 1 GB | 1 |
| Pro | 10 GB | 5 |
| Pro-media | 100 GB | 50 |
| Developer | 100 GB | Unlimited |
Cookbook
Caption-ripping scenarios from real recordings. Names anonymised.
Deposition MP4 with a mov_text caption → SRT transcript
A recorded deposition was captioned in post and the captions live in the MP4 as a mov_text stream. Ripping locally gives a searchable transcript without sending the file to any service.
Input: deposition-2026-03-14.mp4 Stream 0:s:0 mov_text (eng) Output: deposition-2026-03-14.srt 1 00:00:12,400 --> 00:00:15,800 Please state your name for the record. 2 00:00:16,100 --> 00:00:18,900 [WITNESS], spelled...
MP4 with no subtitle stream → error
A phone recording of a meeting has audio but was never captioned. There is no subtitle stream to map, so the rip returns the no-text error rather than an empty file.
Input: team-call.mp4 Stream 0:v:0 h264 Stream 0:a:0 aac (no 0:s stream) Result: No text subtitle tracks found in this video. Note: the recording was never captioned — there is nothing to extract. For a transcript you would need a (local) speech-to-text step first.
Hardsubbed screener → not extractable
A review screener had captions burned into the frames so they could not be turned off. Those are pixels, not a stream — nothing to rip.
Input: screener-v3.mp4 (captions visible, baked into picture) Stream 0:v:0 h264 ← captions are inside these frames (no 0:s stream) Result: No text subtitle tracks found in this video. Fix: OCR the rendered frames with a desktop subtitle OCR tool.
Redacting names after a local rip
Once the .srt is on disk, redaction is a plain text-edit — no special tooling, and the original MP4 is untouched.
deposition.srt (before): 3 00:01:02,000 --> 00:01:04,500 My name is Jane Doe, account 4471. (after manual edit): 3 00:01:02,000 --> 00:01:04,500 My name is [REDACTED], account [REDACTED].
Verifying ASR caption timing against audio
Auto-generated MP4 captions sometimes lag the speech. The extractor copies the timing verbatim — fix drift in a subtitle editor after ripping.
Extracted cue (lags ~400 ms): 7 00:02:31,400 --> 00:02:33,900 The quarterly numbers were strong. After manual nudge (-0.4s) in a subtitle editor: 7 00:02:31,000 --> 00:02:33,500 The quarterly numbers were strong.
Edge cases and what actually happens
MP4 captions are CEA-608/708 in the video stream
Usually skippedEIA/CEA-608 and 708 captions ride inside the video stream's user data, not as a container subtitle stream, so the 0:s map generally does not pick them up. This tool rips container-level soft subtitle tracks (mov_text/subrip). If the file has a true soft caption stream, it rips; raw embedded line-21-style captions usually do not.
Captions are burned into the picture
Not extractableIf the captions are visible but cannot be toggled off in a player, they are burned-in pixels, not a stream. There is no 0:s track, so the rip returns the no-text error. Recovering them requires OCR on rendered frames.
Auto-generated captions contain ASR errors
Copied verbatimThe extractor demuxes and converts the existing track exactly; it does not transcribe or correct. Misheard words and slightly-off timing in machine captions come through unchanged. Proofread the .srt against the audio after ripping.
MP4 has zero subtitle streams
No text tracksMost phone recordings and screen captures were never captioned. The first 0:s:0 map fails and you get No text subtitle tracks found in this video. There is no embedded caption to recover.
Bitmap subtitle stream inside an MP4
SkippedIf the MP4 (or an MKV you opened) carries an image-based subtitle stream, -c:s srt cannot encode the picture as text, so that track is skipped. If it is the only track, you get the no-text error. OCR it with a desktop tool.
Garbled accents in the ripped SRT
Source encodingThe caption stream may have been authored in a legacy single-byte encoding. JAD writes the SRT as FFmpeg decodes it; there is no force-UTF-8 toggle here. Re-save the .srt as UTF-8 in a text editor if accents look wrong.
Recording exceeds your tier's file cap
413 Too largeFree caps at 1 GB per file. A long, high-bitrate deposition recording can exceed that even though the caption text is tiny — the whole MP4 must be read into the browser. Upgrade the tier or trim the recording with the lossless trimmer first if you only need part of it.
Two caption languages in one MP4
ZIP outputIf the MP4 carries more than one text caption stream (e.g. English and Spanish), JAD returns a ZIP with one .srt per stream, numbered by order. SubRip has no language tag, so open each to confirm which language it is.
Frequently asked questions
Is the MP4 uploaded when I rip captions?
No. The entire operation runs in your browser via FFmpeg.wasm — the file is read locally and the SRT is generated on your device. Nothing about the video or its captions is sent to a server, which is exactly what you want for confidential recordings.
What caption formats can it rip from an MP4?
Container-level soft text subtitle streams — most commonly mov_text, and also subrip/webvtt if present. They are all converted to SubRip (.srt). Image-based and burned-in captions cannot be ripped to text.
Will it grab CEA-608 / line-21 captions?
Usually not. Those captions live in the video stream's user data rather than as a container subtitle stream, so the subtitle map (0:s) typically does not see them. If the file has a proper soft caption stream, it rips fine.
Can it rip captions that are burned into the video?
No. Burned-in captions are part of the picture, not a separate stream, so there is nothing to demux. You would need OCR on the rendered frames, which is outside this tool. To add burned-in captions, use the subtitle burner.
What format is the output?
Always SubRip (.srt) — plain text, searchable, and editable in any program. Even a mov_text source comes out as standard SRT because JAD runs -c:s srt on every text track.
Does ripping captions change my MP4?
No. Extraction is read-only on the video — it demuxes the caption text and converts it; the original MP4 is never re-encoded or modified. Only a new .srt (or ZIP) is produced.
Do the captions get corrected or cleaned up?
No. The extractor copies the embedded caption track verbatim, including any ASR errors or timing drift in auto-generated captions. Proofread and re-time the .srt afterwards in a subtitle editor if needed.
Can I rip a very long deposition or meeting recording?
Yes — there is no duration cap, only a file-size cap: 1 GB on Free, 10 GB on Pro, 100 GB on Pro-media and Developer. If a high-bitrate recording is over the cap, trim it first with the lossless trimmer.
Is the caption text stored anywhere on JAD's side?
No. The only server-side write is an anonymous usage counter (a number, for signed-in dashboard stats) — no video, no frames, and no caption text are ever transmitted or stored.
What if my MP4 has no captions at all?
You will see No text subtitle tracks found in this video. That means the recording was never captioned — there is no embedded text to extract. You would need a separate (ideally local) transcription step to create captions from the audio.
Why are accented characters wrong in the output?
The embedded caption stream was probably authored in a legacy encoding such as Windows-1252. JAD writes the SRT as FFmpeg decodes it and offers no encoding override. Open the file and re-save as UTF-8 to fix the accents.
What else can I pull out of the same MP4 locally?
Use the audio-track extractor to rip the audio, the chapter extractor for chapter markers, and the metadata scrubber to strip identifying metadata before sharing — all in-browser, nothing uploaded.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.