MKVToolNix v8.7.0 released

here’s the last release for this year: 8.7.0. This release contains a more even mix of bug fixes and enhancements. One area that has received special attention is the HEVC/h.265 code where multiple issues have been fixed. I strongly urge everyone to upgrade if you’re dealing with HEVC/h.265 in Matroska.

The enhancements and new features include:

  • a reworked preferences dialog in the GUI
  • a rather flexible method of running arbitrary programs after the GUI has finished a job or the whole queue
  • more items output in verbose & JSON identification modes
  • more options for dealing with attachments and track statistics tags in mkvpropedit

I’ve also decided to revert the change to writing byte order marks (BOMs) for UTF-8 encoded files that was introduced in the last release. This was due to user feedback. A common workflow is to extract subtitles to an extern file, to edit them somehow and to mux the back. On Windows this became annoying without BOMs: the extracted text files are UTF-8, but mkvmerge defaults to Windows’ own locale when reading text files – unless a BOM is found.

Another change I’ve reverted due to user feedback is the removal of several ISO 639-2 codes for very old languages. Certain users have used those codes to indicate variations to the default language, and the earlier removal broke this workflow.

Nothing has changed for package maintainers compared to v8.6.1.

The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

You can download the source code or one of the binaries.

Here’s the full ChangeLog since v8.6.1:

  • 2015-12-31 Moritz Bunkus <>
    • Released v8.7.0.
  • 2015-12-30 Moritz Bunkus <>
    • mkvmerge: bug fix: fixed the handling of a PES size of 0 ( = unknown). Tracks whose PES packets had such a size were sometimes not detected at all, and even if they were their content was incomplete. Fixes #1553.
    • mkvmerge: bug fix: made the MPEG 1/2 video elementary stream file type recognition more resilient and more flexible dropping the requirement for a file to start with an MPEG start code (0x00 00 01). Fixes #1462.
    • mkvpropedit: bug fix: when changing the track language it is now verified to be a valid ISO 639-2 language code before writing it to the file. Fixes #1550.
    • mkvmerge: enhancement: the MP4 reader will keep the display dimensions from the track header atom ("tkhd") and use them as the display width & height. See also #1547.
  • 2015-12-29 Moritz Bunkus <>
    • MKVToolNix GUI: merge tool enhancement: the "add source files" button now has optional popup menu containing actions for adding/appending files and adding files as additional parts for easier discovery of those actions. This popup is only shown if the user clicks on the arrow shown on the right of the button.
    • mkvmerge: new feature: TrueHD tracks that contain Dolby Atmos will be identified as "TrueHD Atmos". Implements #1519.
    • mkvmerge: bug fix: the Matroska reader now uses TrueHD-specific code when reading Matroska files. This can fix things like wrong frame type flags.
  • 2015-12-28 Moritz Bunkus <>
    • mkvmerge: bug fix: MP4 edit lists of certain types (two entries, first entry’s media_time is -1, second entry’s segment_duration is != 0) weren’t handled properly resulting in key frame flags being assigned to the wrong frames. Fixes #1547.
    • mkvmerge: bug fix: the h.265/HEVC code was writing SEI NALUs twice. This had already been mentioned in #1076 but never fixed. Patch by Vladimír Pilný.
    • mkvmerge: bug fix: the h.265/HEVC code wasn’t converting slice NALUs to RBSP form before parsing it resulting in wrongly timestamped frames under certain conditions. This is a similar fix to the issues reported in #918 and #1548.
    • mkvmerge: bug fix: the h.264/AVC code wasn’t converting slice NALUs to RBSP form before parsing it resulting in wrongly timestamped frames under certain conditions. Fixes #918 and #1548.
    • mkvmerge: bug fix: the MP4 reader can now understand the ‘random access point’ sample grouping information for marking open GOP random access points as key frames. Fixes #1543.
  • 2015-12-27 Moritz Bunkus <>
    • mkvmerge: bug fix: fixed the decisions whether or not to write the last frame of a track as a BlockGroup or a SimpleBlock and whether or not to write a block duration for that frame. Fixes #1545.
    • MKVToolNix GUI: new merge tool feature: added menu options in the "Merge" menu for copying either the first source file’s name or the current output file’s name into the "file title" control.
  • 2015-12-22 Moritz Bunkus <>
    • mkvpropedit: new feature: added an option for calculating statistics for all tracks and adding new/updating existing statistics tags in a file. Second half of the implementation of #1507.
  • 2015-12-19 Moritz Bunkus <>
    • mkvmerge: bug fix: the progress calculation was sometimes outputting negative numbers when appending Matroska files whose timestamps don’t start at 0 (e.g. if they were created by splitting with linking enabled). In the the GUI this resulted in lines like "#GUI#progress -2%" in the job’s output.
    • mkvpropedit: new feature: added an option for removing all existing track statistics tags from a file. Part of the implementation of #1507.
    • mkvmerge: bug fix: AAC with low sampling frequencies was sometimes mis-detected with the wrong profile preventing appending it to other AAC tracks. Fixes #1540.
  • 2015-12-17 Moritz Bunkus <>
    • mkvmerge: bug fix: chapters were output as both "chapters" and "track_tags" in JSON identification mode. Fixes #1538.
    • mkvmerge: enhancement: added the container’s internal track ID as the "number" attribute in verbose & JSON identification modes for several container types (QuickTime/MP4: the track ID from the ‘tkhd’ atom; MPEG program stream: the sub-stream ID in the upper 32 bits and the stream ID in the lower 32 bits; MPEG transport stream: the program ID; Ogg/OGM: the stream’s serial number field; RealMedia: the track ID). Implements #1541.
  • 2015-12-16 Moritz Bunkus <>
    • MKVToolNix GUI: bug fix: the "split mode" drop-down box got reset to "do not split" each time the preferences dialog was closed with the "OK" button. Fixes #1539.
    • mkvmerge: enhancement: if JSON identification mode is active then warnings and errors will be output as JSON as well. They’re output as arrays of strings as the keys "warnings" and "errors" of the main JSON object. Implements #1537.
    • all: reversion of a change: several ISO 639-2 codes of languages that are very old and not spoken anymore have been re-added (e.g. "English, Middle (1100-1500)") due to feedback from users who did have a use for such codes.
    • all: reversion of a change: all of the tools will write a byte-order mark (BOM) to text files encoded any of the UTF-* schemes again. This reverts the change in release 8.6.0 due to user feedback preferring the old way.
  • 2015-12-12 Moritz Bunkus <>
    • mkvpropedit: enhancement: when using –add-attachment, –replace-attachment or –update-attachment the UID can be changed with –attachment-uid. See #1532.
    • mkvpropedit: new feature: added an option "–update-attachment" for updating the properties of existing attachments without replacing their content. Implements #1532.
  • 2015-12-11 Moritz Bunkus <>
    • MKVToolNix GUI: new feature: added options for running arbitrary programs after a job has finished or after the queue has finished. Implements #1406.
  • 2015-12-09 Moritz Bunkus <>
    • MKVToolNix GUI: merge tool enhancement: if files are dragged & dropped from an external application with the right mouse button being pressed then the GUI will always ask the user what to do with the files even if the user has configured the GUI not to ask. Implements #1508.
    • MKVToolNix GUI: enhancement: when starting the GUI with a saved settings file then the GUI won’t contain an empty tab in the merge tool anymore. Fixes #1504.
  • 2015-12-08 Moritz Bunkus <>
    • mkvmerge: bug fix: fixed the key frame detection for VP9 video tracks.
    • MKVToolNix GUI: bug fix: relative file names given on the command line were interpreted as being relative to the user’s home directory. Fixes #1534.
  • 2015-12-01 Moritz Bunkus <>
    • MKVToolNix GUI: the preferences dialog has been reworked heavily in order to provide a better overview and to be less overwhelming.

Have fun :)

2 thoughts on “MKVToolNix v8.7.0 released

  1. Richard

    The SSE2 incompatibility I posted about on the previous version is fixed in version 8.7.0. Sorry for not replying in the thread about version 8.6.1 after you posted the test builds, which also work… I didn’t notice that it was fixed in a new MKVToolNix version until today.

    Anyway you fixed that problem, thank you, you are an excellent programmer, great work! It is probably your excellent software which has helped make the Matroska container format so popular… that and the superiority of the Matroska container format over all other multimedia container formats.

    1. mosu Post author

      Thanks for the confirmation and your nice words. I’ve indeed added the patch to disable SSE2 for Qt to my local cross-compilation installation again. I hope I won’t repeat this again (forgetting why the patch was there & therefore removing it).

Comments are closed.