---
name: "mkvinfo"
section: "1"
platform: "linux"
package: "mkvtoolnix-cli"
version: "103.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/mkvinfo"
---

# mkvinfo(1)

Print information about elements in Matroska(TM) files

## NAME

mkvinfo - Print information about elements in Matroska(TM) files

## SYNOPSIS

**mkvinfo** \[options\] {source-filename}

## DESCRIPTION

This program lists all elements contained in a Matroska(TM). The output can be limited to a list of tracks in the file including information about the codecs used.

- **-a**, **--all**

  By default [**mkvinfo**(1)](/mkvinfo/1.md) stops when it encounters the first cluster. Additionally it doesn't show certain often occurring elements. With this option [**mkvinfo**(1)](/mkvinfo/1.md) will continue processing regardless of the verbosity level and show all elements.

- **-c**, **--checksums**

  Calculates and display the **Adler-32** checksum for each frame. Useful for debugging only.

- **-o**, **--continue**

  By default [**mkvinfo**(1)](/mkvinfo/1.md) stops when it encounters the first cluster. With this option [**mkvinfo**(1)](/mkvinfo/1.md) will continue processing regardless of the verbosity level.

- **-p**, **--hex-positions**

  Show the positions of all elements in hexadecimal regardless of the verbosity level.

- **-P**, **--positions**

  Show the positions of all elements in decimal regardless of the verbosity level.

- **-s**, **--summary**

  Only show a terse summary of what [**mkvinfo**(1)](/mkvinfo/1.md) finds and not each element.

- **-t**, **--track-info**

  Show statistics for each track in verbose mode. Also sets verbosity to 1 if it was at level 0 before.

- **-x**, **--hexdump**

  Show the first 16 bytes of each frame as a hex dump.

- **-X**, **--full-hexdump**

  Show all bytes of each frame as a hex dump.

- **-z**, **--size**

  Show the size of each element including its header.

- **--command-line-charset** *character-set*

  Sets the character set to convert strings given on the command line from. It defaults to the character set given by system's current locale.

- **--output-charset** *character-set*

  Sets the character set to which strings are converted that are to be output. It defaults to the character set given by system's current locale.

- **-r**, **--redirect-output** *file-name*

  Writes all messages to the file *file-name* instead of to the console. While this can be done easily with output redirection there are cases in which this option is needed: when the terminal reinterprets the output before writing it to a file. The character set set with **--output-charset** is honored.

- **--no-bom**

  Normally text files that are created & encoded in one of the UTF variants will start with a byte order marker (BOM). Using this option disables writing that byte order marker.

- **--ui-language** *code*

  Forces the translations for the language *code* to be used (e.g. 'de\_DE' for the German translations). Entering 'list' as the *code* will cause the program to output a list of available translations.

- **--abort-on-warnings**

  Tells the program to abort after the first warning is emitted. The program's exit code will be 1.

- **--debug** *topic*

  Turn on debugging for a specific feature. This option is only useful for developers.

- **--engage** *feature*

  Turn on experimental features. A list of available features can be requested with **mkvinfo --engage list**. These features are not meant to be used in normal situations.

- **--gui-mode**

  Turns on GUI mode. In this mode specially-formatted lines may be output that can tell a controlling GUI what's happening. These messages follow the format '#GUI#message'. The message may be followed by key/value pairs as in '#GUI#message#key1=value1#key2=value2...'. Neither the messages nor the keys are ever translated and always output in English.

- **-v**, **--verbose**

  Be more verbose. See the section about verbosity levels for a description which information will be output at which level.

- **-h**, **--help**

  Show usage information and exit.

- **-V**, **--version**

  Show version information and exit.

**@***options-file.json*

Reads additional command line arguments from the file *options-file*. For a full explanation on the supported formats for such files see the section called "Option files" in the [**mkvmerge**(1)](/mkvmerge/1.md) man page.

## VERBOSITY LEVELS

The **-v** option can be used to increase [**mkvinfo**(1)](/mkvinfo/1.md)'s verbosity level and print more information about the current file.

At level 0 [**mkvinfo**(1)](/mkvinfo/1.md) will print only the track headers it finds and their types. [**mkvinfo**(1)](/mkvinfo/1.md) will exit as soon as the headers are parsed completely (more technical: as soon as the first cluster is encountered). In this level the seek head entries and the cues will not be displayed -- even if they're located in front of the track information.

At level 1 [**mkvinfo**(1)](/mkvinfo/1.md) will also print all Matroska(TM) elements encountered for the complete file but the seek head entries and the cue entries. If the summary mode is enabled then [**mkvinfo**(1)](/mkvinfo/1.md) will output the frame position as well.

The same effect can be achieved with the option **--continue**.

At level 2 [**mkvinfo**(1)](/mkvinfo/1.md) will also print the seek head entries, the cue entries and the file position at which each Matroska(TM) element can be found at.

The same effect can be achieved with the options **--all --positions**.

At level 3 and above [**mkvinfo**(1)](/mkvinfo/1.md) will print some information that is not directly connected to a Matroska(TM) element. At all other levels it only prints information about the elements that were just found. Level 3 adds meta information to ease debugging (read: it's intended for developers only). All lines written by level 3 are enclosed in square brackets to make filtering them out easy.

## TEXT FILES AND CHARACTER SET CONVERSIONS

For an in-depth discussion about how all tools in the MKVToolNix suite handle character set conversions, input/output encoding, command line encoding and console encoding please see the identically-named section in the [**mkvmerge**(1)](/mkvmerge/1.md) man page.

## EXIT CODES

[**mkvinfo**(1)](/mkvinfo/1.md) exits with one of three exit codes:

• **0** -- This exit code means that the run has completed successfully.

• **1** -- In this case [**mkvinfo**(1)](/mkvinfo/1.md) has output at least one warning, but the run did continue. A warning is prefixed with the text 'Warning:'.

• **2** -- This exit code is used after an error occurred. [**mkvinfo**(1)](/mkvinfo/1.md) aborts right after outputting the error message. Error messages range from wrong command line arguments over read/write errors to broken files.

## ENVIRONMENT VARIABLES

[**mkvinfo**(1)](/mkvinfo/1.md) uses the default variables that determine the system's locale (e.g. *LANG* and the *LC\_\** family). Additional variables:

*MKVINFO\_DEBUG*, *MKVTOOLNIX\_DEBUG* and its short form *MTX\_DEBUG*

The content is treated as if it had been passed via the **--debug** option.

*MKVINFO\_ENGAGE*, *MKVTOOLNIX\_ENGAGE* and its short form *MTX\_ENGAGE*

The content is treated as if it had been passed via the **--engage** option.

## SEE ALSO

[**mkvmerge**(1)](/mkvmerge/1.md), [**mkvextract**(1)](/mkvextract/1.md), [**mkvpropedit**(1)](/mkvpropedit/1.md), [**mkvtoolnix-gui**(1)](/mkvtoolnix-gui/1.md)

## WWW

The latest version can always be found at **the MKVToolNix homepage**\[1\].

## AUTHOR

**Moritz Bunkus** \<moritz@bunkus.org\>

Developer

## NOTES

- 1\.

  the MKVToolNix homepage

  https://mkvtoolnix.download/
