Skip to main content

cross-platform, Python 2.x/3.x audio metadata ("tagging") library based on TagLib

Project description

Build Status PyPI version

pytaglib is a Python audio tagging library. It is cross-platform, works with all Python versions, and is very simple to use yet fully featured:

pytaglib is a very thin wrapper (<150 lines of code) around the fast and rock-solid TagLib C++ library.

Get it

In most cases, you should install pytaglib with pip:

pip install pytaglib

See installation notes below for requirements and manual compilation.


>>> import taglib
>>> song = taglib.File("/path/to/my/file.mp3")
>>> song.tags
{'ARTIST': ['piman', 'jzig'], 'ALBUM': ['Quod Libet Test Data'], 'TITLE': ['Silence'], 'GENRE': ['Silence'], 'TRACKNUMBER': ['02/10'], 'DATE': ['2004']}

>>> song.length
>>> song.tags["ALBUM"] = ["White Album"] # always use lists, even for single values
>>> del song.tags["DATE"]
>>> song.tags["GENRE"] = ["Vocal", "Classical"]
>>> song.tags["PERFORMER:HARPSICHORD"] = ["Ton Koopman"]

For detailed API documentation, use the docstrings of the taglib.File class or view the source code directly.

Note: pytaglib uses unicode strings (type str in Python 3 and unicode in Python 2) for both tag names and values. The library converts byte-strings to unicode strings on assignment, but it is recommended to provide unicode strings only to avoid encoding problems.

Installation Notes #installnotes

The most recommended installation method is

pip install pytaglib

subject to the following notes:

  • Ensure that pip points to the correct Python version; you might need to use, e.g., pip-3.5 if you want to install pytaglib for Python 3.5 and your system’s default is Python 2.7.

  • You may need administrator rights to install a package, i.e., sudo pip install pytaglib on Unix or running the command on a Admin console on windows

  • Alternatively, install locally into your user home with pip install --user pytaglib.

  • You need to have taglib installed with development headers (package libtag1-dev for debian-based linux, brew install taglib on OS X).

  • If taglib is installed at a non-standard location, you can tell pip where to look for its include (-I) and library (-L) files:

    pip install --global-option=build_ext --global-option="-I/usr/local/include/" --global-option="-L/usr/local/lib" pytaglib

If the above does not work, continue reading for alternative methods of installation.

Linux / Unix

Distribution-Specific Packages

  • Debian- and Ubuntu-based linux flavors have binary packages for the Python 3 version, called python3-taglib. Unfortunatelly, they are heavily outdated, so you should use the above “pip” method whenever possible.

  • For Arch users, there is a package in the user repository (AUR) which I try to keep up-to-date.

    Manual Compilation

    Alternatively, you can download / checkout the sources and compile manually:

    python build
    python test  # optional
    sudo python install

You can manually specify taglib’s include and library directories:

python build --include-dirs /usr/local/include --library-dirs /usr/local/lib

Note: The taglib Python extension is built from the file taglib.cpp which in turn is auto-generated by Cython from taglib.pyx. To re-cythonize this file instead of using the shipped taglib.cpp, invoke with the --cython option.


Currently, the PyPI archive contains a binary version only for Python3.5/x64. For different combinations of Python version and architecture, you need to build yourself.

Note: The following procedure was tested for Python 3.5 on x64 only. Other python versions probably require some more work; see e.g. this page.

  1. Install Microsoft Visual Studio 2015 Community Edition. In the installation process, be sure to enable C/C++ support.
  2. Download and build taglib:
    1. Download the current taglib release and extract it somewhere on your computer.
    2. Start the VS2015 x64 Native Tools Command Prompt. On Windows 8/10, it might not appear in your start menu, but you can find it here: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts
    3. Navigate to the extracted taglib folder and type: cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=".\taglib-install" to generate the Visual Studio project files.
    4. Type msbuild INSTALL.vcxproj /p:Configuration=Release which will “install” taglib into the taglib-install subdirectory.
  3. Still in the VS2015 command prompt, navigate to the pytaglib directory.
  4. Tell pytaglib where to find taglib: set TAGLIB_HOME=C:\Path\To\taglib-install
  5. Build pytaglib: python build and install: python install


This package also installs the small script pyprinttags. It takes one or more files as command-line parameters and will display all known metadata of that files on the terminal. If unsupported tags (a.k.a. non-textual information) are found, they can optionally be removed from the file.


For bug reports or feature requests, please use the issue tracker on GitHub. For anything else, contact me by email.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pytaglib, version 1.4.2
Filename, size File type Python version Upload date Hashes
Filename, size pytaglib-1.4.2-cp35-cp35m-win32.whl (228.9 kB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size pytaglib-1.4.2-cp35-cp35m-win_amd64.whl (286.5 kB) File type Wheel Python version cp35 Upload date Hashes View hashes
Filename, size pytaglib-1.4.2-cp36-cp36m-win32.whl (231.3 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size pytaglib-1.4.2-cp36-cp36m-win_amd64.whl (290.1 kB) File type Wheel Python version cp36 Upload date Hashes View hashes
Filename, size pytaglib-1.4.2.tar.gz (110.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page