icloud-photos-downloader/icloud_photos_downloaderPublic

A command-line tool to download photos from iCloud

AI summary: A robust command-line utility for downloading all photos and videos from an iCloud account.

Stars
12.1K
+4 today
Forks
809
Watchers
113
Open issues
135
Open PRs
35
Contributors
~48
Commits
994
Branches
8

PythonMITCreated May 13, 2016Last push 2mo agoLatest release v1.32.3+20 stars this week+24 this month

Star history

since Oct 18, 2020
05K10KOct 2020Sep 2022Aug 2024Aug 2026
12.1K stars as of Aug 7, 2026, tracked back to Oct 18, 2020. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 3 commits2025-08-10: 0 commits2025-08-11: 2 commits2025-08-12: 2 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 1 commit2025-08-17: 2 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 3 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 1 commit2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 1 commit2025-08-29: 5 commits2025-08-30: 23 commits2025-08-31: 9 commits2025-09-01: 10 commits2025-09-02: 1 commit2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 1 commit2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 1 commit2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 3 commits2026-05-29: 4 commits2026-05-30: 5 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
77 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    12,141 stars

  • Battle-tested

    10 years of history

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What icloud_photos_downloader does

This tool provides a reliable CLI interface to interface directly with iCloud and download media files locally. It supports multiple platforms including Linux, Windows, macOS, and NAS systems. The application handles authentication, including 2FA, and manages the bulk transfer of large photo libraries. It includes features to track previously downloaded files to allow for incremental backups without re-downloading everything. By offering a Docker image and PyPI package, it integrates easily into automated backup scripts and home server setups.

Home lab enthusiasts, photographers, and anyone needing a reliable, scriptable way to backup their iCloud photo library. Basic CLI knowledge is required.

  • Cross-Platform Support: Runs seamlessly on Windows, macOS, Linux, and various NAS operating systems.
  • Incremental Downloads: Tracks state to only download new photos, saving bandwidth and time.
  • Two-Factor Authentication: fully supports Apple's standard 2FA requirements for secure login.
  • Docker Integration: Available as a containerized application for easy deployment on home servers.
  • Metadata Preservation: Maintains EXIF data and original file creation dates during the download process.
  • Album Filtering: Allows users to specify exact albums to download rather than the entire library.

Where teams use it

Automated NAS Backups

Integrates into a cron job on a Synology or TrueNAS system to keep a local, offline copy of iCloud photos.

Library Migration

Provides a reliable way to bulk-export photos when migrating away from the Apple ecosystem.

Offline Archiving

Allows photographers to create physical cold-storage backups of their entire mobile portfolio.

Selective Synchronization

Enables users to download only specific albums for local editing workflows.

Getting started: pip install icloudpd

README

master branch

iCloud Photos Downloader Quality Checks Build and Package MIT License

  • A command-line tool to download all your iCloud photos.
  • Works on Linux, Windows, and macOS; laptop, desktop, and NAS
  • Available as an executable for direct downloading and through package managers/ecosystems (Docker, PyPI, AUR, npm)
  • Developed and maintained by volunteers (we are always looking for help).

See Documentation for more details. Also, check Issues

We aim to release new versions once a week (Friday), if there is something worth delivering.

iCloud Prerequisites

To make iCloud Photo Downloader work, ensure the iCloud account is configured with the following settings, otherwise Apple Servers will return an ACCESS_DENIED error:

  • Enable Access iCloud Data on the Web: On your iPhone / iPad, enable Settings > Apple ID > iCloud > Access iCloud Data on the Web
  • Disable Advanced Data Protection: On your iPhone /iPad disable Settings > Apple ID > iCloud > Advanced Data Protection

Install and Run

There are three ways to run icloudpd:

  1. Download executable for your platform from the GitHub Release and run it
  2. Use package manager to install, update, and, in some cases, run (Docker, PyPI, AUR, npm)
  3. Build and run from the source

See Documentation for more details

Features

  • Three modes of operation:
    • Copy - download new photos from iCloud (default mode)
    • Sync - download new photos from iCloud and delete local files that were removed in iCloud (--auto-delete option)
    • Move - download new photos from iCloud and delete photos in iCloud (--keep-icloud-recent-days option)
  • Support for Live Photos (image and video as separate files) and RAW images (including RAW+JPEG)
  • Automatic de-duplication of photos with the same name
  • One time download and an option to monitor for iCloud changes continuously (--watch-with-interval option)
  • Optimizations for incremental runs (--until-found and --recent options)
  • Photo metadata (EXIF) updates (--set-exif-datetime option)
  • ... and many more (use --help option to get full list)

