Browse by type
A tag editor with a Qt GUI and a command-line interface. It supports MP4 (iTunes), ID3, Vorbis, Opus, FLAC, and Matroska.
The tag editor can read and write the following tag formats:
Further remarks:
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.
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.
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.
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.
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 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).
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:
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).
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.)
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.
See the release section on GitHub.
tageditor-qt6 package if it is available for your OS.tageditor from the
official repositories.libglx0, libopengl0, and libegl1 are installed on Debian/Ubuntu).QT_QPA_PLATFORM=xcb to disable
native Wayland support if it does not work on your system).B9E36A7275FC61B464B67907E06FE8F53CDC6A4C.B9E36A7275FC61B464B67907E06FE8F53CDC6A4C.The Tag Editor has a Qt-based GUI and a command-line interface. For a C++ library interface, check out the underlying tagparser library.
The GUI should be self-explanatory; a lot of the UI elements have tooltips with further explanations. The basic workflow is quite simple:
You can set the behavior of the editor to keep previous values, so you don't have to enter information like the album name or artist for all files in an album again and again.
The GUI does not support setting multiple values of the same field (besides covers of different types). If a file already contains fields with multiple values, the additional values are discarded. Use the CLI if support for multiple values per field is required. Not all tag formats support this anyway, though.
The GUI does not support batch processing. I recommend using the CLI for this.

This screenshot shows the experimental MusicBrainz/LyricWiki search.

Check out the settings dialog. You can: - Customize which fields the editor shows and in which order. - Change settings regarding the tag processing (ID3 version(s) to be used, preferred character set, usage of padding, etc.). - Set whether unknown/unsupported tags should be ignored/kept or removed. - Set whether ID3v1 and ID3v2 tags should be edited together or separately. - Set the directory used to store temporary files. - Set the desired file layout options (see section "File layout options"). - Enable auto-correction features like trimming whitespaces.
Settings of the GUI do not affect the CLI.
There is also a tool to rename files using the tag information stored in them. The new name for each file is generated by a small JavaScript that can be customized. An example script is provided. Before any actual changes are made, you will see a preview with the gener
$ claude mcp add tageditor \
-- python -m otcore.mcp_server <graph>