TagLib

TagLib Audio Meta-Data Library

TagLib is a library for reading and editing the meta-data of several popular audio formats. Currently it supports both ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack and TrueAudio 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 rather than my personal address!

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 advance 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 mades 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 dependancies) and does provide Glib-style C bindings (currently for the generic API only)

TagLib 1.5 Release - February 21, 2008

Changes from 1.4 to 1.5

  • Support for Mac OS X and Microsoft Windows
  • Distributed under the MPL (in addition to the previous LGPL license)
  • Added support for Speex files
  • Added support for TrueAudio files
  • Added support for WavPack files
  • Added support for ID3v2 general encapsulated object frames
  • Added support for ID3v2 unsynchronized lyrics frames
  • Added support for ID3v2 URL frames
  • Propper exports of all public classes / functions
  • Updated the APE::Item API to work with value lists
  • Added support to the FileRef class for new Xiph (Ogg) extensions
  • Made the samples per frame for MPEG headers accessible
  • Made MP3 Xing headers accessible
  • Prevent invalid encodings from being written to ID3v1 tags
  • Non-Latin1 ID3v2 text frames are automatically converted to UTF-8 on write (if they are not explicitly set to UTF-16)
  • Added support for reading ID3v2.2/3 unsynchronized tags
  • Made it possible to search for ID3v2 comment frames by description
  • Fixed a number of bugs in ID3v2 relative volume adjustment reading and writing
  • Added work arounds for iTunes writing invalid ID3v2 frame lengths
  • Added work arounds for iTunes not being able to correctly parse numerical ID3v2 genres
  • Added work arounds for iTunes putting non-text information in ID3v2 comment frames
  • Added a function to export strings to std::wstring
  • Added a function to check ASCII compatibility of strings
  • Added a function to check Latin1 compatibility of strings
Older Releases

Language Bindings

Projects Using TagLib

There are quite a few projects using TagLib already. Here's a partial list. If you know of something else, please send me a mail with a link and I'll add it here. (Note that inclusion here is not an endorsement of the listed software.)

JuK Jukebox for KDE
amaroK Music player for KDE
MusicCube Cross Platform Jukebox
Madman Music Manager
IMMS Intelligent Multimedia Management System
MPEG Menu System Version2 Multimedia Playback Menu System
KTag KDE Based Tagging Application
K-Yamo Tagger and music organizer for KDE
Prokyon3 Multiplatform music manager
Tellico Collection manager for KDE
Audacious Media Player GTK2 Based Music Player (XMMS, BMP family)
Sonata GTK+ based music client for MPD
Quick File Rename Shareware, meta-data aware batch file renamer for Windows
Last.fm Social music site
Goggles Music Manager Music manager that uses the FOX toolkit
Gnomad 2 Music manager for the Creative NOMAD, Creative Zen and Dell DJ MP3 players
GNOME Commander Two-pane graphical file manager for GNOME

SVN Access

While TagLib doesn't directly use anything KDE related it is largely developed by KDE developers. As such it's hosted in the "kde-support" module of KDE's SVN repository. You can check get a copy via anonymous SVN with:

svn co svn://anonsvn.kde.org/home/kde/trunk/kdesupport

There's more information and mirrors listed at the KDE Developer's Corner.

Microsoft Windows

As of version 1.5 TagLib is officially supported under Microsoft Windows. TagLib may be build from source using the CMake build system on Windows. There are also binaries available here.

Apple OS X

A Mac OS X (Universal) framework is available here.

Most Linux and UNIX distributions include TagLib. The source may be build using the standard configure and make commands.