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/TageditorREADME
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
- Arch Linux
- For PKGBUILDs, check out my GitHub repository or the AUR.
- There is also a binary repository.
- Tumbleweed, Leap, Fedora
- RPM *.spec files and binaries are available via the openSUSE Build Service.
- remarks
- Install preferably the
tageditor-qt6package if it is available for your OS. - Be sure to add the repository that matches the version of your OS and to keep it in sync when upgrading.
- The linked download pages might be incomplete; use the repositories' URL for a full list.
- Install preferably the
- latest releases: download page, repositories URL, project page
- Git master: download page, repositories URL, project page
- remarks
- RPM *.spec files and binaries are available via the openSUSE Build Service.
- Exherbo
- There is a package in the platypus repository.
- Gentoo
- There is a package in perfect7gentleman's repository.
- Void Linux
- Available as package
tageditorfrom the official repositories.
- Available as package
- Other GNU/Linux systems
- For generic, self-contained binaries, check out the release section on GitHub.
- Requires glibc>=2.26, OpenGL, and libX11.
- openSUSE Leap 15, Fedora 27, Debian 10, and Ubuntu 18.04 are recent enough (be sure
the packages
libglx0,libopengl0, andlibegl1are installe
- openSUSE Leap 15, Fedora 27, Debian 10, and Ubuntu 18.04 are recent enough (be sure
the packages
- Requires glibc>=2.26, OpenGL, and libX11.
- For generic, self-contained binaries, check out the release section on GitHub.
