explaingit

icloud-photos-downloader/icloud_photos_downloader

11,931PythonAudience · generalComplexity · 2/5Setup · moderate

TLDR

iCloud Photos Downloader is a command-line tool for pulling your iCloud photos and videos to a local folder on Linux, Windows, or macOS, with copy, sync, and move modes and support for Live Photos and RAW files.

Mindmap

mindmap
  root((iCloud Downloader))
    What it does
      Photo download
      iCloud sync
      Storage cleanup
    Modes
      Copy mode
      Sync mode
      Move mode
    Platforms
      Linux
      Windows
      macOS
    Setup
      iPhone settings
      Web access required
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Download your entire iCloud photo library to a local folder or NAS as a permanent backup.

USE CASE 2

Keep a local photo folder automatically in sync with iCloud, including deleting local files when you remove them from iCloud.

USE CASE 3

Free up iCloud storage by downloading photos to your computer and then deleting them from iCloud in one operation.

Tech stack

PythonDocker

Getting it running

Difficulty · moderate Time to first run · 30min

Requires disabling Apple Advanced Data Protection and enabling iCloud web access on your iPhone or iPad before the tool can connect.

In plain English

iCloud Photos Downloader is a command-line tool that pulls your photos and videos out of iCloud and saves them to a folder on your computer. It works on Linux, Windows, and macOS, so you can run it on a laptop, desktop, or even a home server or NAS device. It is a volunteer-maintained open-source project. The tool has three main modes. In the default copy mode, it downloads photos that are in iCloud but not yet on your local machine. In sync mode, it also deletes local files if you have already deleted them from iCloud, keeping both sides in step. In move mode, it downloads photos to your local drive and then removes them from iCloud, which can be useful for freeing up iCloud storage. It handles Live Photos, RAW image files, and RAW plus JPEG pairs, and it avoids downloading duplicates automatically. You can run it once as a one-time download or set it to watch for changes in iCloud at a regular interval, re-checking however often you choose. There are options to limit how far back it scans, update photo metadata timestamps, and tune how it handles large libraries. Before using it, you need to adjust two settings on your iPhone or iPad. You have to turn on the option to allow access to iCloud data on the web, and you have to turn off Apple's Advanced Data Protection for iCloud, because that end-to-end encryption prevents third-party tools from reaching your files. Installation options include a standalone executable you can download directly, or you can install through Docker, PyPI, npm, or the Arch Linux AUR. The project is actively looking for new maintainers, as the current team of volunteers is small.

Copy-paste prompts

Prompt 1
Walk me through downloading my entire iCloud photo library to a local folder on my Linux machine using iCloud Photos Downloader, include the install command and the download command.
Prompt 2
Set up iCloud Photos Downloader in sync mode to re-check iCloud every hour and keep my local photo folder in step with changes. How do I configure the polling interval?
Prompt 3
I want to free up iCloud storage by moving my photos to a NAS. Show me how to use iCloud Photos Downloader in move mode to download photos and then delete them from iCloud.
Prompt 4
What two iPhone settings do I need to change before iCloud Photos Downloader will connect to my iCloud account? Walk me through where to find them.
Open on GitHub → Explain another repo

← icloud-photos-downloader on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.