With these tools one can get information about (mkvinfo) Matroska files, extract tracks/data from (mkvextract) Matroska files and create (mkvmerge) Matroska files from other media files. Matroska is a new multimedia file format aiming to become THE new container format for the future. You can find more information about it and its underlying technology, the Extensible Binary Meta Language (EBML), at http://www.matroska.org/ The full documentation for each command is now maintained in its man page only. Type `mkvmerge -h` to get you started.
Download alternate MKVToolNix solution
Look at the free or trial alternatives and similar apps to MKVToolNix software by the tags. It's possible also to find substitutes for the most popular titles in the Video & Multimedia category.
History updates (Complete changelogs since the listing on this site)
Other versions : 6.1.0 6.0.0 5.9.0 5.8.0 5.7.0 5.6.0 5.4.0 5.3.0
2013-02-24 Moritz Bunkus * mkvmerge: bug fix: Fixed mkvmerge sometimes mistakenly detecting MPEG-1 video in MPEG program streams as AVC/h.264. Fixes #845. * mmg: new feature: When a playlist file (e.g. MPLS Blu-ray playlist) is added mmg can optionally scan all the other files in the directory that have the same extension and present the user with the results (including them playback time, total size, number of chapters, number and types of tracks). The user can then select the actual playlist file to add. The user can configure the minimum playlist duration in order to filter out too short ones. 2013-02-22 Moritz Bunkus * mmg: new feature: Added an option for disabling making the suggested output file name unique by adding a running number (e.g. ' (1)'). Implements #848. * mmg: new feature: The output file name can be auto-set to be located in the first input file's parent directory. Implements #849. 2013-02-17 Moritz Bunkus * mkvinfo, mkvpropedit, mmg's header editor: bug fix: Fixed the description for the DisplayUnit element to include value 3 ("aspect ratio"). 2013-02-16 Moritz Bunkus * documentation: Added a Dutch translation of mmg's guide by René Maassen (see AUTHORS). * mkvmerge: bug fix: Fixed handling chapters when splitting by parts (both parts/timecodes and parts/frames). Fixes #831. * mkvmerge: bug fix: Fixed reading certain MP4 atoms with invalid length fields. 2013-02-06 Moritz Bunkus * mkvmerge: bug fix in common AAC code: Fixed wrong calculation of AAC packet size for malformed packets resulting in "safemalloc()" failing to allocate memory. Part of a fix for #832. 2013-02-03 Moritz Bunkus * mkvmerge: new feature: Implemented support for reading MPLS BluRay playlist files. All M2TS files referenced from an MPLS file are processed. Chapter entries from that MPLS file are used as well. Implements #765. 2013-01-26 Moritz Bunkus * mmg: bug fix: Selecting one of the pre-defined values from the "split by X" argument drop down box (e.g. "700M") was not leaving the selected entry in the drop down box but set it to empty instead. 2013-01-21 Moritz Bunkus * mkvmerge: bug fix: Fixed reading VP6 video from FlashVideo files. Fixes #836. 2013-01-20 Moritz Bunkus * mmg: bug fix: Fixed validating the argument for splitting parts by frame/field numbers. Fixes #835.
2013-01-14 Moritz Bunkus * mkvmerge: new feature: Implemented splitting by parts based on frame/field numbers ("--split parts-frames:" in mkvmerge). Implements #819. 2013-01-13 Moritz Bunkus * mkvmerge: bug fix: Re-writing the track headers after they'd grown a lot (to more than the EBML void size located after them allowed for) led to an integer underflow. Then mkvmerge tried to write a void element the size of that integer (e.g. nearly 4 GB on 32bit platforms). Fixes #822 and #828. 2013-01-12 Moritz Bunkus * mkvmerge: bug fix in the MP4 reader: Fixed language code conversion from what is used in MP4 to the ISO 639-2 codes used in Matroska (e.g. convert from "deu" to "ger"). * Source distribution: source code archives (tarballs) will be compressed with xz instead of bzip2 from now on. The file name's extension will therefore change from ".tar.bz2" to ".tar.xz". The download URL changes accordingly. 2013-01-11 Moritz Bunkus * mkvmerge: new feature: Implemented reading VobSubs from MP4 files if they're stored in the Nero Digital way (track sub-type 'mp4s', ESDS object type identifier 0xe0). Implements #821 and the second half of #815. 2013-01-08 Moritz Bunkus * mmg: new feature: Command line options can be saved as default for new jobs by clicking a check box in the "add command line options" dialog. 2013-01-02 Moritz Bunkus * mmg: bug fix: Fixed a crash in the chapter editor if the root was selected and the user used the "Set values" button. 2013-01-01 Moritz Bunkus * mkvmerge, mmg: removal: The 'header removal compression' method is not turned on by default anymore. This affects the following track types: AC3, AVC/h.264, Dirac, DTS, MP3. The setting in mmg that turned it off by default has been removed. 2012-12-31 Moritz Bunkus * mkvmerge: new feature: Added experimental support for the Opus audio codec. Parts of an implementation of #779. 2012-12-28 Moritz Bunkus * mkvmerge: bug fix: "text"-type tracks in MP4 files are only treated as chapters if their track ID is listed on a "chap" atom inside a "tref" track reference atom. Fixes #815. 2012-12-27 Moritz Bunkus * mkvmerge, mmg: new feature: Implemented splitting by chapter numbers. Implements #504 and #814. 2012-12-25 Moritz Bunkus * mkvmerge: enhancement: Removed several warnings from the MPEG-2 video parser code about open GOPs, missing references. Those were too confusing for most users, even after being given additional information via email and FAQs. * mkvextract: new feature: Implemented extraction of ALAC into Core Audio Format files (CAF). Implements #786. 2012-12-23 Moritz Bunkus * mkvmerge, mmg: new feature: Implemented splitting by frame/field numbers. Implements #771. * mmg: bug fix: Fixed consistency checks when appending files and at least one track is disabled. * mkvmerge: new feature: Implemented a reader for the Flash Video format (.flv). Implements #735. 2012-12-22 Moritz Bunkus * Build system: Boost's "variant" library is now required. 2012-12-17 Moritz Bunkus * mkvmerge: bug fix: ISO 639-2 language handling: The deprecated language codes "scr", "scc" and "mol" are replaced by their respective successors "hrv", "srp" and "rum". Fixes #803. * mkvmerge: bug fix: Matroska reader: Fixed finding the "segment info" element if it is located behind the clusters. 2012-12-16 Moritz Bunkus * mkvmerge: bug fix: MP3 parser code: Fixed skipping ID3 tags so that the header directly behind the ID3 tag is recognized properly. Fixes #747. * mkvmerge: bug fix: MP4 reader: Fixed handling of edit lists if the edit list is used to adjust the track's timecodes by a fixed amount (either positive or negative). Fixes #780. 2012-12-10 Moritz Bunkus * mkvpropedit: bug fix: Giving a non-existent file name in tags mode will result in a proper error message. Fixes #806. 2012-12-09 Moritz Bunkus
* mkvmerge: bug fix: Fixed reading seek position values bigger than 2 GB. Fixes #805. 2012-12-08 Moritz Bunkus * mkvmerge: bug fix: Fixed appending non-empty tracks to empty tracks. Fixes #793. * mkvmerge: bug fix: mkvmerge will now keep timecodes of PCM tracks from source files if they're available. Fixes #804. 2012-12-05 Moritz Bunkus * all: bug fix: EBML void elements will be skipped when reading structures from XML (e.g. chapters). Fixes #802. 2012-12-02 Moritz Bunkus * all: bug fix: EBML void elements will be skipped when saving structures to XML (e.g. chapters). Fixes #801. * mkvmerge: bug fix: Fixed reading linked seek heads in Matroska files. 2012-11-13 Moritz Bunkus * mmg: bug fix: Fixed reading file names containing a '%' from a .mmg settings file (both normally saved files and the job queue files). Fixes #795. 2012-10-08 Moritz Bunkus * mkvmerge: enhancement: Dirac video code: Added four more pre-defined video types from Dirac spec v2.2.2 and two from Dirac Pro. 2012-09-27 Moritz Bunkus * mkvmerge, mmg: enhancement: Added options for turning off writing "CueDuration" elements ("--engage no_cue_duration") and "CueRelativePosition" elements ("--engage no_cue_relative_positions"). * mkvmerge: new feature: The element "CueRelativePosition" is written for all cue entries. * mkvmerge: new feature: The element "CueDuration" will be written for all cue entries referring to subtitle tracks. * mkvmerge: new feature: mkvmerge will write cues for subtitle tracks by default now. * mkvinfo: new feature: added support for the new elements CueDuration, CueRelativePosition and TimecodeScaleDenimonator. The denominator's value is only shown so far but not taken into account when calculating any timecode. * mkvpropedit, mmg, mkvmerge: removal: removed support for the deprecated element TrackTimecodeScale. 2012-09-02 Moritz Bunkus
* mkvpropedit: new feature: Added support for adding, deleting and replacing attachments. 2012-09-01 Moritz Bunkus * mmg: new feature: chapter editor: Added support for the edition flags "hidden", "default" and "ordered" as well as the chapter values "segment UID" and "segment edition UID". Implements ticket #736. 2012-08-30 Moritz Bunkus * documentation: Added a Basque translation of mmg's guide by Xabier Aramendi (see AUTHORS). * all: bug fix: Fixed a buffer overflow in the Base64 decoder routine. 2012-08-19 Moritz Bunkus * source: Various fixes for building with g++ 4.7.x and clang 3.1. 2012-08-08 Moritz Bunkus * Build system: Boost's "bind" library is not required anymore. The C++11 features from "functional" are used instead. 2012-08-07 Moritz Bunkus * mkvmerge: bug fix: MPEG transport streams whose timecodes wrap around/overflow are handled correctly. Fixes #777. 2012-08-06 Moritz Bunkus * mkvmerge: bug fix: MP2/MP3 audio tracks in MPEG program streams that contained garbage at the start of the very first packet caused mkvmerge to use uninitialized/random values for certain parameters (sample rate, number of channels, and therefore also during timecode calculation). 2012-08-05 Moritz Bunkus * mkvmerge: new feature: Added support for reading ALAC (Apple Lossless Audio Codec) from CAF (CoreAudio), MP4 and Matroska files. Implements #753. 2012-08-02 Moritz Bunkus * mkvmerge: new feature: mkvmerge will remove stuffing bytes from MPEG-1/-2 video streams that are used to keep the bit rate above certain levels (the 0 bytes between slices and the following start code). Implements #734. 2012-08-01 Moritz Bunkus * mkvmerge: bug fix: Fixed audio/video synchronisation when reading MPEG program streams with MPEG-1/2 video with respect to B frames. Fixes #579. * mkvmerge: enhancement: SRT files can have spaces in their timecode line's arrow (e.g. "-- >"). 2012-07-31 Moritz Bunkus * mkvmerge: bug fix: VC1: mkvmerge will now only mark frames as I frames if a sequence header precedes them directly. Fixes #755. 2012-07-30 Moritz Bunkus * all: new feature: Added a Basque translation by Xabier Aramendi (see AUTHORS). 2012-07-20 Moritz Bunkus * all: bug fix: The programs do not try to create directories with empty names anymore. This happened if the output file name for e.g. mkvmerge or mkvextract was only a file name without a directory component. With Boost v1.50.0 the call to "boost::filesystem::create_directory()" would result in an error if the name was empty (it didn't in earlier versions of Boost). 2012-07-11 Moritz Bunkus * mmg: bug fix: Fixed mmg not reading the very last line of mkvmerge's output. The result was that messages like "the cues are being written" did not show up in mmg and that the progress bar was not filled completely. Fixes #774. 2012-07-08 Moritz Bunkus
* mmg: bug fix: mmg will no longer print false warnings about a chapter UID not being unique. Fixes #760. * mkvmerge, mkvpropedit, mmg: bug fix: All tools can now deal with 64bit UID values (chapter UIDs, edition UIDs etc). * mkvmerge: new feature: If "splitting by parts" is active and the last split part has a finite end point then mkvmerge will finish muxing after the last part has been completed. Implements #768. 2012-06-29 Moritz Bunkus * mkvmerge: bug fix: The DTS and TrueHD packetizers were not flushed correctly. In some rare circumstances this could lead to mkvmerge aborting with an error message about the packet queue not being empty at the end of the muxing process. Fixes #772. 2012-06-17 Moritz Bunkus * mmg, mkvinfo's GUI, all .exes: enhancement: Added new icons by Ben Humpert based on the ones by Eduard Geier (see AUTHORS). 2012-06-05 Moritz Bunkus * mkvmerge: bug fix: Fixed handling of tracks in QuickTime/MP4 files with a constant sample size. This fixes the other reason for the "constant sample size and variable duration not supported" error. Fixes issue 764. * mkvmerge: bug fix: Tracks in QuickTime/MP4 files with empty chunk offset tables (STCO and CO64 atoms) are ignored. This fixes one of the reasons for the "constant sample size and variable duration not supported" error. 2012-06-03 Moritz Bunkus * mmg: bug fix: Fixed mmg's excessive CPU usage during muxing. 2012-06-01 Moritz Bunkus * mkvmerge: bug fix: Reading DTS from AVI files often resulted in the error message that DTS headers could not be found in the first frames. This has been fixed. Fixes issue 759. 2012-05-31 Moritz Bunkus * Documentation: Updated the cross-compilation guide and fixed the "setup_cross_compilation_env.sh" script. 2012-05-27 Moritz Bunkus
* documentation: Added Spanish translation of mmg's guide by Israel Lucas Torrijos (see AUTHORS). 2012-05-20 Moritz Bunkus * mkvmerge: bug fix: SRT subtitle entries with colons as the decimal separator are accepted. Fix for issue 754. 2012-05-13 Moritz Bunkus * mkvmerge: bug fix: XML tag files with tags that only contained a name and nested were wrongfully rejected as invalid. Fixes issue 752. * mkvmerge: enhancement: mkvmerge was optimizied to keep cluster timecodes strictly increasing in most situations. 2012-04-24 Moritz Bunkus * all: Added a translation to Polish by Daniel (see AUTHORS). 2012-04-16 Moritz Bunkus * mkvextract: bug fix: Extraction of AVC/h.264 was completely broken after 2012-04-09 resulting in files with a length of 0 bytes. 2012-04-09 Moritz Bunkus * mmg: new feature: When adding a Matroska file that has either the "previous segment UID" or the "next segment UID" set then mmg will copy those two and the source file's segment UID into the corresponding controls on the "globla" tab if they haven't been set before. Implements ticket 733. * mkvmerge: new feature: The verbose identification mode for Matroska files will now includes the "segment UID", the "next segment UID" and "previous segment UID" elements. * mkvmerge: enhancement: In "--split parts:" mode mkvmerge will use the output file name as it is instead of adding a running number to it if all the ranges to be kept are to be written into a single output file. Implements ticket 743. * mkvextract: bug fix: mkvextract will no longer abort extracing h.264 tracks if it encounters a NAL smaller than its size field. Instead it will warn about it and drop the NAL. 2012-04-08 Moritz Bunkus * mkvmerge: bug fix: Writing more than two parts into the same file with "--split parts:" resulted in the timecodes of the third and all following parts to be wrong. Fixes ticket 740. * mkvmerge: bug fix: The "--split parts:" functionality was not taking dropped ranges into account when calculating the segment duration for files that more than one range was written to. Fixes ticket 738. * mkvmerge: bug fix: The "--split parts:" functionality was producing a small gap between the first part's last packet's timecode and the second part's first packet's timecode if two parts are written to the same file. Fixes ticket 742. 2012-04-07 Moritz Bunkus * mkvmerge: bug fix: The "--split parts:" functionality was writing a superfluous and empty first part if the first range starts at 00:00:00. Fixes ticket 737. 2012-04-07 Moritz Bunkus * mmg, build system: Fixed building with wxWidgets 2.9.3. 2012-04-06 Moritz Bunkus
2012-03-08 Moritz Bunkus * mkvmerge: bug fix: Fixed wrong calculation of the maximum number of ns per cluster in certain fringe cases if timecode scale was set to "auto" mode ("--timecode-scale -1"). Fix for bug 707. 2012-03-07 Moritz Bunkus * build system: The C++ compiler must now support the C++11 keyword 'nullptr'. configure checks for it. For GCC this means at least v4.6.0. * mkvinfo: new feature: mkvinfo will output the track ID that mkvmerge and mkvextract would use for a track. This information is shown alongside the "track number" element in verbose mode and in the track summary in summary mode. * mkvmerge, mmg: enhancement: The "--default-duration" in mkvmerge and the "FPS" drop down box in mmg now accept "p" or "i" as a unit -- as in e.g. "25p" or "50i". Several commonly used values have been added to mmg's "FPS" drop down box and others removed. * mkvmerge: bug fix: When using an external timecode file with AVC/h.264 video the default duration will be set to the most-often used duration in the timecode file. * mmg: enhancement: Added the values "50", "60" and "48000/1001" to the list of commonly used values for the "FPS" input field. * mkvmerge: bug fix: AVC/h.264 packetizer: The value given with "--default-duration" (after internal conversion from the unit given by the user to duration in nanoseconds) is now again interpreted as the duration of a frame and not of a field. * mkvmerge: bug fix: SRT subtitles: timecodes can contain the minus sign before any digit, not just before the first one. 2012-03-05 Moritz Bunkus * mkvmerge: bug fix: Sometimes non-AC3 files were mistakenly for AC3 after the re-write of the AC3 handling code on 2012-02-26. This has been rectified. Fix for bug 723. 2012-03-04 Moritz Bunkus * mkvmerge: enhancement: mkvmerge will keep the "enabled" track header flag when muxing. mkvmerge will also output its value in verbose identification mode as "enabled_track". * mkvmerge: enhancement: MicroDVD text subtitles are recognized as an unsupported format instead of an unknown format. * mmg: The warning that no default duration/FPS has been given for AVC/h.264 tracks has been removed. * mkvmerge: bug fix: Complete re-write of the timecode handling code for AVC/h.264 tracks. Now handles several cases correctly: interlaced video, video with multiple or changing SPS with different timing information. The timing information is extracted from the bitstream. Therefore the user doesn't have to specify the default duration/FPS himself anymore. Fix for bugs 434 and 688. 2012-02-26 Moritz Bunkus * build system: Boost's "rational" library is now required. * mkvmerge: bug fix: Complete re-write of the (E)AC3 parsing and handling code. Dependent EAC3 frames are now handled correctly. Fix for bug 704. 2012-02-22 Moritz Bunkus * mkvmerge: bug fix: The width and height of h.264 video tracks with a pixel format other than 4:2:0 are now calculated correctly. Fix for bug 649. Patch by Nicholai Main (see AUTHORS). * mkvmerge: bug fix: Fixed file type recognition and frame drops for VC1 elementary streams that do not start with a sequence header but with frame or field packets instead. * mkvmerge: bug fix: Fixed mis-detection as unsupported DV files (happened for e.g. PGS subtitle files). 2012-02-12 Moritz Bunkus * doc: enhancement: Updates for option file usage and supported subtitle formats. 2012-02-09 Moritz Bunkus
2012-02-06 Moritz Bunkus * mkvmerge: new feature: mkvmerge will parse and apply the audio encoder delay in MP4 files that contain said information in the format that iTunes writes it. Fix for bug 715. 2012-02-02 Moritz Bunkus * mkvmerge: new feature: Implemented support for treating several input files as if they they had been concatenated binarily into a single big input file. Snytax is "mkvmerge -o out.mkv ( in1.ts in2.ts in3.ts )". This feature has already been present since version 5.1.0 but never been mentioned in the ChangeLog. Support for this feature in mmg is still missing. 2012-01-31 Moritz Bunkus * mkvmerge: bug fix: Blocks with "BlockAdditions" will no longer be muxed as "SimpleBlock" elements discarding the additions but instead as "BlockGroup" elements. This applies to e.g. WAVPACK4 tracks with correction files as the correction data is stored in "BlockAdditions". Fix for bug 713. * mkvmerge: bug fix: Fixed some more issues with (E)AC3 being misdtected as AVC elementary streams. 2012-01-27 Moritz Bunkus * mmg: bug fix: The header editor was sometimes creating two instances of an element if an element was added to the second or one of the later tracks. Fix for bug 711. * mkvpropedit, mmg: bug fix: Trying to modify a file located in a path mounted with GVFS SFTP will no longer crash the programs. Instead an error message is output if an error occurs. Fix for bug 710. 2012-01-25 Moritz Bunkus * mkvmerge: bug fix: Fixed integer underflows in the read caching code resulting in invalid memory access. Happened in broken or incomplete files only. Fix for bug 709. 2012-01-23 Moritz Bunkus * mkvmerge: bug fix: Appending AVI, Matroska or MPEG program stream files with DTS audio tracks will not result in a warning that the appended DTS tracks might not be compatible. Fix for bug 705. 2012-01-13 Moritz Bunkus * mkvextract: bug fix for the "timecodes_v2" mode: mkvextract will write one more timecode than there are frames in the file. The last timecode written will be the the sum of the last frame's timecode and duration with the "last frame" being the one with the highest timecode. Fix for bug 691. 2012-01-12 Moritz Bunkus * mkvmerge: bug fix: Fixed writing into paths on which a drive is mounted on Windows. Fix for bug 701. * mkvmerge: enhancement: Identification output for Matroska files: Added the track number header field as "number" to the verbose identification mode. 2012-01-09 Moritz Bunkus * mkvmerge: enhancement: Identification output for Matroska files: Added a field "content_encoding_algorithms" that contains a comma-separated list of encoding algorithm IDs used for that track. For example, "content_encoding_algorithms:3" would indicate that header removal compression is used. 2012-01-07 Moritz Bunkus * mkvmerge: enhancement: Identification output for Matroska files: Added several fields to mkvmerge's verbose identification mode for tracks: UID, CodecID, length and content (as a hex dump) of the codec private data. * mkvmerge: bug fix: Fixed a segmentation fault in the DTS detection code. Fix for bug 698. 2012-01-05 Moritz Bunkus * mkvextract: bug fix: The track IDs used in the "timecodes_v2" extraction mode are consistent again with the IDs that mkvmerge's identification reports and that mkvextract's "tracks" extraction mode uses. Fix for bugs 689 and 694. 2012-01-04 Moritz Bunkus * mkvmerge: enhancement: Added video pixel dimensions to the output of "--identify-verbose" for Matroska files. 2012-01-02 Moritz Bunkus
Predicted future versions and notices:
The doDownload.com constantly monitors the update of all programs, including information from the MKVToolNix 6.2.1 changelog file, however sometimes it can happen that data are not complete or are outdated.We assume that author continue's to develop 6.3.0 version with further advanced features, and soon you will be informed. Equally important 7.0.0 upgrades of the program we will continue to monitor. Full MKVToolNix description has been compared with the overall software database and our algorithm has found the following applications (are showed below).
(6.3MB, Extension: HTML)