SaltPrint app icon

SaltPrint

Digital negatives for alternative-process printing — from your own scanned film negatives, slides, or prints — or from your digital photos.

Version 1.0 · Mac builds signed & notarized by Apple
On a Mac, not sure which you have? Open the  menu → About This Mac — it names your chip (an M1/M2/M3… or an Intel processor).
Windows is free and isn’t code-signed — code-signing a Windows app costs money — so Windows SmartScreen (“Windows protected your PC”) will warn on first run; click More info → Run anyway.
Prefer a plain zip? Apple M1-based or newer · Apple Intel-based · Windows (no installer)

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

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.