Skip to content
NEXUS
Active DevelopmentNexus-owned product

PhotoJanitor

Reclaims the disk your Mac won't admit a photo library is using.

PhotoJanitor: product screenshot

A native macOS app that measures the true size of every asset in an iCloud Photos library (including the videos macOS has offloaded to the cloud and will not size for you) without downloading a single one, then ranks what to delete for the most space back. It does this by reading a field Apple's public frameworks don't expose, which is what lets it solve a problem the built-in tools simply can't.

The problem

A Mac fills up because of a photo library it can't see clearly. When iCloud offloads a video, the system keeps a small placeholder and stops telling you what the real file weighs, so the ten-year-old clips quietly eating 40 GB are invisible, and cleaning up by hand risks deleting the wrong thing.

The system

PhotoJanitor recovers each asset's true original size, even for offloaded videos, by reflecting a private PhotoKit field at runtime, without downloading anything. It ranks the whole library by reclaimable space, then makes deletion boring: every removal is written to a manifest, confirmed twice, and sent only to Recently Deleted, where it can be undone.

Verified numbers

189,310
Assets scanned

single real library

10m 22s
Full-library scan time
0
Scan errors

integrity check passed

Only independently supportable figures appear here.

What happened

  • Validated end to end against a real 189,310-asset library, including a live, safety-gated cleanup run
  • Surfaces reclaimable space the built-in Photos app and mainstream cleanup tools do not expose

The problem the system hides from you

Modern Macs keep photo libraries lean by offloading originals to iCloud. A 500 MB video becomes a small local placeholder. It's a good trick, right up until the disk is full and you need to know what to remove. At that point macOS goes quiet: the Photos app won't tell you the true weight of an offloaded asset, so the clips actually consuming your storage are the ones you can't see.

The usual answers are bad ones. Download everything back just to measure it, defeating the entire point of offloading, or guess, and risk deleting something irreplaceable.

Measuring what Apple won't surface

PhotoJanitor's core is a technical bet that paid off: the true original size of every asset is knowable without downloading it, if you read a field Apple's public frameworks don't expose. By reflecting that private PhotoKit value at runtime, PhotoJanitor recovers the real byte size of every photo and every offloaded video, and ranks the entire library by how much space each deletion would actually reclaim.

This is the part that doesn't exist in the built-in tools or the mainstream cleaners: they either can't see offloaded sizes or won't rank by them. It's the difference between a list of files and a plan for getting your disk back.

Making deletion boring, on purpose

Power without safety is a liability when the data is your family's photos. So every deletion in PhotoJanitor is deliberately un-dramatic: the app writes a manifest of exactly what it will remove, asks twice, and moves items only to Recently Deleted, where they sit recoverable for 30 days. Nothing is ever hard-deleted, and nothing is downloaded to be measured.

Proven at real scale

This isn't a concept. PhotoJanitor was validated end to end against a genuine 189,310-asset library: scanned in 10 minutes 22 seconds with zero errors and a passing integrity check, followed by a live, safety-gated cleanup run. It's the clearest example of how Nexus works even on its own tools: find the real problem, solve it at the level others won't go to, and make it safe enough to trust.

Inside the system

  • True byte size for every asset, including iCloud-offloaded videos, with nothing downloaded
  • Reclaimable-space ranking that surfaces the biggest wins first
  • Safety-gated deletion: a written manifest, double confirmation, and Recently Deleted only
  • Full-library scale with pause, resume, and crash-safe checkpointing
  • CSV and JSON exports for auditing before anything is removed

Related work