A local-first photo & video organizer in the spirit of Google's old Picasa.
Rust backend (Tauri 2) + vanilla-JS frontend. No cloud, no accounts, no telemetry — your files never leave the machine.
Installers for macOS (.dmg), Windows (.msi / -setup.exe), and Linux
(.AppImage / .deb / .rpm) are on the
Releases page.
ffmpeg is bundled — the installers ship with static ffmpeg/ffprobe builds, so video
features work out of the box with no setup. If the bundled copy is ever missing, Picasa
falls back to an ffmpeg found on your PATH (or Homebrew on macOS).
- Library folders — point it at any folders; it scans photos & videos (JPG, PNG, HEIC, WebP, GIF, TIFF … / MP4, MOV, MKV, AVI …), reads EXIF (date taken, camera, orientation) and video metadata via ffprobe, and keeps a fast SQLite catalog.
- Albums — select items → New Album. Creates a real folder (default
~/Pictures/Picasa Albums/<name>), converts/copies the files into it, and writes your description intoalbum.mdalongside the media. Originals are never touched. - Presets — Web/Blog, TV/Big Screen, Email/Compact, Archive/Standardize, Original. Photos → JPG with size/quality caps; videos → MP4 (H.264/AAC) with resolution, CRF, bitrate and fps caps. A ~200 MB one-minute phone clip becomes ~20 MB on Web/Blog. Presets are editable; duplicate a built-in to customize.
- Non-destructive edits — rotate / straighten / crop for photos. Stored in the catalog, rendered as previews, baked in on export. One-click revert.
- Organizing — star ratings (0–5), tags, search, timeline grouping, sort, filters, virtualized grid with size slider, marquee + keyboard selection.
- Lightbox — zoom/pan photos, play videos, EXIF panel, edit mode.
- Duplicates — exact-duplicate finder (BLAKE3 content hash) with one-click resolve.
- Safety — deletions go to the system Trash (or library-only removal); album items can be removed from an album without touching the original.
| Key | Action |
|---|---|
/ |
focus search |
| arrows / shift+arrows | move / extend selection |
Enter / Space |
open viewer |
← → (viewer) |
previous / next |
E (viewer) |
edit photo |
I |
info panel |
0–5 |
set rating |
⌘A |
select all |
⌘⇧N |
new album from selection |
Delete |
remove… |
Esc |
close / clear |
npm install # Tauri CLI (uses public npm registry via .npmrc)
npm run dev # run with hot reload-ish (reload webview with ⌘R)
npm run build # release bundles in src-tauri/target/release/bundle/Requirements: Rust ≥1.77, Node 18+, the
Tauri v2 system prerequisites for your OS,
and ffmpeg/ffprobe for video features (a PATH install is fine for development).
HEIC decoding uses macOS's built-in sips.
Releases are built automatically by GitHub Actions
(release.yml) whenever a v* tag is pushed. The
workflow downloads static ffmpeg builds into src-tauri/bin/ before bundling, so the
shipped installers are self-contained.
The app resolves ffmpeg in this order:
PICASA_FFMPEG/PICASA_FFPROBEenv varsbin/inside the app bundle (src-tauri/bin/at build time)/opt/homebrew/bin,/usr/local/bin,/usr/bin, then$PATH
To make a local build self-contained, drop static builds into src-tauri/bin/ffmpeg
and src-tauri/bin/ffprobe (.exe on Windows) before building — the folder is
bundled as a resource. Static build sources used by CI:
martin-riedl.de (macOS),
gyan.dev (Windows),
johnvansickle.com (Linux).
The bundled ffmpeg/ffprobe are GPL-licensed static builds invoked as separate processes; Picasa's own code remains MIT. See the linked sites for their sources.
- Catalog + thumbnail cache:
~/Library/Application Support/com.gapp.picasa/(macOS) - Albums:
~/Pictures/Picasa Albums/(changeable in Settings) album.mdformat: title, your description, then a---footer with date/count/preset.
Removing a folder from the library never deletes files on disk.