Truespar Sift
Extract metadata, text, and images from any document. A clean-room replacement for ExifTool and Poppler, built in Rust with bindings for C#, Java, Python, Node.js, and C/C++.
Every Format
JPEG, PNG, TIFF, WebP, HEIF, GIF, BMP, PDF, RAW (CR2, NEF, ARW, DNG, ORF, RW2, PEF, RAF, SRW), QuickTime (MOV/MP4), and ICC profiles. One library handles them all.
Deep Extraction
EXIF, XMP, IPTC, GPS coordinates, MakerNotes from every major camera vendor. PDF text with layout preservation, form fields, annotations, structure trees, and embedded image extraction.
Zero-Copy Performance
Memory-mapped file access, passthrough image extraction, and minimal allocations. Built in Rust with no garbage collector. Processes large files without loading them entirely into memory.
Multi-Language Bindings
Sift ships idiomatic bindings for every major ecosystem. The core library compiles to a native shared library with a C ABI. Each binding wraps this with the conventions developers expect in their language.
| Ecosystem | Package | Binding |
|---|---|---|
| Rust | sift | Native |
| C# / .NET | Sift (NuGet) | P/Invoke + SafeHandles |
| Java | io.truespar:sift | JNI |
| Python | sift (PyPI) | PyO3 |
| Node.js | @truespar/sift | NAPI-RS |
| C / C++ | sift.h | C ABI |
Why Not ExifTool?
ExifTool is a Perl script that has grown over 20 years. It works, but it carries the weight of that history: eval-based value conversions, a single-threaded architecture, and GPL licensing that restricts how it can be embedded in commercial products.
Sift is a clean-room implementation written from specifications, not from ExifTool source. It is MIT/Apache-2.0 licensed, supports the same tag coverage, and can be embedded directly into any application as a native library.