Skip to main content

photree

Stable Version Pre-release Version Python Versions Download Stats GitHub Stars License CI Status

A CLI tool to import, organize, verify, and export iOS photo albums as plain directories — preserving originals, edits, and sidecars without any proprietary database.

asciicast

Main Use Cases

  • Import iOS photos into organized album directories, preserving originals, edits, and AAE sidecars from macOS Image Capture
  • Browse and curate using the main-img/, main-jpg/, and main-vid/ directories — the best version of each photo/video, ready to view
  • Share albums by exporting JPEG-compatible versions to cloud sync folders (MEGAsync, Syncthing, etc.) or external drives
  • Back up to external volumes with full album structure (originals + edits + sidecars) using symlinks or hardlinks to save disk space
  • Verify album integrity with checksums and structural validation, with actionable fix suggestions

Non-Goals

  • Not a photo viewer or editor. photree organizes files on disk — use your favorite viewer (Finder, feh, etc.) to browse main-img/ or main-jpg/.
  • Not a photo management database. There is no catalog, index, or metadata database. Albums are plain directories, readable by any tool.
  • Not a cloud service. photree exports to directories — pair it with your own sync tool (MEGAsync, Syncthing, rsync, etc.).
  • Not cross-platform for import. The import pipeline requires macOS (sips for HEIC-to-JPEG conversion). Exported albums are portable.

Known Limitations

  • macOS required for import. The sips tool (included with macOS) is used for HEIC/DNG-to-JPEG conversion. Import is not supported on Linux. Exported albums work everywhere.
  • iOS-only import source. The import pipeline is built around macOS Image Capture conventions (IMG_* naming, AAE sidecars, IMG_E* edits). Other camera sources are not currently supported.
  • No EXIF-based organization. Album names and dates are derived from directory names (YYYY-MM-DD convention), not from EXIF metadata.

Philosophy

  • Plain directories, no lock-in. Albums are standard filesystem directories. No database, no proprietary format. You can always ls, cp, rsync, or browse with any tool.
  • Preserve everything, organize intelligently. Originals, edits, and sidecars are archived under ios/. The main-* directories provide a clean, browsable view without losing source material.
  • Explicit over magic. Every operation has a dry-run mode. Destructive fixes require explicit flags. The tool tells you what it would do before doing it.
  • Composable with existing tools. photree handles album structure — pair it with rsync for backups, MEGAsync for cloud sync, or any viewer for browsing.
  • Apple Photos — Apple's built-in photo manager. Great for editing, but uses a proprietary database. photree is for people who want plain directories.
  • Immich / PhotoPrism — Self-hosted photo management with a web UI. A good complement if you want a browsable gallery on top of your photree albums.
  • immich-go — CLI tool to bulk-upload photos to Immich. Can be used to upload photree albums.
  • rsync / Syncthing / MEGAsync — File sync tools. photree exports to directories that these tools can sync.
  • ExifTool — Metadata extraction and editing. Useful alongside photree for EXIF-based workflows.

Installation

See docs/installation.md.

Usage

See docs/usage.md.

Contribute

See CONTRIBUTING.md for development setup, guidelines, and the documentation of the code.

Metadata

Release files for photree 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for photree 0.10.0
File Size Uploaded Provenance
photree-0.10.0.tar.gz 262.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for photree 0.10.0
File Interpreter ABI Platform
photree-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 641.7 kB

Release files / photree-0.10.0.tar.gz

Download URL photree-0.10.0.tar.gz
Size 262.1 kB
Tags Source
SHA-256 checksum
How to use checksums
05cfad10f724cc6778e69818a7480446c3faa72387c1221bcefa2bcb22b57fa0
BLAKE2b-256 checksum
How to use checksums
578192c014576415dc007f5e713e3024c7d5c7cbd85be79da8662164747bade1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Release files / photree-0.10.0-py3-none-any.whl

Download URL photree-0.10.0-py3-none-any.whl
Size 379.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e8e28482d8e290aa3adbd30447e7140559466114cab79af22c38084111ebe64d
BLAKE2b-256 checksum
How to use checksums
b4236f0630eafa4f13c12e61e357a98c78d1508d4bf1e20ffe2b24078986179b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Security for photree 0.10.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for photree-0.10.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page