TagLib
TagLib Audio Meta-Data Library
TagLib is a library for reading and editing the metadata of several popular audio formats. Currently, it supports various metadata containers such as ID3v1, ID3v2 and Vorbis comments for MP3, MP4, AAC, Ogg, Opus, FLAC, Speex, APE, MPC, WavPack, WAV, AIFF, TrueAudio, Matroska, WebM, ASF, WMA, DSF, DFF and tracker (MOD, XM, S3M, IT) files.
TagLib is distributed under the GNU Lesser General Public License (LGPL) and Mozilla Public License (MPL). Essentially that means that it may be used in proprietary applications, but if changes are made to TagLib they must be contributed back to the project. Please review the licenses if you are considering using TagLib in your project.
There is some general information about the motivation and workings of TagLib that can be found in the API documentation.
Contact:
Please, for all questions related to TagLib and / or patches use the development list. Bugs should be reported at the GitHub bug tracker.
Goals and Features:
- TagLib is fast - tests have shown it to be about 6 times faster than id3lib and 3 times faster than libvorbisfile at reading tags (CPU time)
- TagLib is clean - TagLib is written in clean, object oriented C++ using a programming style common in KDE and Qt library programming
- TagLib is easy - TagLib offers an abstraction layer that makes it easy to ignore the differences between the different file formats and their implementations
- TagLib is powerful - for those that want to look under the hood TagLib provides access to the implementations of the individual file formats and provides a toolkit for doing advanced manipulation of audio meta-data
- TagLib is well documented - Every class, namespace, function and enumeration in TagLib is documented
- TagLib supports Unicode - both ID3v2 and Ogg Vorbis standards are designed to support Unicode, so is TagLib (many tagging libraries and frontends are not)
- TagLib is extensible - TagLib does not implement every feature of ID3v2, but does instead make it possible for application authors to extend TagLib to support the specific features that they need in their applications
- TagLib is not toolkit specific - while TagLib does use KDE-style programming conventions and C++ by default, it does not link to either Qt or Glib (in fact it has no external dependencies) and does provide Glib-style C bindings (currently for the generic API only)
TagLib 2.3.1 Release - July 20, 2026
- Matroska: Fix crash when seek head is invalid or missing.
- Matroska: Check element length, support unknown size length, skip invalid elements.
- Matroska: Allow Chapters without a ChapterUID.
- Fix data length indicator check for compressed ID3v2 frames.
- MP4: Use
LongLonginstead ofUIntforcnIDatom to support large catalog IDs. - MP4: Fix destructor and assignment operator for
MP4::Chapter. - MP4: Let
hasiXMLData(),hasBEXTData()track on-disk state rather than in-memory state. - MP4: Support NI STEM atoms with 64-bit length.
- MP4: Enlarge limit number of MP4 atoms at top level.
- MP4: Avoid excessive sample allocations with invalid
stscfor QT chapters. - XM: Correctly save XM tracker files with samples.
Language Bindings
- C (Abstract API only, included with the library.)
- Perl
- Python
- Ruby
- Rust
- Go
- Node
- Dart
- Swift
Projects Using TagLib
There are hundreds of projects that use TagLib. Here’s a small selection of them:
| VLC Media Player | Multi-purpose media player |
| Kodi | Kodi Media Center |
| Last.fm | Social music site |
| Amazon Kindle | eBook Reader |
| Amazon Music | Music Player and Store |
| Pro Tools | Digital Audio Workstation |
| Native Instruments Traktor | Profesional DJing Software |
| Native Instruments Battery | Drum Sampler |
| Mixxx | DJing Software |
| Izotope RX | Audio Editor |
| Gerbera | UPnP MediaServer |
| Qmmp | Qt-based Multimedia Player (XMMS, Winamp family) |
| Strawberry Music Player | Qt Based Music Player (Fork of Clementine) |
| Goggles Music Manager | Music manager that uses the FOX toolkit |
| GNOME Commander | Two-pane graphical file manager for GNOME |
| Kid3 | Audio Tagger |
| ShadowTag | Audio metadata editor for macOS |
| loudgain | ReplayGain 2.0 loudness normalizer |
| rsgain | ReplayGain 2.0 loudness normalizer |
Git Access
TagLib is hosted on GitHub. You can check out TagLib’s development source there.
Building
TagLib can be built on various UNIXes (including macOS) and Windows using CMake. Most Linux distributions ship with TagLib already.