exiftool-rs
A pure Rust reimplementation of ExifTool v13.53 — read, write, and edit metadata in image, audio, video, and document files. No unsafe code, no Perl dependency, no system libraries.

Features
- 194/194 test files (100%) produce identical tag names as Perl ExifTool v13.53
- 93 format readers covering all Perl ExifTool modules
- 15 format writers: JPEG, TIFF, PNG, WebP, PSD, PDF, MP4, MKV, AVI, WAV, FLAC, MP3, OGG, CR2, HEIF/AVIF
- 17 MakerNote manufacturers with deep sub-table decoders
- Timed metadata extraction (
-ee) for dashcams, action cams, drones - Optional GUI with 23 languages (3230 tags translated per language)
- 0 compiler warnings, no unsafe code, minimal dependencies
Supported Formats
Read (93 format modules)
| Category | Formats |
|---|---|
| Images | JPEG, TIFF, PNG, WebP, PSD, BMP, GIF, HEIF/AVIF, ICO, PPM, PGF, BPG, XCF, MIFF, PICT, PCX, MNG, JXR, FLIF, Radiance HDR, OpenEXR, PSP, InDesign |
| Raw | CR2, CR3, CRW, CRM, NEF, DNG, ARW, ORF, RAF, RW2, PEF, SR2, SRW, X3F, IIQ, 3FR, ERF, MRW, Rawzor, KyoceraRaw |
| Video | MP4/MOV, AVI, MKV/WebM, MPEG, MTS/M2TS, WTV, DV, FLV, SWF, MXF, ASF/WMV, Real (RM/RAM) |
| Audio | MP3, FLAC, WAV, OGG, Opus, AAC, AIFF, APE, MPC, WavPack, DSF, Audible |
| Documents | PDF, RTF, HTML, PostScript, DjVu, OpenDocument (ODT/ODS/ODP/ODG), TNEF |
| Fonts | TrueType (TTF), OpenType (OTF), WOFF/WOFF2, AFM, PFA, PFB |
| Scientific | DICOM, MRC, FITS, XISF, DPX, LIF (Leica) |
| Archives | ZIP, 7Z, RAR, GZIP, ISO, Torrent |
| Other | EXE/ELF/Mach-O, LNK, VCard, ICS, JSON, PLIST, PCAP, MIE, MOI, Lytro LFP, FLIR FPF, CaptureOne EIP, Palm PDB, FlashPix (OLE), iWork, Red R3D |
Write (15 formats)
| Category | Formats |
|---|---|
| Images | JPEG, TIFF, PNG, WebP, PSD |
| Raw | CR2, HEIF/AVIF |
| Video | MP4, MKV, AVI |
| Audio | MP3, FLAC, WAV, OGG |
| Documents |
MakerNote Support (17 manufacturers)
| Manufacturer | Sub-table Decoders |
|---|---|
| Canon | CameraSettings, ShotInfo, AFInfo, ColorData (WB), CustomFunctions, VRD, CIFF, CTMD |
| Nikon | NikonCapture (D-Lighting, Crop, ColorBoost, UnsharpMask), ScanIFD, CaptureOffsets |
| Sony | SonyIDC, lens tables (400+ entries) |
| Pentax | CameraSettings (K10D/K-5), AEInfo, LensInfo, FlashInfo, CameraInfo |
| Olympus | Equipment, CameraSettings, FocusInfo, RawDevelopment |
| Panasonic | RW2 sub-IFDs, AdvancedSceneMode composite |
| Fujifilm | RAF WB, PreviewImage |
| Samsung | MakerNote IFD |
| Sigma | MakerNote IFD, X3F raw |
| Casio | Type 1, Type 2 |
| Ricoh | MakerNote IFD |
| Minolta | MakerNote IFD |
| Apple | MakerNote IFD |
| MakerNote IFD | |
| FLIR | Thermal metadata, FPF |
| GE | MakerNote IFD |
| GoPro | GPMF timed metadata |
Timed Metadata (-ee)
| Source | Formats |
|---|---|
| Dashcams | freeGPS (Novatek, Viofo, Azdome, Akaso, Vantrue, INNOVV, Nextbase), Kenwood (DRV-A510W) |
| Action cams | GoPro GPMF (GPS, accelerometer, gyroscope), Insta360 |
| Drones | DJI telemetry, Yuneec/Autel (subtitle tracks) |
| Android | Google CAMM (camera motion metadata, types 0-7) |
| Generic | NMEA sentences (RMC, GGA), RVMI, Garmin |
Library Usage
use ExifTool;
let et = new;
let tags = et.extract_info.unwrap;
for tag in &tags
CLI Usage
# Install (CLI only)
# Install with GUI
# Read metadata
# Short tag names
# JSON output
# Write tags
# Show groups
# Numeric values
# Extract embedded GPS from dashcam video
GUI
exiftool-rs includes an optional graphical interface built with egui.
# Install with GUI support
# Launch the GUI
# Or with a specific language
Features:
- Open files or folders, navigate with arrow keys
- View all metadata grouped by category
- Double-click any writable tag to edit it
- Copy all metadata to clipboard
- Save edits back to the file
- 23 languages supported (CJK, Arabic, Hindi, Bengali fonts included via noto-fonts-dl)
Supported Languages (23)
| Code | Language | Code | Language | Code | Language |
|---|---|---|---|---|---|
en |
English | fr |
French | pl |
Polish |
ar |
Arabic | hi |
Hindi | pt |
Portuguese |
bn |
Bengali | it |
Italian | ru |
Russian |
cs |
Czech | ja |
Japanese | sk |
Slovak |
de |
German | ko |
Korean | sv |
Swedish |
en_ca |
English (CA) | nl |
Dutch | tr |
Turkish |
en_gb |
English (UK) | fi |
Finnish | zh |
Chinese (Simplified) |
es |
Spanish | zh_tw |
Chinese (Traditional) |
Each language includes 3230 translated tag descriptions plus all UI strings.
Platform Notes
| OS | Icon in binary | Notes |
|---|---|---|
| Windows | Yes | Icon embedded in .exe via winres |
| macOS | No | Requires a .app bundle with .icns |
| Linux | No | ELF binaries don't support embedded icons |
CLI Options
| Option | Description |
|---|---|
-s |
Short tag names |
-s2 |
Very short (tag names only) |
-G |
Show group names |
-n |
Numeric output (no print conversion) |
-j |
JSON output |
-csv |
CSV output |
-X |
XML/RDF output |
-b |
Binary output (thumbnails, etc.) |
-ee |
Extract embedded data (GPS from dashcams, etc.) |
-r |
Recursively scan directories |
-ext EXT |
Process only files with extension EXT |
-TAG |
Extract specific tag(s) |
-ver |
Show version |
-TAG=VALUE |
Write tag |
-TAG= |
Delete tag |
-overwrite_original |
Overwrite without backup |
-stay_open True |
Keep running, read commands from stdin |
-lang LANG |
Set language (GUI and tag descriptions) |
-v |
Verbose output |
-htmlDump |
HTML hex dump of file structure |
-validate |
Validate metadata |
-diff |
Show differences between files |
-args |
Print in ExifTool arg format |
-php |
PHP array output |
-progress |
Show progress during processing |
-scanForXMP |
Scan file for XMP data |
Testing
# Unit tests
# ISO-functional test against Perl ExifTool's 194 test files
# No Perl required — reference files included in tests/expected/
# 194/194 files (100%) produce identical tag names — 11625 tags verified
Building
# CLI only
# CLI + GUI
The gui feature is optional and not included by default. Without it, the GUI dependencies (egui, eframe, image, rfd, noto-fonts-dl) are not downloaded or compiled.
License
GPL-3.0-or-later (same as the original Perl ExifTool)
Authors
- Sylvain (@Le-Syl21) — Project creator
- Claude (Anthropic) — Implementation
Acknowledgements
Based on ExifTool by Phil Harvey. Tag tables and print conversions are generated from the ExifTool Perl source.