$ npm Β· MIT Β· zero setup

exifregistry

The photographer's metadata toolkit.

Inspect, fix and organize your photos from the terminal. It never touches a pixel, and it never loses an original.

$ npm install -g exifregistry
GitHub
or brew install daviarndt/tap/exifregistry
β–Έ RAW Β· HEIC Β· video β–Έ powered by ExifTool + libvips
exifreg
$ exifreg show DSC02481.ARW
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Camera β”‚ Sony A7 IV β”‚
β”‚ Shutter count β”‚ 48,213 β”‚
β”‚ Aperture β”‚ f/2.8 β”‚
β”‚ Shutter β”‚ 1/250s β”‚
β”‚ Taken (DateTimeOriginal) β”‚ 2026:06:01 14:30:00 β”‚
β”‚ GPS β”‚ -23.550500, -46.633300 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
$ exifreg date *.ARW --shift "+2h"
βœ“ Updated dates on 214 files.
$ exifreg resize photo.jpg --max-size 1mb
βœ“ photo.jpg (12.3 MB) β†’ photo.resized.jpg (0.98 MB, q74)
$
Safe by default these files are your life's work, and the tool treats them that way
{{ p.mark }}
{{ p.title }}
{{ p.desc }}
New // your archive, guaranteed

Verified backups.

Checksum-verified copies of your whole library, tracked in a manifest. Deletions never propagate, changed files are versioned instead of overwritten, and one command re-checks every byte to catch silent disk corruption years later. Restore everything, one folder, or just one month of captures.

Read how it works β†’

$ exifreg backup ~/Photos --to /Volumes/Backup --apply
βœ“ 1,214 files copied and verified (18.2 GB).
$ exifreg backup --verify --to /Volumes/Backup
βœ“ Backup is healthy: every file matches its checksum.
// what it does

Everything around the image.

01

Inspect

Beautiful terminal reports of camera, lens, shutter count and GPS, with one-flag export to Markdown.

$ exifreg show DSC02481.ARW -e report.md βœ“ Exported metadata report to report.md
02

Fix metadata

Set GPS from map coordinates, shift wrong clocks, copy tags between files, or strip everything. Every edit keeps a backup.

$ exifreg gps beach.jpg --coords "-23.5505, -46.6333" βœ“ Set GPS of beach.jpg Β· backup saved
03

Organize

Sort into folders from metadata, rename in shooting order, ingest cards with checksums, find duplicates. Previews first, RAW+JPEG stay paired.

$ exifreg organize ./card --by "{year}/{camera}" --apply βœ“ Moved 214 files Β· 0 overwritten
04

Prepare & publish

Render photos in aesthetic colored frames with their EXIF caption, or resize to an exact file-size target.

[ your photo ]
35mm Β· f/2.8 Β· 1/250s Β· ISO 400
// 25 commands

One tool, one job each.

exifreg {{ c.name }}
{{ c.desc }}
// no flags to memorize

Just run exifreg

Run it bare and exifregistry opens a guided interactive mode. Pick what you need from a menu and it walks you through the rest.

$ exifreg
? What would you like to do? (↑↓ to move)
{{ m.caret }} {{ m.icon }} {{ m.label }}
// your photos stay yours

Runs 100% on your machine.

βŒ‚

Local by design

Every command runs offline, on your computer. Even GPS-to-city lookups use a bundled database. Your photos, locations and client work never leave your disk. No cloud, no uploads, no telemetry, no account.

β—‡

Free & open-source

MIT licensed and free forever: no paywalls, no pro tier, no locked features. Every line of code is public on GitHub, so you can verify exactly what touches your files.

✎

Maintained by a photographer

This is not a side demo. It is the tool its author uses on real shoots, so it keeps getting fixed and sharpened. From a photographer, for photographers.

If it saves your archive some day, you can fuel the next feature: β˜• Buy me a coffee