<p>What player are you using?</p>

<p>Unless you have the "forced" flag set, <strong>it's a player option</strong> whether subtitles are displayed automatically or not and in which language if you have several subtitle tracks.</p>

<p>First, set the "default-flag" to false:</p>

<pre><code>mkvpropedit video.mkv --edit track:s1 --set flag-default=0
</code></pre>

<p>Then lookup your player preferences.</p>

<p>In VLC (2.0.8), I had to follow <a href="https://wiki.videolan.org/Documentation:Subtitles/" rel="noreferrer">these instructions</a>:</p>

<blockquote>
  <p>To disable subtitles by default, select "Preferences", then "Show
  All". Select "Input/Codecs". On the "Subtitle Track ID" selection
  window, change the value to "-1".</p>
</blockquote>

<p>and also set the preferred language to "none".</p>

<p>In SMplayer, uncheck Preferences / Subtitles / "Select first available subtitle".</p>

<p>Once your "default" flag is set to false for all subtitle tracks, it only depends on your player preferences.</p>

CC BY-SA 3.0
2016-01-12T16:32:35.900Z
You didn't read the OP. Disabling subtitles in the player is obvious but not at all what I wanted. I want English subtitles to display but not any other languages. Setting the default flag does not work. That is why I went to the trouble of finding a method that works universally and published my findings here.
hmj6jmh
CC BY-SA 4.0
2020-09-20T17:13:41.107Z
Using MakeMKV for some reason subtitles are always enabled (shows up in both VLC and apple tv) I used your script do make this one liner to set the default flag on all mkv files in a given directory. Thanks! Works great. 
`for FILE in *.mkv; do mkvpropedit $FILE --edit track:s1 --set flag-default=0; done`
tabrindle
CC BY-SA 3.0
2015-04-23T17:33:54.993Z
2015-04-23T17:33:54.993Z
mivk
<p>While your self-selected answer will work, it requires modifying the file again when you do want the subtitles.</p>

<p>Why not just create an empty but syntactically valid SRT file and mux that as the first subtitle stream (leaving the original as a secondary stream)? Even if the player is set to display subs, nothing will show up. No need to mess with ID strings.</p>

<p>And when you do want to see subtitles, you should be able to switch to the (populated) secondary subtitle stream, from within the player. No need to modify the file.</p>

CC BY-SA 3.0
2016-01-12T16:37:45.040Z
Because it is much more work  and goes against the first point in the OP. This is about disabling subtitles WITHOUT remuxing.
hmj6jmh
CC BY-SA 4.0
2019-12-10T03:49:11.313Z
Exactly!  I'm specifically looking for something just like the op described and remuxing is not an option.

To provide more context: I'd like to disable subtitles in a very large number of large files. They're on a networked file system so I'd like to do this with minimal network traffic.

Fortunately, the file system can apply binary diffs for small changes to large files.  Remuxing would still require downloading the entire file so that isn't ideal.  The accepted answer is hacky, but works great so far!
Chris
CC BY-SA 3.0
2015-04-28T08:15:52.827Z
2015-04-29T05:52:56.793Z
2015-04-29T05:52:56.793Z
Gyan
<p>I gave up and contacted the author of <code>mkvpropedit</code> to ask if it was possible to do what I wanted to do. The first answer I got was 'No'. But I persevered and asked if there was any setting that will trick the player into not recognizing a subtitle track? The response was to set the Codec ID to something the player doesn't support. Eureka!</p>

<pre><code>mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge &amp; mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: DISABLED
|  + Name: CC
</code></pre>

<p>This worked! The player doesn't recognize any subtitle track. In milliseconds I have achieved my goal. No time-consuming remux. Nice.</p>

<p>The procedure for doing this hack is as follows:</p>

<ol>
<li><p>Get track number of the subtitle track</p>