Experimental Mode

Some changes are added to the experimental mode before they graduate into the main package. Details

Usage

To keep your iCloud photo collection synchronized to your local system:

icloudpd --directory /data --username my@email.address --watch-with-interval 3600

Important

It is icloudpd, not icloud executable

Tip

Synchronization logic can be adjusted with command-line parameters. Run icloudpd --help to get full list.

To independently create and authorize a session (and complete 2SA/2FA validation if needed) on your local system:

icloudpd --username my@email.address --password my_password --auth-only

Tip

This feature can also be used to check and verify that the session is still authenticated.

Contributing

Want to contribute to iCloud Photos Downloader? Awesome! Check out the contributing guidelines to get involved.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 129

Releases and announcements

81 total
  1. v1.32.3v1.32.3May 30, 20265.1K downloads

    ## 1.32.3 (2026-05-29) - fix: restore 2FA for Apple's updated auth flow (2026+) [#1322]https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1322 - fix: Update staticx to 0.14.2 with --no-build-isolation to resolve pkg_resources and SCons build failures on Python 3.13/Trixie - fix: Update Dockerfile.build-musl Alpine base from 3.19 to 3.23 to resolve Cargo lock file version 4 incompatibility ## Minimal Effort Compatibility Checks if `icloudpd` can be installed using minimal effort and ran bare minimum functionality of displaying a version information. Minimal effort may require installing default version of package manager using OS tools Version: version:1.32.3, commit sha:879c561, commit timestamp:Sat May 30 21:42:22 2026 UTC Compatibility rate: 48.3% (168 passed out of 348) Legend: - N/A - not applicable/available - pass - test pass - fail - test fail - pass (src) - Test pass using src (for pip) ### bin Compatibility rate: 95.1% (77 passed out of 81) OSes and distros|amd64|arm64|arm32v7 -|-|-|- alpine_3_10|pass|pass|pass alpine_3_11|pass|pass|pass alpine_3_12|pass|pass|pass alpine_3_13|pass|pass|pass alpine_3_14|pass|pass|pass alpine_3_15|pass|pass|p

  2. v1.32.2v1.32.2Sep 2, 202515.5K downloads

    ## 1.32.2 (2025-09-01) - fix: HTTP response content not captured for authentication and non-streaming requests [#1240](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1240) - fix: `--only-print-filenames` downloads live photo video files during deduplication [#1220](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1220) ## Minimal Effort Compatibility Checks if `icloudpd` can be installed using minimal effort and ran bare minimum functionality of displaying a version information. Minimal effort may require installing default version of package manager using OS tools Version: version:1.32.2, commit sha:dd5a421, commit timestamp:Tue Sep 2 00:53:56 2025 UTC Compatibility rate: 60.6% (211 passed out of 348) Legend: - N/A - not applicable/available - pass - test pass - fail - test fail - pass (src) - Test pass using src (for pip) ### bin Compatibility rate: 95.1% (77 passed out of 81) OSes and distros|amd64|arm64|arm32v7 -|-|-|- alpine_3_10|pass|pass|pass alpine_3_11|pass|pass|pass alpine_3_12|pass|pass|pass alpine_3_13|pass|pass|pass alpine_3_14|pass|pass|pass alpine_3_15|pass|pass|pass alpine_3_16|pass|pass|pass alpine_3_1

  3. v1.32.1v1.32.1Aug 31, 2025649 downloads

    ## 1.32.1 (2025-08-30) - fix: KeyError when downloading photos with --size adjusted --size alternative options [#926](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/926) ## Minimal Effort Compatibility Checks if `icloudpd` can be installed using minimal effort and ran bare minimum functionality of displaying a version information. Minimal effort may require installing default version of package manager using OS tools Version: version:1.32.1, commit sha:e47fe6b, commit timestamp:Sun Aug 31 02:44:54 2025 UTC Compatibility rate: 60.6% (211 passed out of 348) Legend: - N/A - not applicable/available - pass - test pass - fail - test fail - pass (src) - Test pass using src (for pip) ### bin Compatibility rate: 95.1% (77 passed out of 81) OSes and distros|amd64|arm64|arm32v7 -|-|-|- alpine_3_10|pass|pass|pass alpine_3_11|pass|pass|pass alpine_3_12|pass|pass|pass alpine_3_13|pass|pass|pass alpine_3_14|pass|pass|pass alpine_3_15|pass|pass|pass alpine_3_16|pass|pass|pass alpine_3_17|pass|pass|pass alpine_3_18|pass|pass|pass alpine_3_19|pass|pass|pass alpine_3_20|pass|pass|pass alpine_3_21|pass|pass|pass alpine_3_22|pass|pass|pass debian_10_buster|pass|pas

  4. v1.32.0v1.32.0Aug 29, 2025551 downloads

    ## 1.32.0 (2025-08-29) - feat: support multiple user configurations in single command [#1067](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1067) [#923](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/923) ## Minimal Effort Compatibility Checks if `icloudpd` can be installed using minimal effort and ran bare minimum functionality of displaying a version information. Minimal effort may require installing default version of package manager using OS tools Version: version:1.32.0, commit sha:9519784, commit timestamp:Fri Aug 29 16:51:00 2025 UTC Compatibility rate: 60.6% (211 passed out of 348) Legend: - N/A - not applicable/available - pass - test pass - fail - test fail - pass (src) - Test pass using src (for pip) ### bin Compatibility rate: 95.1% (77 passed out of 81) OSes and distros|amd64|arm64|arm32v7 -|-|-|- alpine_3_10|pass|pass|pass alpine_3_11|pass|pass|pass alpine_3_12|pass|pass|pass alpine_3_13|pass|pass|pass alpine_3_14|pass|pass|pass alpine_3_15|pass|pass|pass alpine_3_16|pass|pass|pass alpine_3_17|pass|pass|pass alpine_3_18|pass|pass|pass alpine_3_19|pass|pass|pass alpine_3_20|pass|pass|pass alpine_3_21|pa

  5. v1.31.0v1.31.0Aug 20, 20251.2K downloads

    ## 1.31.0 (2025-08-20) - fix: OOMing on large downloads [#1214](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/1214) - feat: support downloading from multiple albums [#738](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/738) [#438](https://github.com/icloud-photos-downloader/icloud_photos_downloader/issues/438) ## Minimal Effort Compatibility Checks if `icloudpd` can be installed using minimal effort and ran bare minimum functionality of displaying a version information. Minimal effort may require installing default version of package manager using OS tools Version: version:1.31.0, commit sha:2f77ee5, commit timestamp:Wed Aug 20 12:49:06 2025 UTC Compatibility rate: 67.7% (233 passed out of 344) Legend: - N/A - not applicable/available - pass - test pass - fail - test fail - pass (src) - Test pass using src (for pip) ### bin Compatibility rate: 93.8% (76 passed out of 81) OSes and distros|amd64|arm64|arm32v7 -|-|-|- alpine_3_10|pass|pass|pass alpine_3_11|pass|pass|pass alpine_3_12|pass|pass|pass alpine_3_13|pass|pass|pass alpine_3_14|pass|fail|pass alpine_3_15|pass|pass|pass alpine_3_16|pass|pass|pass alpine_3_17|pas

