MKVToolNix v25.0.0

Hello everyone,

July’s release of MKVToolNix is here: v25.0.0. After two smaller ones, this one packs quite a number of bug fixes and enhancements, including fixing a regression in the GUI’s header editor preventing elements from being removed that was introduced in v24.0.0. Sorry about that.

AV1 support hasn’t changed. While the bitstream format’s been finalized in the meantime, the mapping to Matroska & WebM hasn’t. It’s currently being discussed on the CELLAR mailing list.

You can download the source code or one of the binaries. The Windows and macOS binaries as well as the Linux AppImage are available already. The other 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

  • mkvmerge: SRT/ASS/SSA text subtitles: for files for which no encoding has
    been specified, mkvmerge will try UTF-8 first before falling back to the
    system’s default encoding. Part of the implementation of #2246.
  • mkvmerge: SRT/ASS/SSA/WebVTT text subtitles: a warning is now emitted if
    invalid 8-bit characters are encountered outside valid multi-byte UTF-8
    sequences. Part of the implementation of #2246.
  • mkvmerge: Matroska & MPEG transport stream readers: the encoding of text
    subtitles read from Matroska files can now be changed with the
    --sub-charset parameter.
  • Linux: starting with release 25 an AppImage will be provided which should
    run on any Linux distribution released around the time of CentOS 7/Ubuntu
    14.04 or later.
  • macOS: translations: updated the script to build libiconv and a
    complete gettext. Together with an additional fix to how translation files
    are located, MKVToolNix can now use all interface languages on macOS,
    too. Fixes #2110, #2307, #2323.

Bug fixes

  • mkvmerge: AVC/h.264: fixed file identification failing for certain
    elementary streams due to internal buffers not being cleared properly. Fixes
  • mkvmerge: HEVC/h.265: fixed file identification failing for certain
    elementary streams due to internal buffers not being cleared properly. This
    is the HEVC analog to what was fixed for AVC in #2325.
  • mkvmerge: MLP code: fixed various issues preventing MLP from being parsed
    correctly. Fixes #2326.
  • mkvmerge: TrueHD/MLP packetizer; dialog volume normalization removal isn’t
    attempted if the track is an MLP track as the operation is only supported
    for TrueHD, not MLP.
  • mkvmerge: MPEG TS reader: when reading MPLS mkvmerge will now compare the
    MPLS’s start and end timestamps against the transport stream’s PTS instead
    of its DTS. Otherwise the first key frame of a video track might be dropped
    if it isn’t the first in presentation order. Fixes #2321.
  • mkvmerge: JSON identification: mkvmerge will ensure that all strings passed
    to the JSON output modules are valid UTF-8 encoded strings by replacing
    invalid bytes with placeholder characters. This avoids the JSON library
    throwing an exception and mkvmerge aborting on such data. Fixes #2327.
  • mkvmerge: audio packetizers: mkvmerge will now keep discard padding values
    if they’re present for packets read from Matroska files. Fixes #2296.
  • mkvmerge: Ogg Opus reader: packet timestamps aren’t calculated by summing up
    the duration of all packets starting with timestamp 0 anymore. Instead the
    algorithm is based on the Ogg page’s granule position and which packet
    number is currently timestamped (special handling for the first and last
    packets in the stream).

    • This fixes the first timestamp if the first Ogg packet’s granule position
      is larger than the number of samples in the first packet (= if the first
      sample’s timestamp is bigger than 0). mkvmerge will keep those offsets now
      and inserts "discard padding" only where it’s actually needed.
    • It also improves handling of invalid files where the first Ogg packet’s
      granule position is smaller than the number of samples in the first packet
      (= the first sample’s timestamp is smaller than 0). mkvmerge will now
      shift all timestamps up to 0 in such a case instead of inserting "discard
      padding" elements all over the place.
    • mkvmerge will no longer insert "discard padding" elements if the
      difference between a) the calculated number of samples in the packet
      according to the granule position and b) the actual number of samples as
      calculated from the bitstream is one sample or less and if the packet
      isn’t the last one in the stream. This circumvents certain rounding
    • The timestamp of the first packet after a gap in the middle of the stream
      is now calculated based on the Ogg page the packet belongs to, and not
      based on the timestamps before the gap.
      Fixes #2280.
  • mkvmerge: complete rewrite of the progress handling. It’s now based upon the
    total size of all source files and the current position within them instead
    of the number of frames/blocks to be processed. This simplifies calculation
    when appending files and fixes rare cases of when progress report was
    obvious wrong (e.g. stuck at 0% right until the end). Fixes #2150 and #2330.
  • MKVToolNix GUI: header editor: non-mandatory elements couldn’t be removed
    anymore due to a regression while fixing #2320. They can now be removed
    again. Fixes #2322.

Have fun :)

6 thoughts on “MKVToolNix v25.0.0

  1. Daniel M Cohen


    I just got a new Micca speck G2 in order to download and play MKV files on a big screen TV. I’ve noticed that some files fail to play. There was a note online about using MKVToolnix to clean up files that are misnamed or have issues with certain srt subtitle files. I Will your software work with my MAC OS 10.13.5

    1. The Administrator

      The MKVToolNix DMGs I provide myself work with macOS El Capitan (10.11) and newer — which includes High Sierra (10.13). So: yes.

      1. Bogdan Souvannasouck

        I love MKVToolNix, and I really don’t know where to ask: how can I put an Watermark on an mkv file. Or what do you suggest? For example: I go to this yoga class, I record 2 hours of class with my phone, which, of course, get split in 4Gb videos. I use MKVToolNix to make 1 mkv file.

        Again: how can I add an watermark, or what do you suggest?

        1. The Administrator

          You’ll have to re-encode the video in order to add a watermark. There should be many video editors/encoders out there that can do such a thing. I’ve never done this myself and can therefore not offer a recommendation.

  2. Gastón

    Man, I just need to send you a BIG THANK YOU for MKVToolNix!

    It is VERY FAST and powerful! I was used to conversion apps, video editing, and other ways to strip audio, change subtitles, etc.

    With MKVToolNix is just a click away and the output is right there FAST AS LIGHTNING!

    Is a MUST HAVE for anyone that enjoys and use multimedia resources.


    Thank you VERY MUCH for this EXCELLENT, useful and FAST software!

Comments are closed.