The year’s almost over, so I’m just in time for the last release of the year: MKVToolNix v19.0.0 is out. It’s not that big of release, but it still contains a couple of improvements all over the place — and two nice performance improvements on Windows that people will likely notice.
There were no changes for package maintainers.
You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.
Here are the NEWS since the previous release:
Important notes
- The MKVToolNix project now contains a Code of Conduct.
- The MKVToolNix project’s source code repository, bug tracker and wiki have been moved to GitLab.
New features and enhancements
- mkvmerge: splitting by duration, by timestamps or by timestamp-based parts: mkvmerge will now consider the first key frame within 1ms of the requested value to be eligible for splitting.
- MKVToolNix GUI: the GUI will now save and restore the widths of columns in tree and list views. Implements #2057.
- MKVToolNix GUI: header editor: when closing or reloading a modified file, the GUI will now focus the first element that’s been modified before asking the user for confirmation regarding discarding unsaved changes.
Bug fixes
- mkvmerge: fixed reading text files encoded in UTF-16 order UTF-32 that have different forms of line endings (new lines, carriage returns or a mix of both). Fixes #2160.
- mkvmerge: MP4 reader: fixed mkvmerge’s interpretation of edit list entries with
segment_duration == 0when there’s more than one edit list entry. In that case mkvmerge was reading the whole content more than once. Fixes #2152. - mkvmerge, GUI’s multiplexer: MIME types: added the
fonttop-level media types from RFC 8081. This means that the following new MIME types for fonts can be used:font/ttf,font/otf,font/woffandfont/woff2. - mkvmerge: MPEG transport stream reader: fixed slow speed on Windows due to lack of buffering.
- mkvextract: fixed slow track extraction speed on Windows due to lack of buffering. Fixes #2166.
- MKVToolNix GUI: multiplexer: changing the "subtitle/chapter character set" drop-down was ignored when the selected track was a chapter track. Fixes #2165.
- MKVToolNix GUI: multiplexer: once a "subtitle/chapter character set" was set for a track it couldn’t be changed back to the empty entry (= auto-detection) anymore.
- MKVToolNix GUI: header editor: fixed re-translating several displayed strings when the GUI language is changed if the language the GUI was started with was not English. Fixes #2159.
- MKVToolNix GUI: header editor: whenever a file did not contain a "date" element in its segment information section, the GUI would erroneously ask the user to confirm discarding unsaved changes when closing or reloading the tab. Fixes #2167.
- MKVToolNix GUI: job queue: jobs are now saved when their status changes in addition to when the program exits. Fixes #2168.
Have fun :)
Today I’ve moved MKVToolNix’ source code repository, the bug tracker and the wiki (including the FAQ) over to GitLab. You can continue using your checked-out copy of the source code if you want by simply replacing https://github.com/mbunkus/mkvtoolnix with https://gitlab.com/mbunkus/mkvtoolnix in the file .git/config.
The move was done using GitLab’s import function. This means that all issues filed by people who already have a GitLab account will remain filed under your name (by mapping it to your GitLab account). All other issues have been mapped to me with mentioning the original poster in the issue text’s first line.
Anyone who doesn’t have a GitLab account yet — don’t fret. You can easily sign in to GitLab using your GitHub account (click on the corresponding icon at the below the login form).
Welcome to release v18.0.0 of MKVToolNix. This is just a smallish bug fix release which also contains a couple of performance improvements.
There were no changes for package maintainers.
You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.
Here are the NEWS since the previous release:
New features and enhancements
- build system: when building with clang v3.8.0 or newer,
configurewill no longer restrict optimization flags to-O1and use-O3again (older versions of clang suffered from excessive memory usage with higher optimization levels). - build system: when building with mingw 7.2.0 or newer,
configurewill no longer restrict optimization flags to-O2and use-O3again (older versions of mingw suffered from bugs such as segmentation faults with higher optimization levels). - build system: stack protection is enabled when building with clang 3.5.0 or newer on all platforms.
- mkvmerge: AVC & HEVC ES parsers: performance improvements by copying much less memory around.
- mkvmerge: tags: reintroduced a workaround for non-compliant files with tags that do not contain the mandatory
SimpleTagelement. This workaround was removed during code refactoring in release v15.0.0. - GUI: multiplexer: the "AAC is SBR/HE-AAC/AAC+" checkbox in the "audio properties" section will be disabled if the functionality is not implemented for the selected track’s codec & container.
- GUI: multiplexer: the "reduce to core" checkbox in the "audio properties" section will be disabled if the functionality is not implemented for the selected track’s codec. See #2134.
Bug fixes
- mkvmerge: AAC ADTS parser: fixed interpretation of the
channel_configurationheader element for ADTS files that do not contain a program configuration element: value 7 means 7.1 channels. Fixes #2151. - mkvmerge: Matroska identification: the
date_localanddate_utcattributes will only be output if the identified Matroska file actually contains the "date" header field. - mkvmerge: WebVTT: mkvmerge did not recognize timestamp lines if the hours components were absent. Fixes #2139.
- mkvpropedit, GUI’s header editor: the
dateheader field won’t be added automatically anymore whenever the segment info section is edited and thedateelement is either deleted or not present in the first place. Fixes #2143.
Have fun :)
Here’s release v17.0.0 of MKVToolNix. The rather short timespan since the previous release is due to a nasty bug in the VC-1 code that a lot of people are hitting with v16.
Other important changes are the overhaul of mkvextract’s command line interface and all programs using the word “timestamp” instead of “timecode” (which also affects mkvmerge’s command line interface). See the news below for more information.
There were no changes for package maintainers.
You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.
Here are the NEWS since the previous release:
Important notes
- The word "timecode" has been changed to "timestamp" everywhere it was used in MKVToolNix. This affects program output (including mkvinfo’s), GUI controls, command line parameters (e.g.
mkvmerge --timestamp-scale …) and file formats. All programs remain backwards compatible insofar as they still accept "timecode" in all those places (e.g.mkvmerge --timecode-scale …).
The reason for the change is wrong usage. What both the Matroska specification and MKVToolNix used "timecode" for is normally called a "timestamp" in audio & video domains. A "timecode" on the other hand has a specific meaning. As the Matroska specification is moving towards implementing real timecodes, it will also move towards correcting the verbiage. MKVToolNix is following this change. - mkvextract’s command line interface has been changed to allow extraction of multiple items at the same time. The first argument must now be the source file’s name. All following arguments either set the mode (e.g.
tracks) or specify what to extract in the currently active mode.
Those items that were written to the standard output (chapters, tags and cue sheets) are now always written to files instead. Therefore the respective modes require an output file name.
For example, extracting two tracks, the chapters and the tags can be done with the following command:
mkvextract input.mkv tracks 0:video.h265 1:audio.aac chapters chapters.xml tags tags.xml
The old interface (specifying the mode first and the source file name second) remains working and supported. However, it is now deprecated and will be removed at the end of 2018.
New features and enhancements
- mkvmerge: AC-3: during identification regular AC-3 and E-AC-3 tracks will now be identified differently for most container formats (exception: AVI, Real Media, Ogg/OGM). The codec will be reported as
AC-3for regular AC-3 and asE-AC-3for E-AC-3 tracks instead of the combinedAC-3/E-AC-3. - mkvextract: the command line interface has been changed to allow extraction of multiple items at the same time. See section "Important notes" for details.
Bug fixes
- mkvmerge: AAC ADTS parser: mkvmerge will now parse the
program_config_elementif it is located at the start of an AAC frame in order to determine the actual number of channels. This overrides invalid channel configurations in the ADTS headers, for example. Fixes #2107. - mkvmerge: fixed AC-3 being misdetected as encrypted MPEG program streams under certain conditions.
- mkvmerge: Dirac: under certain conditions (e.g. only muxing a single Dirac track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too.
- mkvmerge: E-AC-3 in Matroska: if AC-3 cores and their corresponding E-AC-3 extension are located in two different Matroska blocks, then mkvmerge will now re-assemble them into a single block and only use the first block’s timestamp.
- mkvmerge: SRT reader: fixed calculating the duration of entries starting with at a negative timestamp.
- mkvmerge: VC-1: under certain conditions (e.g. only muxing a single VC-1 track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too. Fixes #2113.
- mkvmerge: command line options: an error message will be output if the single-value-form of the
--syncoption is used and it isn’t a number (e.g.--sync 0:asd). Fixes #2121. - mkvpropedit, GUI’s header editor: both programs will now show proper error messages instead of crashing when certain kinds of data corruption is found when reading a file. Fixes #2115.
Have fun :)

