pyexiv2
Read and write image metadata, including EXIF, IPTC, XMP, ICC Profile.
Decision gist · record as of 2026-08-14
Yes, if your project is open-source or can accept GPLv3 copyleft. pyexiv2 is actively maintained, has no known vulnerabilities, and offers comprehensive metadata support across major image formats and platforms. Install friction is moderate due to prebuilt wheels; no source build required for standard platforms. Not suitable for proprietary applications.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires CPython ≥3.8.
- Not thread-safe due to global state in the underlying C++ library.
- Cannot read images larger than 2GB or modify images larger than 1GB.
License · maintenance · safety
GPLv3 (copyleft) — GPLv3 copyleft license: any application that links or distributes pyexiv2 must also be open-source under a compatible license. Proprietary or closed-source projects cannot use this package.
last release 2026-08-02 (12 days) · last repo commit 2026-08-02 · 246 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 80,241 downloads/mo, #14,304 on PyPI
Alternatives
Verify before relying
pip install pyexiv2
import pyexiv2
image = pyexiv2.Image('photo.jpg')
image.read()
print(image.exif_dict)- Whether prebuilt wheels are the only distribution method or if source builds are possible on unsupported platforms.
- Performance characteristics and typical use-case latency for metadata operations on standard image sizes.
What it is and what it does
pyexiv2 is a Python binding to the C++ Exiv2 library that lets you read and write image metadata standards—EXIF, IPTC, XMP, and ICC Profile—directly from Python. It supports opening images by file path or from raw bytes, handles Unicode in both paths and metadata, and works on 64-bit Linux, macOS, and Windows with CPython ≥3.8.
The library is built on pybind11 and exposes the full metadata capabilities of Exiv2, including support for many image formats. However, it has two important limitations: it cannot read images larger than 2GB or modify images larger than 1GB, and it is not thread-safe because the underlying C++ code uses global state.
Use it for
- Extract EXIF data (camera settings, GPS, timestamps) from photos for cataloging or analysis.
- Batch-edit image metadata (tags, copyright, keywords) across a photo library.
- Read or strip ICC color profiles from images for color-management workflows.
- Embed or modify XMP metadata in images for digital asset management systems.
- Validate or repair IPTC metadata in press photos or archival images.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if your project is open-source or can accept GPLv3 copyleft.
pyexiv2 is actively maintained, has no known vulnerabilities, and offers comprehensive metadata support across major image formats and platforms. Install friction is moderate due to prebuilt wheels; no source build required for standard platforms. Not suitable for proprietary applications.
Install
pyexiv2 on PyPI
Before you install
Medium install friction: prebuilt wheels available for CPython 3.8 and later on Linux, macOS, and Windows, but no source distribution listed. Active maintenance with a release 12 days ago.
Requires CPython ≥3.8. Not thread-safe due to global state in the underlying C++ library. Cannot read images larger than 2GB or modify images larger than 1GB.
License in practice
GPLv3 copyleft license: any application that links or distributes pyexiv2 must also be open-source under a compatible license. Proprietary or closed-source projects cannot use this package.
Quickstart
pip install pyexiv2
import pyexiv2
image = pyexiv2.Image('photo.jpg')
image.read()
print(image.exif_dict)
Verify before relying
- Whether prebuilt wheels are the only distribution method or if source builds are possible on unsupported platforms.
- Performance characteristics and typical use-case latency for metadata operations on standard image sizes.
Package facts
| License | GPLv3 copyleft |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 12 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 80,241 / month, #14,304 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: GNU General Public License v3 (GPLv3)Operating System :: MacOSOperating System :: Microsoft :: WindowsOperating System :: POSIX :: Linux |
Evidence: pyexiv2-2.16.0-cp310-none-macosx_15_0_arm64.whl; pyexiv2-2.16.0-cp310-none-macosx_15_0_x86_64.whl; pyexiv2-2.16.0-cp310-none-manylinux2014_aarch64.whl; pyexiv2-2.16.0-cp310-none-manylinux2014_x86_64.whl; pyexiv2-2.16.0-cp310-none-win_amd64.whl; pyexiv2-2.16.0-cp311-none-macosx_15_0_arm64.whl; pyexiv2-2.16.0-cp311-none-macosx_15_0_x86_64.whl; pyexiv2-2.16.0-cp311-none-manylinux2014_aarch64.whl; pyexiv2-2.16.0-cp311-none-manylinux2014_x86_64.whl; pyexiv2-2.16.0-cp311-none-win_amd64.whl; pyexiv2-2.16.0-cp312-none-macosx_15_0_arm64.whl; pyexiv2-2.16.0-cp312-none-macosx_15_0_x86_64.whl; pyexiv2-2.16.0-cp312-none-manylinux2014_aarch64.whl; pyexiv2-2.16.0-cp312-none-manylinux2014_x86_64.whl; pyexiv2-2.16.0-cp312-none-win_amd64.whl; pyexiv2-2.16.0-cp313-none-macosx_15_0_arm64.whl; pyexiv2-2.16.0-cp313-none-macosx_15_0_x86_64.whl; pyexiv2-2.16.0-cp313-none-manylinux2014_aarch64.whl; pyexiv2-2.16.0-cp313-none-manylinux2014_x86_64.whl; pyexiv2-2.16.0-cp313-none-win_amd64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “read write image metadata”
- pyexiv2pyexiv2 reads and writes image metadata (EXIF, IPTC, XMP, ICC…
- python-xmp-toolkitRead and write XMP metadata in image and document files by wrapping…
- tifffileRead and write TIFF files and TIFF-like formats (BigTIFF, OME-TIFF,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Graphics packages
Pillow adds image processing capabilities to Python, providing file format support, efficient pixel data handling, and image manipulation operations.
Install it if you need to work with images in Python—it is the de facto standard for this task.
fonttools manipulates font files in multiple formats (TrueType, OpenType, AFM, Type 1, Mac-specific) and includes TTX, a tool to convert fonts to and from XML text format.
Install it if you need to read, write, or manipulate fonts programmatically or via the TTX command-line tool.
Enables matplotlib figures to display inline directly within Jupyter notebooks and IPython environments instead of in separate windows.
PyMuPDF extracts, renders, converts, and manipulates PDF and other document formats (XPS, EPUB, images, Office files via Pro) with high performance, providing text, tables, images, and metadata with precise layout information.
The AGPL license requires careful review if you are building proprietary software—commercial licensing is available from Artifex.
pypdfium2 is a Python binding to PDFium that enables PDF rendering, inspection, manipulation, and creation through a ctypes interface to Google's PDFium library.
Install it if you need PDF rendering, inspection, or manipulation in Python; the medium install friction is offset by comprehensive platform support.
Altair is a declarative Python library for creating interactive statistical visualizations by writing simple, readable code that compiles to Vega-Lite specifications.
See also PyExifTool · python-xmp-toolkit · piexif · exif · ExifRead · imagesize · tifffile · pillow-heif · ccimport · pybind11