PyExifTool
Python wrapper for exiftool
What it is and what it does
PyExifTool wraps Phil Harvey's ExifTool command-line application, allowing Python code to extract metadata from image and video files without spawning a new process for each query. The library runs exiftool in batch mode, launching a single persistent instance that can handle many metadata requests efficiently. It provides three classes of increasing complexity: the base ExifTool class for direct command execution, ExifToolHelper for common operations with automatic error handling, and ExifToolAlpha for experimental community-contributed methods.
The package is designed for developers who need to read EXIF, IPTC, XMP, and other metadata from photos and videos. It supports Python 3.6 and later, runs on Windows, Linux, and Unix-like systems, and has no Python runtime dependencies—only the external exiftool binary is required.
Use it for:
- Extract EXIF timestamps, camera settings, and GPS coordinates from a batch of photos for cataloging or geolocation workflows.
- Read metadata from video files to retrieve duration, codec, resolution, or creation date for media management systems.
- Automate metadata inspection across large photo libraries to identify missing or malformed EXIF data.
- Build image processing pipelines that filter or sort files based on metadata like ISO, aperture, or focal length.
- Integrate metadata extraction into web applications or batch jobs that need to process user-uploaded media files.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyExifTool is a Python wrapper that communicates with Phil Harvey's ExifTool command-line application to extract and read metadata from image and video files in batch mode.
Yes, if you need to extract metadata from images or videos and are comfortable with the external exiftool dependency. The package is stable, has no Python runtime dependencies, and sees regular use. The dual GPLv3+/BSD license requires review for copyleft compliance. The dormant maintenance status is acceptable for a stable wrapper around a mature external tool, but monitor for future Python or exiftool compatibility issues.
Install
pyexiftool on PyPI
pip
pip install pyexiftooluv
uv add pyexiftoolpoetry
poetry add pyexiftoolInstalling PyExifTool
Before you install
Installation is straightforward with no runtime Python dependencies. The package is dormant, but the repository remains active and the codebase is stable; the core ExifTool class is documented as having a stable API.
License in practice
Licensed under dual GPLv3+ and BSD terms (copyleft). Projects using this package must comply with GPLv3+ copyleft obligations unless they choose the BSD alternative; review your project's license compatibility before adopting.
Quickstart
pip install PyExifTool
with exiftool.ExifToolHelper() as et:
metadata = et.get_metadata(["a.jpg", "b.png"])
for d in metadata:
print(d["SourceFile"])
Phil Harvey's exiftool command-line tool must be installed on the system (minimum version 12.15) and accessible on PATH, or the full path must be provided via ExifTool(executable=...).
Verify before relying
- Whether the dormant maintenance status poses risks for future Python or exiftool compatibility issues.
- Performance characteristics when processing very large batches or high-resolution media files.
- Completeness of metadata extraction across all modern image and video formats.
Package facts
| License | GPLv3+/BSD (copyleft) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | dormant — 1,027 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 264,613/month — #8,334 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: PyExifTool-0.5.6-py3-none-any.whl
Keywords: exiftool, image, exif, metadata, photo, video, photography
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pyexiv2pyexiv2 reads and writes image metadata (EXIF,…
copyleft · top 15,000 on PyPI
piexifPiexif reads, writes, and manipulates EXIF…
permissive · top 5,000 on PyPI
ExifReadExtracts Exif metadata from digital image files…
unclear · top 5,000 on PyPI
exifRead, modify, and write EXIF metadata in image…
permissive · top 15,000 on PyPI
imagesizeReads image file headers to extract dimensions,…
permissive · top 1,000 on PyPI
argparse-extExtends Python's standard argparse module with…
copyleft · top 15,000 on PyPI
pyRFXtrxA Python library that communicates with RFXtrx…
copyleft · top 15,000 on PyPI
extractcodeExtracts a wide range of archive formats (tar,…
permissive · top 15,000 on PyPI
PyPDF2PyPDF2 is a pure-Python library for reading,…
permissive · top 1,000 on PyPI