Commits per week

last 52 weeks
300Week of 2025-08-03: 3 commitsWeek of 2025-08-10: 5 commitsWeek of 2025-08-17: 5 commitsWeek of 2025-08-24: 30 commitsWeek of 2025-08-31: 20 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 1 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 1 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 12 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsAug 3, 2025Jul 26, 2026
77 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 6 commitsSun 1:00 — 0 commitsSun 2:00 — 7 commitsSun 3:00 — 10 commitsSun 4:00 — 6 commitsSun 5:00 — 1 commitsSun 6:00 — 3 commitsSun 7:00 — 5 commitsSun 8:00 — 9 commitsSun 9:00 — 6 commitsSun 10:00 — 4 commitsSun 11:00 — 6 commitsSun 12:00 — 1 commitsSun 13:00 — 6 commitsSun 14:00 — 3 commitsSun 15:00 — 5 commitsSun 16:00 — 1 commitsSun 17:00 — 7 commitsSun 18:00 — 5 commitsSun 19:00 — 10 commitsSun 20:00 — 5 commitsSun 21:00 — 2 commitsSun 22:00 — 4 commitsSun 23:00 — 3 commitsMon 0:00 — 4 commitsMon 1:00 — 18 commitsMon 2:00 — 2 commitsMon 3:00 — 3 commitsMon 4:00 — 2 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 18 commitsMon 8:00 — 3 commitsMon 9:00 — 10 commitsMon 10:00 — 3 commitsMon 11:00 — 3 commitsMon 12:00 — 4 commitsMon 13:00 — 3 commitsMon 14:00 — 4 commitsMon 15:00 — 4 commitsMon 16:00 — 7 commitsMon 17:00 — 17 commitsMon 18:00 — 4 commitsMon 19:00 — 5 commitsMon 20:00 — 12 commitsMon 21:00 — 13 commitsMon 22:00 — 10 commitsMon 23:00 — 2 commitsTue 0:00 — 3 commitsTue 1:00 — 4 commitsTue 2:00 — 4 commitsTue 3:00 — 3 commitsTue 4:00 — 12 commitsTue 5:00 — 3 commitsTue 6:00 — 16 commitsTue 7:00 — 6 commitsTue 8:00 — 3 commitsTue 9:00 — 5 commitsTue 10:00 — 7 commitsTue 11:00 — 10 commitsTue 12:00 — 5 commitsTue 13:00 — 5 commitsTue 14:00 — 4 commitsTue 15:00 — 2 commitsTue 16:00 — 4 commitsTue 17:00 — 3 commitsTue 18:00 — 8 commitsTue 19:00 — 1 commitsTue 20:00 — 5 commitsTue 21:00 — 4 commitsTue 22:00 — 9 commitsTue 23:00 — 6 commitsWed 0:00 — 1 commitsWed 1:00 — 7 commitsWed 2:00 — 3 commitsWed 3:00 — 2 commitsWed 4:00 — 2 commitsWed 5:00 — 4 commitsWed 6:00 — 6 commitsWed 7:00 — 6 commitsWed 8:00 — 2 commitsWed 9:00 — 1 commitsWed 10:00 — 7 commitsWed 11:00 — 1 commitsWed 12:00 — 3 commitsWed 13:00 — 2 commitsWed 14:00 — 1 commitsWed 15:00 — 3 commitsWed 16:00 — 6 commitsWed 17:00 — 8 commitsWed 18:00 — 5 commitsWed 19:00 — 11 commitsWed 20:00 — 4 commitsWed 21:00 — 7 commitsWed 22:00 — 13 commitsWed 23:00 — 6 commitsThu 0:00 — 0 commitsThu 1:00 — 1 commitsThu 2:00 — 1 commitsThu 3:00 — 3 commitsThu 4:00 — 5 commitsThu 5:00 — 0 commitsThu 6:00 — 4 commitsThu 7:00 — 4 commitsThu 8:00 — 6 commitsThu 9:00 — 3 commitsThu 10:00 — 7 commitsThu 11:00 — 3 commitsThu 12:00 — 2 commitsThu 13:00 — 5 commitsThu 14:00 — 10 commitsThu 15:00 — 9 commitsThu 16:00 — 5 commitsThu 17:00 — 5 commitsThu 18:00 — 4 commitsThu 19:00 — 1 commitsThu 20:00 — 7 commitsThu 21:00 — 6 commitsThu 22:00 — 6 commitsThu 23:00 — 6 commitsFri 0:00 — 4 commitsFri 1:00 — 2 commitsFri 2:00 — 0 commitsFri 3:00 — 5 commitsFri 4:00 — 1 commitsFri 5:00 — 2 commitsFri 6:00 — 2 commitsFri 7:00 — 4 commitsFri 8:00 — 7 commitsFri 9:00 — 3 commitsFri 10:00 — 3 commitsFri 11:00 — 7 commitsFri 12:00 — 5 commitsFri 13:00 — 1 commitsFri 14:00 — 1 commitsFri 15:00 — 7 commitsFri 16:00 — 12 commitsFri 17:00 — 9 commitsFri 18:00 — 6 commitsFri 19:00 — 3 commitsFri 20:00 — 5 commitsFri 21:00 — 4 commitsFri 22:00 — 4 commitsFri 23:00 — 1 commitsSat 0:00 — 3 commitsSat 1:00 — 2 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 5 commitsSat 6:00 — 0 commitsSat 7:00 — 6 commitsSat 8:00 — 8 commitsSat 9:00 — 8 commitsSat 10:00 — 9 commitsSat 11:00 — 9 commitsSat 12:00 — 3 commitsSat 13:00 — 3 commitsSat 14:00 — 7 commitsSat 15:00 — 8 commitsSat 16:00 — 17 commitsSat 17:00 — 4 commitsSat 18:00 — 11 commitsSat 19:00 — 17 commitsSat 20:00 — 11 commitsSat 21:00 — 7 commitsSat 22:00 — 7 commitsSat 23:00 — 8 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jan 12, 2026daily#11+243