Skip to main content

cross-platform, Python audio metadata ("tagging") library based on TagLib

Project description



pytaglib is a Python audio tagging library. It is cross-platform and 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.


2023-03-26 pytaglib-2.0.0 has been released. Major improvements:

  • binary wheels are shipped for all Python versions and platforms
  • breaking change: File.path is now a Path object
  • support using File as context manager

For a full list of changes in this and previous releases, see the Changelog.


Use pip:

    pip install pytaglib

In most cases, this should pick a provided binary wheel that bundles the native TagLib library suitable for your platform. If it doesn't, and the installation fails, see below.


>>> import taglib
>>> with taglib.File("/path/to/my/file.mp3", save_on_exit=True) as song:
>>>     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"]
>>> # with save_on_exit=True, file will be saved at the end of the 'with' block

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


This package also installs the pyprinttags script. 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.

Installation Notes

Things are a bit more complicated than usual with Python because pytaglib requires the native (C++) TagLib library.

If there are no binary wheels for your platform, or you want to manually compile pytaglib, you will need to have Taglib installed with development headers,and also development tools for Python.

On Ubuntu, Mint and other Debian-Based distributions, install the libtag1-dev and python-dev packages. On Fedora and friends, these are called taglib-devel and python-devel, respectively. On a Mac, use HomeBrew to install the taglib package. For Windows, see below.

As an alternative, run python in this directory to automatically download and build the latest Taglib version into the build subdirectory (also works on Windows). This requires Python and a suitable compiler to be installed; specific instructions are beyond the scope of this README.

Linux: 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 instally the recent version via pip whenever possible.
  • For Arch users, there is a package in the user repository (AUR).

Manual Compilation: General

You can download or checkout the sources and compile manually:

    pip install .
    # if you want to run the unit tests, use these commands instead
    # pip install .[tests]
    # python -m pytest

Compilation: Windows

Install MS Visual Studio Build Tools (or the complete IE) and include the correct compiler version as detailed here. Also enable cmake in the Visual Studio Installer.


  • open the VS native tools command prompt
  • navigate to the pytaglib repository
  • run python which will download and build the latest official TagLib release
  • run python install


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.

Source Distribution

pytaglib-2.0.0.tar.gz (69.1 kB view hashes)

Uploaded source

Built Distributions

pytaglib-2.0.0-cp311-cp311-win_amd64.whl (227.2 kB view hashes)

Uploaded cp311

pytaglib-2.0.0-cp310-cp310-win_amd64.whl (227.5 kB view hashes)

Uploaded cp310

pytaglib-2.0.0-cp39-cp39-win_amd64.whl (228.2 kB view hashes)

Uploaded cp39

pytaglib-2.0.0-cp38-cp38-win_amd64.whl (228.1 kB view hashes)

Uploaded cp38

pytaglib-2.0.0-cp37-cp37m-win_amd64.whl (227.9 kB view hashes)

Uploaded cp37

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page