Make gradients with film grain on your Mac and export them as PNG or JPEG at any canvas size.
Requires macOS 14 or later.
- Six styles. Organic, Mesh, Linear, Tonal, Glow and Aurora. The inspector shows each style as a thumbnail of your current colors.
- Organic flow modes. Still, Pull, Wave and Classic, with sliders for Pull, Softness and Swirl.
- Mesh grid. A 3 × 3 or 4 × 4 grid of points, each with its own color. Drag points to bend the seams.
- OKLab blending. Organic, Mesh and Linear mix colors in OKLab.
- Film grain. Grain amount and grain size sliders. Output is dithered to avoid banding.
- Direct handles. Drag color points, grid points, the Glow center and the Linear angle on the canvas.
- Color tray. Click a color to edit it, drag to reorder, pull it off the tray to remove it.
- Color collections. Named collections of colors, including built-in brand collections. Export and import your own.
- Gradient library. Each gradient autosaves with its colors, points, sliders, seed and canvas size. Duplicate, rename, delete and undo.
- Names. Gradients are named from their colors. With Apple Intelligence on macOS 26 or later, name ideas come from the on-device model.
- Canvas sizes. Presets for Instagram (2160 × 2880), Square (2048 × 2048) and Story (1440 × 2560), plus a custom size.
- Export. Save an image with ⌘E, copy it with ⇧⌘C, or drag the canvas into Finder or another app. Files are named like
Harbor Hush 2160x2880.png. - Recipes. Export a gradient as a
.undertone.jsonfile and import it on another Mac. - GPU rendering. Metal renders the canvas and exports. At launch Undertone compares GPU output with the CPU renderer and falls back to the CPU if any pixel differs by more than 2/255.
No prebuilt release is published yet. Build from source with Xcode command-line tools:
git clone https://github.com/dmccullum/Undertone.git
cd Undertone
zsh scripts/build-app.sh
open build/Undertone.appYou can also double-click Build Undertone.command in Finder. It builds the app, quits a running copy and opens the new build.
The app is ad-hoc signed and not notarized. It runs on the Mac that built it.
swift run -c release # run from the command line
swift test # renderer, export, library and naming testsUse the release configuration for swift run: the CPU renderer is much slower in debug builds. You can also open Package.swift in Xcode. Undertone has no package dependencies.
| Shortcut | Action |
|---|---|
| ⌘N | New gradient |
| ⌘R | Randomize |
| ⌘Z | Undo |
| ⌘E | Export image |
| ⇧⌘C | Copy image |
| ⌃⌘S | Hide or show the sidebar |
| ⌘0 | Reopen the window |
- User guide: library, canvas, styles and file locations
- Icon: how the app icon is generated
- Design plan and verification notes
