There’s a specific kind of dread that hits when a client emails back asking why the jpegs you delivered look different on their end than they do on your monitor. I’ve been there more times than I’d like to admit, and almost every single case traced back to the same root cause: sloppy export settings baked into a Photoshop action that nobody had audited in months.

After 15 years working in commercial photography studios and now running my own post-production consultancy, I’ve built, broken, inherited, and rebuilt more export workflows than I can count. What I’ve learned is that export isn’t the last step. It’s a system, and if you treat it like an afterthought, you’ll pay for it in revision rounds.

The Color Profile Problem Nobody Talks About At Export

Here’s what’s actually happening when your images look different on a client’s screen: Photoshop embeds a color profile in your file, and whatever application or browser opens it on the other end either honors that profile, ignores it, or converts it incorrectly.

Working in Adobe RGB (1998) is standard for print-intended commercial work, and sRGB is the correct choice for anything destined for screens, e-commerce platforms, or social. The problem shows up when your action exports a jpeg without explicitly converting to sRGB first. Photoshop’s “Save for Web” (still accessible via Alt+Shift+Ctrl+S on Windows, or Shift+Cmd+Option+S on Mac) handles this conversion cleanly when you check “Convert to sRGB” in the dialog. The Export As panel, which Adobe has been nudging people toward, does the same, but I’ve caught it defaulting to embedded profiles without conversion in certain Photoshop versions. Test it. Don’t assume.

If you’re building an action to handle this, record the conversion step using Edit > Convert to Profile > sRGB IEC61966-2.1 before your save step. That gives you explicit, auditable control rather than hoping the export dialog makes the right call.

Building an Export Action That Actually Survives Batch Processing

A well-structured export action isn’t just a recording of clicks. It needs to handle documents it wasn’t originally recorded on, and that means avoiding absolute values wherever possible.

When I record export actions for client deliverables, I structure them in this order: flatten the image (Layer > Flatten Image), convert color profile, resize using Image Size with “Resample” set to Bicubic Sharper for downscaling, apply any output sharpening (I run a separate sharpening action at this stage, typically a high pass layer at roughly 40-60% opacity depending on output size), and then export. The export step itself uses a relative file path when possible, pointing to a subfolder called “EXPORTS” sitting inside whichever folder the source file lives in. In the action, this means recording your Save As and choosing a location relative to the source, not a hardcoded path on your C drive that breaks the moment someone else runs the action.

For e-commerce work, my standard deliverable is a jpeg at quality 10 out of 12 in Photoshop’s save dialog, saved as a baseline (not progressive) jpeg, which plays better with older e-commerce platforms. File sizes for a 2000x2000 pixel white-background product shot typically land between 400-700KB at those settings, which is within spec for most platforms without triggering compression penalties.

When Batch Export Goes Wrong: A Lesson From 500 Images in One Afternoon

A few years ago I took on a product photography job that landed me with 500 packshot images to process over a single afternoon. The client needed them delivered by end of business. I had an action I’d built over a weekend specifically for this: auto-crop to subject, white balance correction, profile conversion, resize to 1500px on the long edge, export to jpeg at quality 9, all running through File > Automate > Batch with “Suppress File Open Options Dialogs” and “Suppress Color Profile Warnings” both checked. Those two checkboxes are easy to overlook, but without them, Photoshop throws a dialog on every single file it opens and kills your batch dead.

I got through 487 of the 500 before the action started failing. The culprit was 13 images that had been shot slightly differently and came in as 16-bit TIFF files rather than 8-bit. My export action hadn’t included a mode conversion step, and Photoshop can’t save a jpeg from a 16-bit document. Adding Image > Mode > 8 Bits/Channel before the export step fixed it, and those 13 files processed in under two minutes. The batch ran. The images delivered. I added that step to every export action I’ve built since.

Folder Structure and Naming Conventions Inside Your Action

This is boring until you’re hunting for a specific deliverable at 11pm. Inside my batch setup, the action creates an “EXPORTS” folder automatically using a Photoshop script I trigger via File > Scripts > Run Script, and files are named using a convention of ClientCode_SKU_Version_Size. Something like ACME_PRD001_v1_2000px.jpg. Photoshop’s batch rename options under File > Automate > Batch let you build this kind of naming structure using the “File + Extension” or document name variables. It’s not glamorous, but a clear naming convention means a client can match deliverables to their product list without a guessing game.

Saving Your Export Action as a Droplet for the Next Person

Once your export action is solid, save it as a Droplet: File > Automate > Create Droplet. A Droplet is a standalone application you drag files onto, and it runs your action automatically without Photoshop needing to be open first (well, it launches Photoshop, but you don’t have to navigate any menus). I save Droplets to a shared network folder so anyone in a studio can use them without needing access to my specific action set or my machine. The Droplet captures the action, the batch settings, the destination folder behavior, and the error handling in one portable file.

If your export workflow only lives inside your personal Actions panel, it dies the moment you leave the project, hand off to a colleague, or upgrade your machine. A Droplet makes it transferable.

The single most important thing you can take from all of this: an export action is only as reliable as the assumptions baked into it, so document those assumptions, test on edge cases before you batch, and rebuild the action any time your deliverable specs change.