Delete Specific Subtitle from MKV with FFmpeg

This article explains how to remove a specific subtitle stream from an MKV container using FFmpeg’s stream mapping functionality. By utilizing negative mapping, you can target and exclude an unwanted subtitle track—such as a specific language or commentary track—while preserving all other video, audio, and subtitle streams without undergoing a time-consuming re-encoding process.

Step 1: Identify the Subtitle Stream Index

Before you can delete a specific subtitle, you need to identify its index number. Run the following command in your terminal to inspect the streams inside your MKV file:

ffmpeg -i input.mkv

Look at the output lines starting with Stream #0:. You will see listings for video, audio, and subtitles. Note the index of the subtitle stream you want to remove. For example: * Stream #0:2: Subtitle: subrip (This is subtitle index 0:s:0) * Stream #0:3: Subtitle: subrip (This is subtitle index 0:s:1)

Step 2: Run the FFmpeg Command using Negative Mapping

FFmpeg uses the -map option to select streams. To delete a specific stream, you first map all streams from the input file and then use a negative map (prefixed with a minus sign -) to exclude the specific subtitle track.

To delete the second subtitle stream (index 1, which corresponds to 0:s:1), run this command:

ffmpeg -i input.mkv -map 0 -map -0:s:1 -c copy output.mkv

Command Breakdown: