Skip to content

gphoto2proton

Google Photos Takeout → Proton, in a single command. Choose where your photos end up:

flowchart LR
    A[Google Takeout<br/>.tgz archives] --> B{Where?}
    B -->|Proton Drive<br/>My Files| C[gphoto2proton sync<br/>Go binary]
    B -->|Proton Photos<br/>timeline| D[gphoto2proton-import.sh<br/>bash + proton-drive CLI]

Move your photo library out of Google Photos and into your Proton ecosystem — with streaming, EXIF restoration, album recreation, resume safety, and RAW (NEF/CR2/ARW) support.


Choose your workflow

Proton Drive (My Files) Proton Photos (timeline)
Tool gphoto2proton sync — Go binary gphoto2proton-import.sh — bash script
Albums Legacy Photos API Native Photos albums
EXIF Restored via exiftool Read natively by the CLI
RAW (NEF/CR2/ARW) Not handled ✅ Converted to JPEG
Disk Streaming, no extraction Extracts one archive at a time
Platform macOS, Linux, Windows Linux
Auth Proton API credentials proton-drive session in pass
More Go Quick Start · Commands Scripts Overview · Scripts Quick Start · Import Reference

Not sure?

See Scripts / Proton Drive CLI → Overview for a detailed comparison and a guided decision. The two approaches are not mutually exclusive — they write to different places in Proton.


Key Features

Feature Benefit
Streaming Go binary processes archives entry-by-entry — no full extraction needed
📸 EXIF Restoration Writes back DateTimeOriginal, GPS, and camera metadata
🖼️ Album Recreation Rebuilds Google Photos albums inside Proton Photos
🔁 Resume Safety SQLite state (Go) and per-archive progress files (bash) — interrupt and resume without re-uploading
🔑 proton-drive CLI reuse Both workflows can reuse an existing proton-drive CLI session — no password or CAPTCHA needed
🖼️ RAW support Bash script converts NEF/CR2/ARW to JPEG and can recover previously skipped files


License

MIT — see LICENSE.