The file came back from the client at 11:47 PM. Wrong color profile. Again.

I’d sent 80 product images to an e-commerce brand, all exported at sRGB, all looking perfect on my calibrated display. Their web platform was rendering them with a muddy, shifted cast because somewhere in my manual export process I’d let one file slip through as Adobe RGB. One file. It took me two hours to find it, re-export the correct version, and re-upload through their asset management system. That was a $200 mistake in billable time, and it happened because I was clicking through the same Export As dialog box eighty times and my attention drifted around file 64.

That was the last time I exported manually at scale.

What’s Actually Happening When You Export Without an Action

Photoshop’s Export As dialog is not designed for volume. It’s designed for flexibility, which means every single export decision, color space, resolution, file format, compression level, is a fresh manual input. There’s no memory, no enforcement, no guardrails. When you’re doing five files, that’s fine. When you’re doing fifty, you’re essentially betting that your concentration never wavers across dozens of identical decisions.

The deeper issue is that Export As and Save for Web operate slightly differently under the hood. Save for Web (the legacy option, still accessible via Alt+Shift+Ctrl+S) uses a flattened, 8-bit conversion pipeline and has historically handled sRGB conversion more predictably for web delivery. Export As gives you more format control but requires you to consciously check “Convert to sRGB” every time you open it. If that checkbox isn’t part of a recorded action, it isn’t reliable.

Actions solve this by locking the decision. You make the right choice once, record it, and the action executes that exact choice at whatever scale you need.

Building the Export Action: Settings That Actually Matter

Start with a clean test file. Something with a full tonal range and a recognizable color so you can verify the output visually. Record your action in the Actions panel (Window > Actions, then the New Action button), and name it something specific. I use naming conventions like “Export_sRGB_1200px_72dpi_JPG85” so I can read the entire spec from the action name without opening it.

Inside the action, navigate to File > Export > Export As. Set format to JPEG, quality to 85 (the sweet spot between file size and visible artifacting for most web platforms), resample to Bicubic Sharper for downscaling, and check Convert to sRGB. For e-commerce clients I lock width at 1200px and let height scale proportionally. That produces files averaging 180 to 350KB depending on image complexity, which sits well within most CDN and platform upload limits without triggering compression penalties.

Stop the recording. Now go to File > Automate > Batch, select your new action, point it at a source folder, and set the destination to a separate output folder. Check “Override Action ‘Save As’ Commands” if your action includes a save step. Run it on 10 files first. Check the outputs. Then scale.

The Batch Processing Reality Check

Here’s where a lot of people hit a wall: batch processing with Export As actions can be inconsistent depending on your Photoshop version. In some builds between CC 2021 and CC 2023, Export As inside a Batch operation had known issues with the sRGB conversion checkbox not persisting reliably across files. I hit this in 2022 with a 300-image catalog job and spent half a morning figuring out why roughly 1 in 20 files was outputting at a larger color gamut than specified.

The workaround that held up for me was switching that specific action to use Save for Web instead of Export As. Yes, it’s the “old” method. Yes, Adobe has been nudging us toward Export As for years. But Save for Web inside a batch action is rock solid and the output is predictable. For JPEG at quality 80 to 85 in Save for Web, file sizes are comparable and the color handling is consistent. I keep both versions of the action in my panel and choose based on whether I’m running a batch or exporting singles.

The Afternoon That Justified Every Hour I Spent Building This

A few years ago I took on a rush job: 500 product shots for a seasonal campaign, delivered in two formats each (web and print-ready), due by end of day Friday. It was Wednesday morning. I had a batch action system I’d built over a previous weekend, two actions doing the web export and one doing a 300dpi TIFF conversion for print, all feeding into a folder watched by a simple Droplet I’d set up.

I processed all 500 images that afternoon. Not because I’m fast, but because I wasn’t the one doing the exporting. The actions were. I spent those hours on the work that actually required my eyes: checking retouching consistency, verifying that the shadow passes matched across the catalog, flagging six images that had focus issues in the original capture. The export was just happening in the background.

I track the cumulative hours my action library has saved me in a spreadsheet. That single job was logged at 9.5 hours saved. Multiplied across three years of similar volume work, the number gets absurd in the best possible way.

When Scripting Is the Smarter Next Step

Once your action-based export workflow is stable, the next ceiling you’ll hit is conditional logic. Actions can’t make decisions. They can’t say “if this file is portrait orientation, export at 800px wide; if it’s landscape, export at 1200px.” For that you need a script, either a Photoshop JSX script or an integration with something like Bridge’s Export panel or a third-party tool like Automate Wiz.

That’s a longer conversation, but the practical signal that you’ve hit this ceiling is when you find yourself splitting files into separate folders before batching them based on some variable the action can’t handle. That manual sorting step is the cost of not having conditional logic, and once that sorting time starts adding up, a few hours learning basic JSX will pay back quickly.

Your export workflow is only as reliable as the least disciplined manual step inside it. Remove the manual steps and you remove the errors.