Local-first macOS video organization toolkit.
Drag folders onto a tool, preview with Dry Run, and tidy libraries on your machine — sort, rename, slow-mo, 1-minute stamps, plus GPS / iPhone helpers with a built-in City / GPS Map (5-mile pins).
↓ Download Libra.dmg · All releases
- Drag-and-drop tools — drop a folder to scan; Dry Run previews automatically
- Undo last run — put moved files back (or delete created copies)
- Dry Run first — bright yellow Preview only toggle; Desktop reports named
Libra Sorter Dry Run 1.txt(tool name swaps per mode) - Home grid — Libra Sorter, iPhone Model Sort, GPS, Slo-Mo, 1-Min-Adjuster, and Photos Only
- Libra Sorter — ProVid, VidRes, ProMax, MaxVid; optional prefix replaces the original name (
katie 720p W30 002.mp4); KeepName keeps original filenames - City / GPS Map — MapKit pins clustered within 5 miles, merged by city once names resolve; a large always-on map on the GPS tool, a collapsible mini-map on the others; click a pin for a bottom strip of filename buttons that open the video externally
- GPS — count pills filter map pins (All, resolution, Has location, Apple device, duplicates — visual only, never changes what Write touches); Resolve city names is the only action that looks up locations, fills Preview with the exact
City, ST/folders Write will use (cached, never re-geocoded), and is required before Write when coordinates exist;No-GPSwhen location is missing,GPS/when a place can't be named - Optional date / camera folders — extra sort keys on the sort tools
- Duplicates — likely extras (same size, duration, resolution, fps, codec) go in a Duplicates folder
- Identification — each row shows resolution, fps, iPhone/Apple, and GPS coordinates (not the container; the filename already has that)
- iPhone Model Sort — iPhone / Other Apple / Not Apple (videos)
- Transform — Slo-Mo copies (½× or ¼×, audio kept-and-slowed or removed by your choice) and 1-Min-Adjuster sequential timestamps (these need ffmpeg)
- 1-Min-Adjuster undo — "Change originals" puts each untouched original in Trash; Undo restores the original bytes and removes the adjusted copy
- Resilient import — cancelable scans; per-file probe failures don’t stall the batch
- Local-first organize — sort, rename, and file moves stay on your Mac. Opening or filtering the GPS map never contacts Apple — only the Resolve city names button reverse-geocodes. Check for Updates talks to GitHub when you ask.
- Native SwiftUI — Apple Silicon macOS app, ad-hoc signed DMG
- Download
Libra.dmg - Open the DMG and drag Libra.app to
/Applications - First launch — macOS 15+ removed the right-click → Open bypass: try to open it once, then System Settings → Privacy & Security → Open Anyway (ad-hoc signed build)
Requires macOS 14+ on Apple Silicon. ffmpeg via Homebrew when transforms need it.
- Open Libra and pick a tool from the home grid (use Photos Only to move stills out)
- Drop a folder or videos, or use Open Folder / Select Videos
- Leave Preview only on to plan the run; turn it off and press Write to change files (confirm first)
- Use Undo last run if a live pass wasn’t what you wanted
- On GPS, use the count pills to filter pins, click a pin to see its filenames in the bottom strip, and press Resolve city names before Write
- Click a filename or row to open the file; right-click to Reveal in Finder
swift build
swift runswift test requires the full Xcode.app (XCTest).
Package a macOS .app + DMG (ad-hoc signed):
./scripts/build-mac.sh
# → build/Release/Libra.dmg| Surface | Value |
|---|---|
Display name (UI, Dock, .app, DMG) |
Libra |
| GitHub | RazorBackRoar/Libra |
| appId | com.razorbackroar.libra |
| Version | Sources/Libra/Resources/version.json |
MIT — see LICENSE.
If you need me, give me a holler.
