Right-click a photo. A dark panel floats up over the folder with the whole iOS Photos adjustment set attached — and ← → keep walking the folder you were already walking.
Free · macOS 26 · Apple silicon · Signed and notarised
That panel is real — the adjustments, the filters and the crop all run here in your browser. Drag a slider. Hold Space to compare, press ← → to walk the folder.
Nothing is imported, catalogued or copied anywhere. The photo you edit is the file that was sitting in the folder, at the path it has always had.
Saving writes the edited pixels back to that file, so the Finder thumbnail updates and every other app on the Mac sees the edit. The same thing iOS Photos does.
There is no window to find, no “+” to press and no file browser. Finder is the file browser. PhotoTune is the part it was missing.
Getting in
A Finder Sync extension puts Tune Photo… at the top level of the right-click menu — not three submenus down. Select several photos, or right-click a folder’s background, and they become the sequence the arrow keys walk.
PhotoTune photo.jpg
The editing model
Writing to the original file is the risky part of doing it this way, so all of the design effort went there. Push Exposure to +50, save, come back in a year, and the slider is still sitting at +50 — not baked in, not compounded, and one keystroke from gone.
Before the very first write, the untouched file is copied into ~/Library/Application Support/PhotoTune/Originals/.
Slider values go into the file’s com.joedesigns.phototune.edits extended attribute, so they survive a Finder copy, move or rename.
Open an edited photo and you get the original pixels back with the sliders restored. +50 twice in two sessions is +50, not +100.
Byte for byte, at any point in the future. The test suite checks that save-then-revert is exact for JPEG, PNG and HEIC.
RAW, GIF and WebP cannot be written back faithfully, so they never are. Saving one of those produces a -edited copy and leaves the source alone.
Unsaved edits are held per file for the session, so wandering off to another photo and coming back restores your work. Closing with edits outstanding prompts once.
Adjust
The same set as the iOS Photos editor, in the order Photos lists them, on the same −100…100 scale. If you have edited a photo on your phone, you have already learned this.
It measures the photo’s own histogram and sets Exposure, Black Point, Contrast, Shadows, Highlights, Vibrance and Warmth to values you can see, nudge and argue with. Not an opaque filter chain that either works or doesn’t.
Filters
Every one is a tone curve, a per-channel lift and gain and a few colour numbers — data, not a code path — so the pipeline has exactly one place that decides what order they get applied in. The names are descriptive on purpose: these are looks in the spirit of well-known film stocks, not emulations of them.
Colour-forward
High contrast
Clean
Film
Vintage
Graded
Black & white
Rendered in your browser from the app’s own filter formulas, at the moment you loaded this page.
Crop
Straightening auto-fits the largest upright rectangle inside the rotated frame, so a corner never goes transparent and you never have to nudge the crop back in by hand afterwards. The panel shows the pixel dimensions the crop will actually produce.
Nine aspect locks

AI edit · ⌘K
The photo you are looking at goes to OpenAI’s gpt-image-1 with your prompt, and what comes back becomes the new base image — with Adjust, Filters and Crop still working on top of it. ⌘Z undoes it. ⌘R still restores the untouched original.
The model returns 1024×1024, 1024×1536 or 1536×1024. An AI edit changes the photo’s dimensions, and the panel says so before you spend anything.
The photo and your prompt go up. Nothing else does — the PNG is stripped of EXIF and GPS first. Every other edit on this page happens entirely on your Mac.
Settings ▸ AI, paste an OpenAI API key; it is held in the Keychain, never in preferences. That account is billed per image, roughly 2–19¢, which a ChatGPT subscription does not cover.
Speed
Edits render on the GPU against a materialised ~2600px preview; full resolution is only touched on save. Which means the panel is up before you have let go of the mouse, and a slider drag is a slider drag rather than a progress bar.
| On an M1 Max | 2000² JPEG | 6016² HEIC |
|---|---|---|
| Open | 94 ms | 216 ms |
| Preview frame — all 15 adjustments and a filter | 21 ms | 26 ms |
| Save — render and encode | 35 ms | 794 ms |
Keyboard
Fine print
Better to read this now than to find out later.
One editor window, by design. Opening a second photo replaces what is loaded.
The panel is borderless, so it does not go full screen and cannot be minimised. Close it with Esc, ⌘W or the ✕.
Settings shows its size and can empty it, but there is no way to know which stored originals are still referenced — the photos pointing at them may be anywhere on disk.
The recipe travels in the extended attribute, so both copies revert to the same original.
macOS disables every Finder extension by default, so the first time you open a photo it offers to take you to Extension settings.
macOS refuses to hand some content types back. If one stays with PhotoTune, change it in Finder — Get Info ▸ Open with ▸ Change All.
PhotoTune is free. Drag it to Applications, open one photo, and let it switch its own Finder extension on.
macOS 26 · Apple silicon · Developer ID signed, notarised and stapled