SkillAgentSearch skills...

Tageditor

A tag editor with Qt GUI and command-line interface supporting MP4/M4A/AAC (iTunes), ID3, Vorbis, Opus, FLAC and Matroska

Install / Use

/learn @Martchus/Tageditor
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Tag Editor

A tag editor with a Qt GUI and a command-line interface. It supports MP4 (iTunes), ID3, Vorbis, Opus, FLAC, and Matroska.

Supported formats

The tag editor can read and write the following tag formats:

  • iTunes-style MP4/M4A tags (MP4-DASH is supported)
  • ID3v1 and ID3v2 tags
    • Conversion between ID3v1 and different versions of ID3v2 is possible.
    • These tags are mainly for use in MP3 files, but can be added to any kind of file.
  • Vorbis, Opus and FLAC comments in Ogg streams
    • Cover art via "METADATA_BLOCK_PICTURE" is supported.
  • Vorbis comments and "METADATA_BLOCK_PICTURE" in raw FLAC streams
  • Matroska/WebM tags and attachments

Further remarks:

  • Unsupported file contents (such as unsupported tag formats) are generally preserved as is.
  • Note that APE tags are not supported. APE tags at the beginning of a file are strongly unrecommended and are thus discarded when applying changes. APE tags at the end of the file are preserved as is when applying changes.

Additional features

The tag editor can also display technical information such as the ID, format, language, bitrate, duration, size, timestamps, sampling frequency, FPS and other information of the tracks.

It also allows one to inspect and validate the element structure of MP4 and Matroska files.

Backup/temporary files

Sometimes the tag editor has to rewrite the entire file to apply changes. This leads to the creation of a temporary file. With the GUI's default settings, this is even enforced to be conservative as the temporary files also serve as a backup in case something goes wrong (e.g., your computer crashes while saving, or a bug within the tag editor breaks particularly structured files). When using the CLI, it is therefore also recommended to use --force-rewrite.

The next section describes how to tweak settings to avoid rewriting at the cost of having no backup, having some padding within the files and/or storing tags at the end of the file.

Nevertheless, it will not always be possible to avoid rewriting a file in all cases. You can configure a directory for temporary files within the GUI settings or with the CLI option --temp-dir. Then you can easily clean up all temporary files at once. For efficiency, the temporary directory should be on the same file system as the files you are editing. A feature to delete temporary files automatically has not yet been implemented.

File layout options

Tag position

The editor allows you to choose whether tags should be placed at the beginning or at the end of an MP4/Matroska file. Placing tags at the end of the file can avoid having to rewrite the entire file to apply changes.

In the CLI, this is controlled via the --tag-pos option. To enforce a specific --tag-pos, even if this requires the file to be rewritten, combine it with the --force option.

ID3v2 tags and Vorbis/Opus comments can only be placed at the beginning. ID3v1 tags can only be placed at the end of the file. Hence, this configuration has no effect when dealing with such tags.

Index position

It is also possible to control the position of the index/cues. However, this is currently only supported when dealing with Matroska files.

Note: This can not be implemented for MP4 since tags and index are tied to each other. When dealing with MP4 files, the index position will always be the same as the tag position.

Faststart

Putting the index at the beginning of the file is sometimes called faststart.

For forcing faststart via the CLI, the following options are required:

tageditor set --index-pos front --force

Padding

Padding allows for adding additional tag information without rewriting the entire file or appending the tag. The usage of padding can be configured:

  • minimum/maximum padding: The file is rewritten if the padding would fall below or exceed the specified limits.
  • preferred padding: If the file is rewritten, the preferred padding is used.

It is also possible to force rewriting the entire file to ensure the preferred padding is used.

The relevant CLI options are --min-padding, --max-padding, --preferred-padding and --force-rewrite.

Taking advantage of padding is currently not supported when dealing with Ogg streams (it is supported when dealing with raw FLAC streams).

Avoid rewriting files

As explained in the "Backup/temporary files" section, this is not a good idea, as the temporary file that is created when rewriting the entire file also serves as a backup. However, if you nevertheless want to avoid rewriting the file as much as possible, set the following in the GUI's "File layout" settings:

  • "Force rewrite…" option: unchecked
  • "Use preferred position…" options: unchecked
  • Minimum padding: 0
  • Maximum padding: 429496729 (simply a very high number)

When using the CLI, you just need to add --max-padding 429496729 to the CLI arguments (and avoid any of the other arguments mentioned in the previous sections).

Improve performance

Editing large files (especially Matroska files) can take some time. To improve performance, put the index at the end of the file (CLI option --index-pos back) because then the size of the index will never have to be recalculated. Also, follow the advice from the "Backup/temporary files" section to force rewriting and to put the temporary directory on the same filesystem as the file you are editing. Forcing a rewrite can improve performance because then the tag editor will not even try to see whether it could be avoided and can thus skip computations that can take a notable amount of time for large Matroska files.

Of course, being able to avoid a rewrite would still be more optimal. Check out the previous section for how to achieve this. To improve performance further when avoiding a rewrite, put the tag at the end (CLI option --tag-pos back). Then the tag editor will not even try to put tags at the front and can thus skip a few computations. (Avoiding a rewrite is still not a good idea in general.)

Matroska-related remarks

The Matroska container format (and WebM, which is based on Matroska) deviates from common conventions. As a result, not all CLI examples provided below are applicable to these file types.

In general, a single Matroska file can contain multiple tags, each with a target that determines what the tag's fields apply to, such as an individual song or the entire album. When using the CLI or GUI, it is important to be mindful of which tag/target you are adding fields to.

Matroska also does not use one combined field for the track/disk number and total as other formats do. It instead uses the separate fields part and totalparts, which again need to be added to a tag of the desired target (e.g., 50/"ALBUM" for the track number and total).

Check out the official Matroska documentation on tagging for details. It also contains examples for audio content and video content.

Note that Tag Editor does not support the XML format mentioned in the Matroska documentation. In the GUI, you can simply add/remove/edit tags and their targets via the controls at the top of the editor. In the settings, you can also specify that tags of certain targets should be added automatically when loading a file. When using the CLI, you can specify that a field should be added to a tag of a certain target by specifying the target before that field. You can also explicitly remove tags of certain targets. Examples of the concrete CLI usage can be found below.

Download

Source

See the release section on GitHub.

Packages and binaries

View on GitHub
GitHub Stars839
CategoryCustomer
Updated8h ago
Forks62

Languages

C++

Security Score

100/100

Audited on Apr 10, 2026

No findings