What it does
Point SaltPrint at a folder of images and it does one of two things. The
source can be a negative — scanned, or photographed with a
camera — or something already positive: a slide, a print, or
a digital photo straight off your camera or phone.
You see the original and a live preview of the output side by side, and you
choose whether that output is straight grayscale or reversed.
Formats: camera RAW (.CR2, .NEF, .ARW,
.DNG, .RAF…), scanner TIFF/PNG/JPEG, and HEIC from
an iPhone — mixed freely in the same folder.
Positive JPEG
A clean grayscale positive you can view, share, or use to pick which frames
are worth printing — whether you started from a negative or from something
already positive.
Digital negative
Builds a process-corrected, mirror-flipped, print-sized 16-bit TIFF ready
to print on transparency film for contact printing — cyanotype, Pt/Pd,
salted paper, silver gelatin.
The results land in the folder of your choice, and you can print them
directly to your printer on transparency.
Your originals are never modified.
Everything happens on your Mac. SaltPrint has no account and never uploads
your images anywhere. It checks this site for a newer version when it
launches — you can turn that off — and collects no personal information.
Privacy policy.
About the correction curves
A digital negative needs a tonal correction curve, and most software either
hides this or ships curves named after processes nobody actually measured.
SaltPrint doesn't guess.
The bundled curves come from Mike Ware's digital-negative workflow
(Siderotype
Workshop Notes: Preparation of Digital Negatives, 2012), which finds that
raising the positive's gamma to 1.8–2.2 works as a generic
correction for any alt-process contact print, and agrees in practice
with individually-derived personal curves "scrupulously plotted by expert
workers."
SaltPrint ships that range as Ware standard (2.0) — the
default — with 1.8 and 2.2 either side. Two further curves sit outside the
range for setups it can't reach, and they're labeled as the guesses they are.
If you'd rather measure your own: the built-in calibration wizard
prints a step target, reads it back from a phone photo, and builds a curve
fitted to your paper, your chemistry, and your light source.
Requirements
- A Mac — Apple M1-based or newer, or Apple
Intel-based — or a PC running Windows 10 or 11.
Pick the download that matches your machine.
- Intel-based Macs: macOS 10.15.8 (Catalina) or later —
tested on Catalina. Apple M1-based Macs were developed and tested on
macOS 26; older macOS on M1 is untested — reports welcome.
- Windows: 10 or 11. The installer isn’t code-signed, so
SmartScreen may ask you to confirm on first run
(More info → Run anyway).
- Roughly 150 MB of disk space once installed.
Installing
On a Mac: open the disk image and drag
SaltPrint onto the Applications shortcut beside it.
On Windows: run the installer (SaltPrint-Setup.exe)
and follow the prompts — it adds a Start Menu entry and an optional desktop
shortcut. That's it.
Release notes
1.0
31 July 2026
- This is 1.0. Sincere thanks to the folks who have
tested the software and contributed ideas. SaltPrint is by artists, for
artists, and free, in the spirit of the open source work that’s
driven computing for decades.
- A light theme, for anyone who needs one. SaltPrint
now comes in light as well as dark. Settings ▶ Appearance:
Dark, Light, or Match
system. On a Mac, Settings is in the SaltPrint menu; on Windows
it’s under File. The default is the dark theme, but it’s
easy to change (app restart required).
- The scrollbars are more easily visible now in both
themes.
- Language translation is complete (English, French,
Italian, and Spanish).
- The sheet you print and the app now use the same words for a
color. The column heading printed on a test sheet is translated
along with the “use this color” control that matches it, so
what’s in your hand and what’s on screen cannot
disagree.
- The plot in the Curve Builder’s read-back has a visible
frame, making the edges clearer.
1.0 (beta 6.1)
30 July 2026
- SaltPrint speaks French, Italian and Spanish. Choose
your language under Settings — on a Mac that’s the SaltPrint
menu, on Windows it’s under File. It’s also shown in the top
right, next to the SaltPrint mark; click it to change it. If you have
never chosen one, SaltPrint follows the language your computer is set
to. The change takes effect when SaltPrint restarts, and it offers to do
that for you.
- The whole interface, not just the menus. The options
column, every dialog, the built-in curve names and their descriptions,
the tone names, the test sheets, and the messages along the bottom. A
few things stay in English on purpose: your own curve names are your
words and are left exactly as you typed them, rubylith keeps
its name because that is what the product is called, and file names
never change with the language — so switching languages
cannot strand a curve or a setting.
- Crops on upright photographs landed in the wrong
place. A crop drawn on a portrait frame from a camera raw file
was applied about 50% out. Landscape frames were never affected, which
is why this went unnoticed for so long.
- Tone and Orientation now apply to the frame you set them
on. “Save All Selected” no longer depends on which
frame you had clicked. Frames you had never opened used to quietly
inherit the sliders as they were at that moment, so clicking through the
roll to look at it changed what got written. To give several frames the
same look, use “Apply tone & orientation to selected”
under the Editing box.
- The licence agreement is readable, and accepted, in the
app. On a first run SaltPrint shows it and asks you to accept
or quit — the same thing the Windows installer has always done.
You are only asked again if the agreement itself changes.
- Ticked boxes were the wrong colour. A ticked checkbox
or radio button drew as a white block with a black tick on a dark panel,
all through the app. They now use the same violet as everything else.
This had been wrong since the dark theme was written.
- Smaller things. Frames you have checked are
highlighted in the list, not just ticked. Files that are not photographs
no longer clutter the frame list. The frame counter between Prev and
Next is gone — it only fitted at some window sizes. And the About
box now keeps a standing list of the people whose reports changed this
software, instead of the credit scrolling away with each release.
1.0 (beta 6)
29 July 2026
- The print size controls now do what they say. Print
size is one control with three answers — Fit the
sheet, An exact size, or Don’t
resize — and only the controls that apply are shown. This
came from a user whose prints came out the same wrong size no matter
what he chose: with the old checkbox off, the size, paper and Fit/Crop
controls were still on screen and still adjustable, and nothing read
them.
- “Fit the sheet” is new, and it’s what most
people want. Load A4 or Letter, choose your printer, and the
image is placed as large as that printer can actually print —
SaltPrint asks the driver for its own unprintable margin instead of
assuming the paper’s edge. The margin is shown, and you can
override it if your printer disagrees.
- It tells you how big the print will be, live, in
millimetres or inches, in every mode — including
“Don’t resize”, where the size comes from the
file’s pixels and your DPI. Previously the only way to find out
was to print something and measure it.
- Paper sizes and print sizes are separate lists. A4
and Letter are sheets you load; 5 × 7 and
8 × 10 are how big the picture is. Asking for an
“A4 image” quietly promised a print no desktop printer can
make, because none of them can reach the edge of their own paper.
- One flip instead of two. “Mirror (emulsion
down)” is gone — Flip H always did the
same job. Having both was a trap: on a plain frame they were identical,
but Mirror flipped the finished negative after your crop and straighten,
so they diverged the moment you’d done any work. If you
had Mirror switched on, Flip H has been switched on for
you.
- The options column says what each setting reaches.
Everything above the divider applies to every file; everything below
sits in a box headed Editing: your file. A new
Apply tone & orientation to selected button is the
deliberate way to make a whole roll look like the frame in front of
you.
- Save this Frame, Save All Selected, Print. Three
buttons instead of four — and the checkboxes now always count.
Small print is lighter too, so it reads in sunlight.
- With thanks to Alberto Campione, who identified
the print-size problem — the first four items above — and
reported it with the care of someone who had already worked out what the
right answer looked like. He sent drawings of the print he expected, and
measuring those drawings is what showed the sizes meant the wrong
thing.
1.0 (beta 5.01)
28 July 2026
- Your negative doesn’t have to be black. A new
Tonal Scale menu lets it run to yellow, orange,
rubylith red — or to any of 48 measured shades from right around
the color wheel. Which one works best depends on your printer, your ink,
your transparency film, your paper and your process, so SaltPrint
doesn’t guess. It gives you a way to find out.
- Two test sheets, Basic and Advanced. Basic prints the
five colors most people use, side by side. Advanced prints twelve
clearly different colors from around the wheel, then lets you take a
closer look either side of whichever one won. Print one on transparency,
contact-print it, and read each column top to bottom: you want the most
evenly separated steps, not the whitest top patch.
- Use the winner in one click. Pick the column you like
on the sheet and press Use this tone. It becomes your
negative color straight away — no writing down a code and hunting
for it afterwards. Every shade is in the Scale color list too, with its
RGB and hex values.
- Every test sheet carries the color you use now, as a
column marked NOW, so the sheet answers the question you actually have:
is any of this better than what I already print with? If NOW still looks
best, that is a real result — stop testing and go make
pictures.
- What you are making is a tonal scale, not a grayscale.
The Make panel now says Tonal scale and
Reversed tonal scale; grayscale is simply the case
where the scale runs to black. The color control moved up beside it,
because a correction curve reshapes your tones while this decides what
they are made of.
- SaltPrint sends your printer a color; the driver decides which
inks to use to reach it. That is exactly why testing on your own
equipment is the only way to know what works.
- A short optional survey. Seven one-click questions
about what you print and how SaltPrint is working for you. It asks at
most three times and then stops for good. Nothing is sent unless you
press Submit, and everything sent is shown on screen first.
- Fixes. The heading on a test sheet no longer runs off
the edge of the preview; the buttons along the bottom of that window can
no longer be squeezed out of sight; and the information panels scroll
once per swipe instead of twice, with a scrollbar so you can see how much
is left.
1.0 (beta 4.2)
25 July 2026
- Undo and redo, so you can compare a change against no
change. Cmd+Z steps back through the edits you’ve made to a
frame and Shift+Cmd+Z brings them forward again (Ctrl+Z and Ctrl+Y on
Windows), so you can flip between before and after as many times as you
like before deciding. They’re in the Frame menu too,
named for what they’ll take back — “Undo Contrast”, “Undo Crop”. A whole
drag of a slider counts as one step, not two hundred, and each frame
keeps its own history. This covers the edits you can’t put back by hand:
straighten, crop, flip, rotate and the five Tone sliders.
- Your crop now lands exactly where you drew it. Two
situations put it somewhere else: zooming in to place a crop carefully
saved it in the wrong place and the wrong size, and with Mirror switched
on the crop was taken from the opposite side of the frame. Both are
fixed. If you have older frames you cropped while zoomed in, or with
Mirror on, check them before you print.
- The Tone sliders now work together instead of undoing each
other. Each slider used to trim the picture to pure black and
white before handing it to the next one, so pushing Whites up to see
into a bright area and then pulling Contrast back down left a flat white
patch — the detail was already gone. Now only the finished picture is
trimmed, so you can push one setting hard and correct it with another.
A frame you already adjusted with the sliders pushed a long way may
look a little different now — better, because tone that used to be
thrown away is still there — so give those a quick look before you
print.
- Smoother tones in the file you print. The correction
curve could only produce a quarter of the shades a 16-bit file can hold,
which was enough to put faint steps in a smooth sky across a big sheet.
It now uses the full range.
- Your files now tell other apps what their tones mean.
Until now a SaltPrint file didn’t say how its numbers should be read, so
Photoshop, your photo viewer and your printer each made their own
assumption, and the same negative could look — and print — differently
depending on where you opened it. Every TIFF and JPEG now carries that
information with it. It matters most for colored negatives: the ink
colors are specified precisely, and now they arrive that way.
- You can see a conversion running, and stop it.
Converting a folder used to give you no sign it was happening and no way
to halt it. The button row now becomes a progress bar with a Stop button
(it finishes the file it’s on, so you never get a half-written one), and
you can no longer start a second conversion on top of the first by
accident.
- Move through a roll without the mouse. The left and
right arrow keys (and up/down in the frame list) step between your
included frames, and the space bar includes or excludes the frame you’re
on.
- You can actually see the sliders now. Every slider’s
handle was being drawn in the same color as the window behind it.
Rotate, all five Tone sliders, View and Zoom now have a visible
handle — and the Options column no longer jumps around while you drag
one.
- Controls that don’t apply get out of the way. With
“Resize to print size” switched on, the Zoom slider used to sit there
doing nothing and a crop couldn’t be drawn without saying why. Zoom now
hides itself in that mode and the Crop panel tells you to switch the
print size off first.
- Your settings and edits survive a crash. Preferences
and each image’s saved edits are now written in a way that can’t be left
half-finished. Before this, a crash or a disconnected drive at the wrong
moment could quietly wipe your whole output setup, or one image’s
adjustments.
1.0 (beta 4.1)
23 July 2026
- Set print size in millimeters, plus international paper
sizes. The Options panel now has a print-size menu with the
international A-series (A6–A3) alongside the US sizes, and an
in / mm toggle so you can work in whichever unit you
think in. Pick a size to fill the width and height, pick a metric size
and the fields switch to millimeters automatically, or type your own in
either unit.
- Refined ink choices for digital negatives. The ink
picker is now Black, Yellow, Yellow-Orange, Orange, and Orange-Red. Deep
Orange — which on printed color tests behaved almost identically to
black — has been dropped, and a pure Orange added. Based on real prints
(Epson P900 on Pictorico film).
- Pan a zoomed preview with the trackpad. Once you’ve
zoomed into the Live Output or a pop-out window, a two-finger trackpad
swipe (or the mouse wheel) now pans around the image — the same gesture
that scrolls the rest of the app, instead of only dragging the
scrollbars.
- Clearer “Compare negative colors” guidance. The
comparison now tells you to read each ink as a full light-to-dark tonal
range and pick the most evenly separated one — not simply whichever
leaves the paper whitest. Blocking the most light flatters black, whose
highlights crush together, so “whitest” was the wrong thing to
chase.
- A tidier folder header. The Input and Output folder
pickers now sit side by side; a long path is shortened in the middle
with “…” and hovering it shows the full path. On the Mac, the top row of
controls no longer hides behind the system menu bar when the window is in
fullscreen.
1.0 (beta 4)
22 July 2026
- SaltPrint now runs on Windows 10 and 11. The same app,
the same curves and workflow you have on the Mac, as a Windows installer.
The Windows download is a beta: it isn’t code-signed yet, so the first
time you run the installer Windows SmartScreen may say “Windows protected
your PC” — click More info → Run anyway. Exact-size
printing works, but hasn’t yet had its final ruler check on a real
printer, so measure your first negative before trusting a critical
print.
- Windows: sharp text instead of fuzzy. On a scaled
Windows display SaltPrint used to render at a virtual 96 DPI and then get
bitmap-stretched up — the classic “blurry old app” look. It now renders
natively sharp at whatever scale your display is set to. (If you change
the scale percentage while it’s open, quit and reopen it to pick up the
new scale.)
- The live preview no longer smudges fine detail.
Scaling a source down for the on-screen preview used to just sample every
few pixels, which is invisible on an ordinary photo but can turn fine
detail — film grain, a test chart’s fine lines — to mush or a moiré
pattern. It’s now a proper blended-down image, so what you see before
converting matches what’s really there. (Your exported and printed files
were never affected.)
- Zoom for the Live Output Preview. A slider lets you
zoom into the negative/positive preview — in the main window and each
pop-out window independently — to check fine detail up close, backed by a
genuinely sharper decode as you zoom in, not just a blown-up blurry
one.
- Windows can now print at exact size. The
negative/positive prints at the precise physical size you set, the same
as on Mac. (Still needs a final check on a real printer with a ruler
before it’s fully trusted — not yet done.)
1.0 (beta 3.7)
21 July 2026
- Build a curve by hand — Manual Curve. A new tool under
the Custom Curve menu: a row of sliders, like a stereo graphic equaliser,
each setting what one tone prints as, over a live chart that shows the
exact curve you’re drawing. It starts from the curve you have selected, so
you can nudge an existing one, and a hand-made curve can be reopened later
from Manage Curves to keep adjusting it.
- Import a curve from another tool. “Custom Curve ▸
Import curve file…” reads a 1D
.cube LUT or a GIMP curves
file and adds it to your curve list — bring over a correction curve from
Photoshop, Affinity, GIMP or an alt-process toolset instead of rebuilding
it.
- International paper sizes. The Curve Builder Wizard’s
test target now offers A-series sizes (A6 through A3) alongside the US
ones.
- The Curve Builder Wizard prints your target in any ink,
so you can measure a curve through the ink you’ll actually print negatives
in. It was also renamed from “Create a custom curve.”
- Every image in your folder now shows up. The file list
could hide images whose names looked like SaltPrint’s own output; it now
lists every supported image, with a new Reload button that pulls in files
you’ve added and flags itself when it notices a change.
- A heads-up before you save on top of your originals. If
your output folder is the same as your input folder, converting offers to
make a “SaltPrint Output” subfolder instead.
- A Resources menu with links to references — Mike Ware’s
alternative-photography site and the Digital Truth Massive Dev Chart to
start.
- With thanks to beta tester Caio Film, who suggested
the international paper sizes, the Manual Curve builder, and importing GIMP
and
.cube (LUT) curves.
1.0 (beta 3.6)
20 July 2026
- Your negative doesn’t have to be black any more. A new
Ink setting chooses what your darkest tone prints as —
neutral black as before, or yellow, yellow-orange, red-orange or deep
orange. A digital negative works by blocking the light that exposes your
print, and for cyanotype and most sun-printing that light is ultraviolet,
not the brightness your eye sees. Yellow and orange inks absorb UV and
blue far better than they look like they should, so they may block more
of the light that actually matters. Black is still the default and
behaves exactly as it always has.
- The ink color applies to positives too, where it’s a
toned print rather than UV blocking — the image runs from that color to
white instead of black to white.
- Two new test sheets, under the Custom Curve menu.
“Compare negative colors” shows every ink color side by side on one
sheet; “Exposure test ladder” gives you five timed bands so you can find
your own exposure. Print either on transparency, contact-print it, and
the paper tells you what works with your printer, ink, film and
light — which is the only way to know.
- SaltPrint now tells you about new versions even if you never
quit it. It used to check only at startup, so if you leave the
app open for weeks you’d never hear about a release. It now re-checks
every few hours while running. Dismissing the notice still keeps it away
for that version — it comes back only when there’s something newer.
- The bug-report and contact address is now
stevefabiani@gmail.com.
1.0 (beta 3.5)
18 July 2026
- The Intel-based Mac download now runs on older Intel Macs,
including macOS Catalina. The previous Intel build wouldn’t
launch on macOS 10.15; it now runs on macOS 10.15.8 or
later. (Apple M1-based Macs are unaffected.)
- “Check for Updates” works again. The in-app check
couldn’t reach the server from the packaged app, so it never told you a
new version existed. Fixed.
- The “Source (as-is)” preview shows color photos in
color. It used to preview the source in black and white — the
finished negative is still black and white, as it should be.
- A cleaner drag-to-install window when you open the download.
1.0 (beta 3)
17 July 2026
- SaltPrint now runs on Intel-based Macs. Two downloads
— one for Apple M1-based Macs or newer, one for Apple Intel-based Macs —
same app, same version, both signed and notarized.
- “Report a bug” now works whatever your mail setup. It
could previously land on a web page instead of your email app; it now
copies a ready-to-send report to your clipboard and shows the address,
with a button to open your mail app if you have one.
- One caveat for Intel-based Macs: their build's camera-RAW decoder is
one library generation older (its maker no longer ships Intel Mac
versions), so brand-new camera models may be recognised on M1-based Macs
slightly before Intel-based ones. TIFF/PNG/JPEG and iPhone HEIC are
identical on both.
1.0 (beta 2)
17 July 2026
- SaltPrint now checks for a newer version when it launches and lets you
know if one's out — turn it off any time under Help → Check for
updates automatically.
- Added a privacy note in Help → About and a full
privacy policy: your images never leave your Mac.
1.0 (beta)
16 July 2026
First public release
- Folder-based conversion: camera RAW and scanner TIFF/PNG/JPEG in, positives or digital negatives out.
- Correction curves built on Mike Ware's measured gamma 1.8–2.2 range, with Ware standard (2.0) as the default.
- Calibration wizard — print a step target, photograph it, get a curve fitted to your own process.
- Custom curve management: create, edit, rename, and delete your own curves.
- Per-image settings are remembered between sessions.
- Crop, rotate, and auto-straighten before conversion.
- Print directly at exact print size through the native macOS print panel.
- HEIC support, so a phone photo can be a source.
Known limitations: Apple M1-based Macs or newer only. Beta — please report
anything that breaks.
Bugs & feedback
SaltPrint is written by one person. If something breaks, or a
print comes out wrong in a way you can describe, I'd genuinely like to hear
about it — fabiani@stevefabiani.com.
There's also Help → Report a bug inside the app, which fills
in your version and build automatically.