<pre><code>mkvinfo "inputfile.mkv"
…
| + A track
|  + Track number: 4 (track ID for mkvmerge &amp; mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
…
</code></pre>

<p>OR</p>

<pre><code>mkvmerge --identify "inpufile.mkv" | grep subtitles 
Track ID 3: subtitles (SubRip/SRT)
</code></pre>

<p>Note that <code>mkvinfo</code> gives the proper 1-indexed track number that <code>mkvpropedit</code> uses, BUT <strong><code>mkvmerge</code> gives a 0-indexed number so you have to add <code>1</code>.  Be sure to do this or you'll mess up the wrong track!</strong></p></li>
<li><p>Change the <code>Codec ID</code> to some nonsense name so the track is not recognized as a subtitle track. (In this case the track number is 4 but it will be different for other files.)</p>

<pre><code>mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge &amp; mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: DISABLED
|  + Name: CC

Track ID 3: subtitles (DISABLED)
</code></pre></li>
</ol>

<p>If you think you may at some time want to enable the track, keep a copy of the original <code>Codec ID</code>. As suggested by Jim Mack, it would be expedient to just add an obvious character to the existing <code>Codec ID</code>, thus preserving the original ID.</p>

<p>This hack works on files that have multiple subtitle tracks. Just repeat the renaming procedure for each track.</p>

CC BY-SA 3.0
2016-01-12T16:39:04.670Z
This is the answer. All other answers given do not respect the conditions of the OP.
hmj6jmh
CC BY-SA 4.0
2019-06-15T14:24:05.200Z
I renamed `Codec ID` to `DISABLED`, but VLC still displays all subtitles in the dropdown menu (selecting returns an error). In addition Popcorn AudioConverter or rather one of its used batch tools returns an error while remuxing the file.
mgutt
CC BY-SA 4.0
2022-02-19T05:30:18.233Z
Not enough karma to post a proper answer. But, I found my way here because I was wondering why `vlc` insisted on showing English subs in some English-audio mkv files I had.  Turns out, players are smarter than we give them credit for, they just need all the information.  By properly setting the language on the audio and subs tracks and default the English subs track to off, the subs are still there but not shown. Assuming your file only has 1 audio and 1 sub track: `mkvpropedit file.mkv --edit track:a1 --set language=eng --edit track:s1 --set language=eng --edit track:s1 --set flag-default=0`
ACK_stoverflow
CC BY-SA 4.0
2024-12-11T16:51:08.067Z
I don't know when this was added, but MKV actually has a track-flag dictating whether it is enabled or not, `flag-enabled` in `mkvpropedit`. According to MKVToolNix GUI "Players should only consider enabled tracks for playback." The problem here is: *should*. I tested on MPV (0.39), VLC (3.0.21), and Kodi (21.1), and they all seem to just ignore the flag :( Maybe the support will get better eventually, but for now it's just a note that this is technically possible natively. Unfortunately the `codec-id` method segfaults mpv.
Tarulia
CC BY-SA 3.0
2015-04-21T21:34:59.130Z
2015-04-21T21:34:59.130Z
hmj6jmh
<blockquote>
  <p><strong>ATTENTION:</strong></p>
  
  <p><strong>THIS QUESTION IS ABOUT DISABLING--NOT REMOVING SUBTITLE TRACKS FROM MKV FILES FROM THE COMMAND LINE. PERIOD.</strong></p>
  
  <p>It IS NOT about REMOVING subtitles by REMUXING with <code>mkvmerge</code> or any other tool. There are literally thousands of threads about removal by remuxing. That's precisely why I started this thread about DISABLING NOT REMOVING subtiles. I could not find a single thread about that.</p>
  
  <p>It is NOT about GLOBALLY DISABLING subtitles in any PLAYER. That is obviously trivial and doesn't need any explanation. I don't need/want to do that and, if I did, I obviously wouldn't have taken the time to research the topic at hand and publish my findings in this thread.</p>
  
  <p>I shouldn't have to add this disclaimer but there have been a number of, in most cases demeaning, 'answers' that reveal a distinct misunderstanding of the OP, suggesting irrelevant 'solutions', and/or criticizing this hack as being 'O-h-h-h-so-difficult' if you want to re-enable the subtitle track at a later date. As I pointed out numerous times, anyone who can understand my answer and who knows how to use the command line will find this task trivial. Those who don't SHOULD NOT ATTEMPT this hack.</p>
  
  <p>The answer has already been given as this is the entire point of this thread. So any new answers are either superfluous or, in SOME cases, irrelevant. I will no longer respond to irrelevant 'answers' or comments or demeaning remarks by users who, judging by their reputations, should know better. Any such abuse will be flagged accordingly.</p>
  
  <p>I welcome any CONSTRUCTIVE suggestions that ADHERE TO THE TOPIC, in a COMMENT, but any 'answers' or negative comments will be unanswered and flagged as inappropriate.</p>
</blockquote>

<p>Now that THAT is out of the way, let us begin…</p>

<p>I couldn't find out how to do this anywhere so I thought I'd share this hack with others who, like me, want to <strong>DISABLE</strong>, NOT REMOVE, subtitles in MKV files. </p>

<p><strong>There are times when you don't want the subtitles that are embedded in a file and you don't want to have to disable subtitles every time you play such a file or globally disable subtitles in every player you happen to have. Or you may want to automatically use a subtitle (<code>srt</code>) file that is preferable.</strong></p>

<p>Sure, you can completely REMOVE subtitles with <code>mkvmerge</code>:</p>

<pre><code>mkvmerge --no-subtitles "inputfile.mkv" -o "outputfile.mkv"
</code></pre>

<p>But this is heavy-handed and a real pain if you have a bunch of multi-GB files. It takes lots of time and disk space to de- and re-mux every file. So I turned to <code>mkvpropedit</code> which edits the properties of the subtitle track header in milliseconds. Note that this tool is installed when you install  <a href="https://www.bunkus.org/videotools/mkvtoolnix/" rel="nofollow">MKVToolNix</a>. Unfortunately, it is not at all obvious how to use this wonderful tool for the task at hand. Here's an example of the properties of a subtitle track as given by <code>mkvinfo</code>:</p>

<pre><code>| + A track
|  + Track number: 4 (track ID for mkvmerge &amp; mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
</code></pre>

<p>Despite the <code>default flag</code> setting <code>0</code> (false), the subtitle track is still active by default in players. I later read in the <code>mkvmerge</code> documentation "<em>If no track is set to be the default track then mkvmerge will promote the first track of each type that it finds to be the default track. This is consistent with the behavior of various media players.</em>" I'm not sure if this means that it sets the <code>default flag</code> to <code>1</code> or somehow otherwise arranges for the track to be the default, but it seems maybe the latter.</p>

<p>I tried adding the <code>track enabled</code> property set to false but it didn't work.</p>

<pre><code>mkvpropedit --edit track:4 --set flag-enabled=0 "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge &amp; mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
|  + Enabled: 0
</code></pre>

CC BY-SA 3.0
2015-04-21T18:37:38.743Z
You'd be (we would all be) better served if you split this into a separate question and answer. Also, nice trick but it might be better to just prefix the codec name with # or ! (eg) to disable it but still make it obvious to undo.
Jim Mack
CC BY-SA 3.0
2016-01-12T16:35:47.237Z
Yeah, I did that and it ended up eliciting spam answers and a mean-spirited attack on me personally by AJ Henderson who didn't even understand the question. I notice that her cronies actually downvoted my QUESTION! WOW!
hmj6jmh
CC BY-SA 4.0
2019-04-29T21:51:13.823Z
"Despite the default flag setting 0 (false), the subtitle track is still active by default in players" which players do this?! All the ones I've tried respect the default flag without an issue.
Michael Berry
<subtitles><mkv>
How to DISABLE--NOT REMOVE subtitle tracks from an MKV file from the command line?
hmj6jmh
# How to DISABLE--NOT REMOVE subtitle tracks from an MKV file from the command line?

(Asked by: username_0 on 2015-04-21)

ATTENTION:
THIS QUESTION IS ABOUT DISABLING--NOT REMOVING SUBTITLE TRACKS FROM MKV FILES FROM THE COMMAND LINE. PERIOD.
It IS NOT about REMOVING subtitles by REMUXING with mkvmerge or any other tool. There are literally thousands of threads about removal by remuxing. That's precisely why I started this thread about DISABLING NOT REMOVING subtiles. I could not find a single thread about that.
It is NOT about GLOBALLY DISABLING subtitles in any PLAYER. That is obviously trivial and doesn't need any explanation. I don't need/want to do that and, if I did, I obviously wouldn't have taken the time to research the topic at hand and publish my findings in this thread.
I shouldn't have to add this disclaimer but there have been a number of, in most cases demeaning, 'answers' that reveal a distinct misunderstanding of the OP, suggesting irrelevant 'solutions', and/or criticizing this hack as being 'O-h-h-h-so-difficult' if you want to re-enable the subtitle track at a later date. As I pointed out numerous times, anyone who can understand my answer and who knows how to use the command line will find this task trivial. Those who don't SHOULD NOT ATTEMPT this hack.
The answer has already been given as this is the entire point of this thread. So any new answers are either superfluous or, in SOME cases, irrelevant. I will no longer respond to irrelevant 'answers' or comments or demeaning remarks by users who, judging by their reputations, should know better. Any such abuse will be flagged accordingly.
I welcome any CONSTRUCTIVE suggestions that ADHERE TO THE TOPIC, in a COMMENT, but any 'answers' or negative comments will be unanswered and flagged as inappropriate.

Now that THAT is out of the way, let us begin…
I couldn't find out how to do this anywhere so I thought I'd share this hack with others who, like me, want to DISABLE, NOT REMOVE, subtitles in MKV files. 
There are times when you don't want the subtitles that are embedded in a file and you don't want to have to disable subtitles every time you play such a file or globally disable subtitles in every player you happen to have. Or you may want to automatically use a subtitle (srt) file that is preferable.
Sure, you can completely REMOVE subtitles with mkvmerge:
mkvmerge --no-subtitles "inputfile.mkv" -o "outputfile.mkv"

But this is heavy-handed and a real pain if you have a bunch of multi-GB files. It takes lots of time and disk space to de- and re-mux every file. So I turned to mkvpropedit which edits the properties of the subtitle track header in milliseconds. Note that this tool is installed when you install  MKVToolNix. Unfortunately, it is not at all obvious how to use this wonderful tool for the task at hand. Here's an example of the properties of a subtitle track as given by mkvinfo:
| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC

Despite the default flag setting 0 (false), the subtitle track is still active by default in players. I later read in the mkvmerge documentation "If no track is set to be the default track then mkvmerge will promote the first track of each type that it finds to be the default track. This is consistent with the behavior of various media players." I'm not sure if this means that it sets the default flag to 1 or somehow otherwise arranges for the track to be the default, but it seems maybe the latter.
I tried adding the track enabled property set to false but it didn't work.
mkvpropedit --edit track:4 --set flag-enabled=0 "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
|  + Enabled: 0

**Tags:** subtitles, mkv

> **Comments:**
> **username_1**: You'd be (we would all be) better served if you split this into a separate question and answer. Also, nice trick but it might be better to just prefix the codec name with # or ! (eg) to disable it but still make it obvious to undo.  
> **username_0**: Yeah, I did that and it ended up eliciting spam answers and a mean-spirited attack on me personally by AJ Henderson who didn't even understand the question. I notice that her cronies actually downvoted my QUESTION! WOW!  
> **username_2**: "Despite the default flag setting 0 (false), the subtitle track is still active by default in players" which players do this?! All the ones I've tried respect the default flag without an issue.  

---

## 3 answers

### Answer by username_0 on 2015-04-21. Score: 8 | Accepted answer

I gave up and contacted the author of mkvpropedit to ask if it was possible to do what I wanted to do. The first answer I got was 'No'. But I persevered and asked if there was any setting that will trick the player into not recognizing a subtitle track? The response was to set the Codec ID to something the player doesn't support. Eureka!
mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: DISABLED
|  + Name: CC

This worked! The player doesn't recognize any subtitle track. In milliseconds I have achieved my goal. No time-consuming remux. Nice.
The procedure for doing this hack is as follows:

Get track number of the subtitle track
mkvinfo "inputfile.mkv"
…
| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: S_TEXT/UTF8
|  + Name: CC
…

OR
mkvmerge --identify "inpufile.mkv" | grep subtitles 
Track ID 3: subtitles (SubRip/SRT)

Note that mkvinfo gives the proper 1-indexed track number that mkvpropedit uses, BUT mkvmerge gives a 0-indexed number so you have to add 1.  Be sure to do this or you'll mess up the wrong track!
Change the Codec ID to some nonsense name so the track is not recognized as a subtitle track. (In this case the track number is 4 but it will be different for other files.)
mkvpropedit --edit track:4 --set codec-id=DISABLED "inputfile.mkv"

| + A track
|  + Track number: 4 (track ID for mkvmerge & mkvextract: 3)
|  + Track UID: 11363869179551629452
|  + Track type: subtitles
|  + Default flag: 0
|  + Lacing flag: 0
|  + Codec ID: DISABLED
|  + Name: CC

Track ID 3: subtitles (DISABLED)


If you think you may at some time want to enable the track, keep a copy of the original Codec ID. As suggested by username_1, it would be expedient to just add an obvious character to the existing Codec ID, thus preserving the original ID.
This hack works on files that have multiple subtitle tracks. Just repeat the renaming procedure for each track.

> **Comments:**
> **username_0**: This is the answer. All other answers given do not respect the conditions of the OP.  
> **username_7**: I renamed `Codec ID` to `DISABLED`, but VLC still displays all subtitles in the dropdown menu (selecting returns an error). In addition Popcorn AudioConverter or rather one of its used batch tools returns an error while remuxing the file.  
> **username_8**: Not enough karma to post a proper answer. But, I found my way here because I was wondering why `vlc` insisted on showing English subs in some English-audio mkv files I had.  Turns out, players are smarter than we give them credit for, they just need all the information.  By properly setting the language on the audio and subs tracks and default the English subs track to off, the subs are still there but not shown. Assuming your file only has 1 audio and 1 sub track: `mkvpropedit file.mkv --edit track:a1 --set language=eng --edit track:s1 --set language=eng --edit track:s1 --set flag-default=0`  
> **username_9**: I don't know when this was added, but MKV actually has a track-flag dictating whether it is enabled or not, `flag-enabled` in `mkvpropedit`. According to MKVToolNix GUI "Players should only consider enabled tracks for playback." The problem here is: *should*. I tested on MPV (0.39), VLC (3.0.21), and Kodi (21.1), and they all seem to just ignore the flag :( Maybe the support will get better eventually, but for now it's just a note that this is technically possible natively. Unfortunately the `codec-id` method segfaults mpv.  

---

### Answer by username_3 on 2015-04-23. Score: 7

What player are you using?
Unless you have the "forced" flag set, it's a player option whether subtitles are displayed automatically or not and in which language if you have several subtitle tracks.
First, set the "default-flag" to false:
mkvpropedit video.mkv --edit track:s1 --set flag-default=0

Then lookup your player preferences.
In VLC (2.0.8), I had to follow these instructions:

To disable subtitles by default, select "Preferences", then "Show
  All". Select "Input/Codecs". On the "Subtitle Track ID" selection
  window, change the value to "-1".

and also set the preferred language to "none".
In SMplayer, uncheck Preferences / Subtitles / "Select first available subtitle".
Once your "default" flag is set to false for all subtitle tracks, it only depends on your player preferences.

> **Comments:**
> **username_0**: You didn't read the OP. Disabling subtitles in the player is obvious but not at all what I wanted. I want English subtitles to display but not any other languages. Setting the default flag does not work. That is why I went to the trouble of finding a method that works universally and published my findings here.  
> **username_4**: Using MakeMKV for some reason subtitles are always enabled (shows up in both VLC and apple tv) I used your script do make this one liner to set the default flag on all mkv files in a given directory. Thanks! Works great.  `for FILE in *.mkv; do mkvpropedit $FILE --edit track:s1 --set flag-default=0; done`  

---

### Answer by username_5 on 2015-04-28. Score: 6

While your self-selected answer will work, it requires modifying the file again when you do want the subtitles.

Why not just create an empty but syntactically valid SRT file and mux that as the first subtitle stream (leaving the original as a secondary stream)? Even if the player is set to display subs, nothing will show up. No need to mess with ID strings.

And when you do want to see subtitles, you should be able to switch to the (populated) secondary subtitle stream, from within the player. No need to modify the file.

> **Comments:**
> **username_0**: Because it is much more work  and goes against the first point in the OP. This is about disabling subtitles WITHOUT remuxing.  
> **username_6**: Exactly!  I'm specifically looking for something just like the op described and remuxing is not an option.  To provide more context: I'd like to disable subtitles in a very large number of large files. They're on a networked file system so I'd like to do this with minimal network traffic.  Fortunately, the file system can apply binary diffs for small changes to large files.  Remuxing would still require downloading the entire file so that isn't ideal.  The accepted answer is hacky, but works great so far!  

---

