A high-performance Rust implementation of ExifTool for metadata extraction and manipulation.
OxiDex is a memory-safe, drop-in replacement for the Perl-based ExifTool. It provides the same comprehensive metadata support (32,677+ tags across 140+ formats) with significantly better performance through Rust's zero-cost abstractions and parallel processing.
- 3.7-9.7x faster than Perl ExifTool (see benchmarks)
- Memory safe - No buffer overflows, use-after-free, or data races
- Drop-in compatible - Same CLI arguments as original ExifTool
- Cross-platform - Static binaries for Linux, macOS, and Windows
- Library + CLI - Use as a Rust crate or standalone binary
Pre-built binaries available on the Releases page.
# Extract all metadata
oxidex photo.jpg
# Extract specific tags
oxidex -Make -Model -DateTimeOriginal photo.jpg
# Write metadata
oxidex -Artist="Your Name" photo.jpg
# Batch processing
oxidex -r /path/to/photos/
# JSON output
oxidex -json photo.jpg- User Guide - Installation, usage, and format support
- Benchmarks - Performance comparison with Perl ExifTool
- API Reference - Rust library documentation
- GitHub Issues - Bug reports and feature requests
Install development tools via Homebrew:
brew install cargo-watch cargo-nextest cargo-audit cargo-outdatedInstall additional tools via Cargo:
cargo install cargo-tarpaulinThis project uses just as a command runner. Run just to see all available commands:
just # List all commands
just ci # Run full CI checks
just test # Run all tests
just lint # Run clippy linter
just fmt # Format codeContributions welcome! Please ensure:
- Tests pass (
cargo test) - Code is formatted (
cargo fmt) - Clippy lints pass (
cargo clippy)
Inspired by and compatible with ExifTool by Phil Harvey. OxiDex is an independent reimplementation.