exif
Read and modify image EXIF metadata using Python.
Decision gist · record as of 2026-08-14
Yes, if you need straightforward EXIF read/write without external dependencies. The package is stable, low-friction to install, and has no known vulnerabilities. The dormant maintenance status is a minor concern for long-term support, but the code is mature and the maintainer welcomes contributions. Not suitable if you need active development or guarantees of rapid bug fixes.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.7 or later; image file must be opened in binary mode ('rb' or 'wb').
- Low friction: pure Python wheel with a single runtime dependency (plum-py).
- Last release was 612 days ago; the maintainer notes reduced bandwidth since 2018 but accepts contributions.
License · maintenance · safety
permissive license (permissive) — MIT license (permissive); you can use, modify, and distribute this package with minimal restrictions.
last release 2024-12-10 (612 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 111,163 downloads/mo, #12,430 on PyPI
Alternatives
Verify before relying
from exif import Image
with open('photo.jpg', 'rb') as f:
img = Image(f)
print(img.has_exif)
print(img.gps_latitude)
img.make = 'Modified'
with open('output.jpg', 'wb') as f:
f.write(img.get_file())- Whether plum-py introduces any significant runtime overhead or compatibility concerns.
- Current state of bug fixes and whether dormant status affects reliability for production use.
- Performance characteristics when processing large batches or high-resolution images.
What it is and what it does
exif is a pure-Python library for reading and modifying EXIF metadata embedded in image files. It provides a simple object-oriented interface: load an image file, access EXIF tags as Python attributes (e.g., `image.gps_latitude`, `image.model`), modify or delete them, and write the updated image back to disk. The package handles the binary EXIF format internally, so you work with high-level Python objects rather than raw bytes.
The library supports a wide range of EXIF tags including camera settings (aperture, shutter speed, ISO), GPS coordinates, timestamps, and device information. It requires only plum-py as a runtime dependency and runs on Python 3.7+. The maintainer developed it as a hobby project and now has limited bandwidth, though the package is marked Production/Stable and accepts community contributions.
Use it for
- Batch remove GPS coordinates from photos before sharing them online for privacy.
- Extract camera model, lens, and shooting parameters from a folder of images for analysis.
- Modify image timestamps or device metadata in bulk using a Python script.
- Read GPS location data from photos to build a map of where images were taken.
- Strip or update EXIF tags in automated image processing pipelines.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need straightforward EXIF read/write without external dependencies.
The package is stable, low-friction to install, and has no known vulnerabilities. The dormant maintenance status is a minor concern for long-term support, but the code is mature and the maintainer welcomes contributions. Not suitable if you need active development or guarantees of rapid bug fixes.
Install
exif on PyPI
Before you install
Low friction: pure Python wheel with a single runtime dependency (plum-py). Last release was 612 days ago; the maintainer notes reduced bandwidth since 2018 but accepts contributions. Status is dormant rather than abandoned.
Requires Python 3.7 or later; image file must be opened in binary mode ('rb' or 'wb').
License in practice
MIT license (permissive); you can use, modify, and distribute this package with minimal restrictions.
Quickstart
from exif import Image
with open('photo.jpg', 'rb') as f:
img = Image(f)
print(img.has_exif)
print(img.gps_latitude)
img.make = 'Modified'
with open('output.jpg', 'wb') as f:
f.write(img.get_file())
Verify before relying
- Whether plum-py introduces any significant runtime overhead or compatibility concerns.
- Current state of bug fixes and whether dormant status affects reliability for production use.
- Performance characteristics when processing large batches or high-resolution images.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.7 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packageplum-py |
| Maintenance | Dormant 612 days since the last release |
| First released | |
| Downloads | 111,163 / month, #12,430 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersIntended Audience :: End Users/DesktopLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Multimedia :: Graphics :: Editors |
Evidence: exif-1.6.1-py3-none-any.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 exif metadata python”
- exifRead, modify, and write EXIF metadata in image files using pure…
- piexifPiexif reads, writes, and manipulates EXIF metadata in JPEG and WebP…
- ExifReadExtracts Exif metadata from digital image files in formats including…
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 piexif · ExifRead · imagesize · pyexiv2 · PyExifTool · easy-thumbnails · pillow-jxl-plugin · pillow-heif · ar