All Tools View Categories About Contact Privacy

Subtitle Extractor

Generate an ffmpeg command to extract subtitle tracks.

Runs entirely in your browser — no data is uploaded or stored.

Track indices start at 0; use ffprobe to list them if unsure.

About this tool & how to use it
  • Index-based track selection: The Subtitle track index field maps directly to ffmpeg's zero-based subtitle stream specifier, so you can reach the third language track by entering 2 rather than guessing at stream numbers.
  • No video re-encode: The generated command carries no filters, so ffmpeg leaves the picture untouched and only writes the subtitle stream, making extraction near-instant regardless of runtime or resolution.
  • Helpful default filename: Leaving Output file empty produces a name derived from the index, such as track0.srt, which keeps multi-track extraction jobs tidy and self-documenting.
  • Quoted paths: Both the input and output are wrapped in quotes, so directories with spaces or unicode characters do not break the command when you paste it into a shell.
  • Container-agnostic: The same command shape works for MKV, MP4 and other containers that ffmpeg can demux, so you do not need a different recipe per file type.
  • Copy or save as .txt: The result can go straight to the clipboard or be downloaded as a text file, ready to drop into a batch script that walks an entire season folder.
  • Pure string generation: Nothing is read from disk and nothing is uploaded; you run the extraction yourself with your local ffmpeg install.
  1. Run ffprobe yourfile.mkv first if you are unsure which tracks exist, and note the order in which the subtitle streams are listed.
  2. Enter the container path in the Video file box, for example S01E04.mkv.
  3. Put the zero-based number of the track you want into Subtitle track index, using 0 for the first subtitle stream and 1 for the second.
  4. Set Output file to the filename and extension you want, such as S01E04-en.srt, or leave it blank to accept the generated default.
  5. Press Run and check the produced command, confirming the -map 0:s: value matches the track you intended to pull.
  6. Copy the command or download the .txt, then execute it in a terminal where ffmpeg is installed.
  7. Open the extracted file in a text editor to verify the cue count and timings look right before sending it on for translation or QC.

Example 1 - grabbing the first subtitle track. A single-language MKV where you just want the captions as an editable SRT.

Track index: 0

ffmpeg -i "S01E04.mkv" -map 0:s:0 "S01E04-en.srt"

Example 2 - reaching a second language. The same file carries English and Spanish, so index 1 selects the Spanish stream.

Track index: 1

ffmpeg -i "S01E04.mkv" -map 0:s:1 "S01E04-es.srt"

Resulting file starts:
1
00:00:02,400 --> 00:00:05,120
Buenos dias, capitan.

One digit changes the whole deliverable, which is why the index is worth confirming with ffprobe before a batch run.

About Subtitle Extractor

The Subtitle Extractor writes the ffmpeg command that pulls an embedded caption track out of a container and saves it as a standalone file. Give it a Video file path, a Subtitle track index and an Output file name, and it returns one command line built on -map 0:s:N, ready to copy or download as .txt.

Subtitles hidden inside an MKV or MP4 are awkward to work with. Translators cannot open them in a CAT tool, QC staff cannot spellcheck them, and archivists cannot index them for search. Anyone inheriting a library of episodes with embedded soft tracks hits this: the text exists, it is just locked in the container.

Mechanically, -map 0:s:N selects the Nth subtitle stream of the first input counting from zero, so the second track is 0:s:1 rather than 0:s:2. No filter is applied, so ffmpeg writes the text stream without re-encoding video, which is why extraction finishes in seconds even on a two-hour master. The output extension you pick decides the target format, making a .srt output a clean one-to-one dump of the cues and their timings.

If you do not know how many tracks a file holds, run ffprobe first. The generator only builds a string in your browser, and no media is uploaded.

Features

  • Index-based track selection: The Subtitle track index field maps directly to ffmpeg's zero-based subtitle stream specifier, so you can reach the third language track by entering 2 rather than guessing at stream numbers.
  • No video re-encode: The generated command carries no filters, so ffmpeg leaves the picture untouched and only writes the subtitle stream, making extraction near-instant regardless of runtime or resolution.
  • Helpful default filename: Leaving Output file empty produces a name derived from the index, such as track0.srt, which keeps multi-track extraction jobs tidy and self-documenting.
  • Quoted paths: Both the input and output are wrapped in quotes, so directories with spaces or unicode characters do not break the command when you paste it into a shell.
  • Container-agnostic: The same command shape works for MKV, MP4 and other containers that ffmpeg can demux, so you do not need a different recipe per file type.
  • Copy or save as .txt: The result can go straight to the clipboard or be downloaded as a text file, ready to drop into a batch script that walks an entire season folder.
  • Pure string generation: Nothing is read from disk and nothing is uploaded; you run the extraction yourself with your local ffmpeg install.

How to Use

  1. Run ffprobe yourfile.mkv first if you are unsure which tracks exist, and note the order in which the subtitle streams are listed.
  2. Enter the container path in the Video file box, for example S01E04.mkv.
  3. Put the zero-based number of the track you want into Subtitle track index, using 0 for the first subtitle stream and 1 for the second.
  4. Set Output file to the filename and extension you want, such as S01E04-en.srt, or leave it blank to accept the generated default.
  5. Press Run and check the produced command, confirming the -map 0:s: value matches the track you intended to pull.
  6. Copy the command or download the .txt, then execute it in a terminal where ffmpeg is installed.
  7. Open the extracted file in a text editor to verify the cue count and timings look right before sending it on for translation or QC.

Examples

Example 1 - grabbing the first subtitle track. A single-language MKV where you just want the captions as an editable SRT.

Track index: 0

ffmpeg -i "S01E04.mkv" -map 0:s:0 "S01E04-en.srt"

Example 2 - reaching a second language. The same file carries English and Spanish, so index 1 selects the Spanish stream.

Track index: 1

ffmpeg -i "S01E04.mkv" -map 0:s:1 "S01E04-es.srt"

Resulting file starts:
1
00:00:02,400 --> 00:00:05,120
Buenos dias, capitan.

One digit changes the whole deliverable, which is why the index is worth confirming with ffprobe before a batch run.

Benefits

  • Locked text becomes editable: Once a track is out of the container you can retime it, translate it or reformat it with ordinary subtitle tools instead of re-authoring captions from scratch.
  • Seconds instead of hours: Because nothing is re-encoded, pulling captions from a long master costs almost no time or CPU, so you can process a whole library in one sitting.
  • Fewer wrong-track mistakes: Seeing the exact stream specifier before you run it makes it obvious when you have asked for the commentary track instead of the dialogue one.
  • Searchable archives: Extracted SRTs can be indexed, so an archive becomes full-text searchable and clip-finding stops being a manual scrub through timelines.
  • Private by construction: Your media never leaves your machine, which keeps unreleased episodes and client masters out of any cloud service.
  • Batch-friendly output: A copied command drops neatly into a shell loop, turning a repetitive per-episode chore into one scripted pass.

Frequently Asked Questions

Which track index do I use?
The first subtitle track is usually 0 (ffmpeg counts s:0, s:1, …). Check with ffprobe if unsure.
Is it re-encoded?
No, the stream is copied, so quality is preserved and it is fast.
Do you run it?
No, we generate the command for you to run locally.
Is my file uploaded?
No, command generation is local.