A few years back, a mid-size e-commerce client called me on a Thursday afternoon with a problem. They had 500 product images, a Monday deadline, and a retoucher who’d just quit. The files needed background removal, color correction to match their brand standard (a very specific warm neutral, roughly 245/238/228 in RGB), resizing to four different output dimensions, and sharpening optimized for web. Four distinct operations, 500 images, 72 hours.

I told them I’d have it done by Saturday morning. They thought I was being cocky. I wasn’t. I had a batch system ready to go, and I’d spent the better part of a weekend the month before building it for exactly this kind of situation.

Why Manual Repetition Is Costing You More Than Time

Most photographers and retouchers understand intuitively that manual work doesn’t scale. What they underestimate is how much cognitive load accumulates during repetitive tasks. Every time you open a file, run a crop, check settings, export, and close, you’re spending about 30 to 45 seconds on overhead that has nothing to do with image quality. At 500 images, that’s four to six hours of pure mechanical clicking. But the hidden cost is errors. Decision fatigue sets in around image 80. By image 200, your export settings drift, your sharpening radius creeps up, and suddenly your output is inconsistent in ways that are painful to diagnose after the fact.

Photoshop’s batch processing engine runs your actions without that fatigue factor. It doesn’t get sloppy at 3 a.m. It applies identical parameters to image 499 that it applied to image one.

Building the Action Set Before You Touch Batch

The batch function is only as good as the action feeding it. I record every action in 32-bit mode even if my final output is 8-bit, because the math is cleaner during processing and I can always flatten at export. For the product job mentioned above, I built three separate actions rather than one long chain.

Action one: background removal using Select > Subject, followed by a Levels adjustment layer with a saved preset targeting that 245/238/228 neutral. Action two: a resize sequence using Image Size at 150 PPI for print-ready files and a separate Image Size at 72 PPI for web, each saved to a different subfolder via the Save As step baked into the action. Action three: a high-pass sharpening pass using a radius of 1.8 pixels on a merged visible layer, blended in Overlay mode at 65% opacity, which is my standard for web product work.

Keeping them modular matters. If the client changes the background color specification, I only need to re-record action one. Everything else stays clean.

The Actual Batch Setup in File > Automate

Go to File > Automate > Batch. Your choices here determine whether this runs smoothly or becomes a debugging nightmare.

Set the source to a dedicated input folder, nothing else in it. I keep a folder called “BATCH IN” on my desktop during any active project. Check “Override Action ‘Open’ Commands” if your action has an Open step recorded, otherwise Photoshop will open whatever file was open when you recorded the action, not the files in your folder. Check “Suppress File Open Options Dialogs” and “Suppress Color Profile Warnings” or you’ll get interrupted constantly.

For destination, choose “Folder” and point it to a “BATCH OUT” directory. Check “Override Action ‘Save As’ Commands” only if you want the batch to control the naming and location rather than your action’s embedded Save As step. I usually let the action handle saving because I can encode more specific subfolder logic there. Under File Naming, I use a convention like DocumentName + 2-digit serial number + file extension. That prevents overwrites and makes sorting trivial.

For the 500-image job, I ran the three actions sequentially across three batch operations, each one feeding into the next folder. Total processing time was about two hours and forty minutes on a Mac Studio with an M2 Max. I ate lunch, answered email, and watched the progress bar crawl.

The Mistake That Taught Me to Never Skip Test Batches

I learned scripting the hard way. Early in my studio career, I spent an entire day doing the same crop-and-resize operation on 200 catalog images by hand because I didn’t trust that my action would hold up across variable image orientations. Portrait images, landscape images, square images, all mixed together in one job. By image 150 I was making mistakes from boredom, and I still had to go back and fix seven files the next morning.

After that day, I built a test batch as a permanent habit. I pull 10 files that represent the full range of variation in a job, portrait, landscape, extreme aspect ratios, different color profiles, and I run the action on those 10 before touching the full set. This takes five minutes and has saved me from catastrophic batch errors at least a dozen times. If something breaks in the test, I’m fixing one action, not sorting through 500 corrupted outputs.

Conditional Actions and When Batch Isn’t Enough

Photoshop’s native batch system doesn’t handle conditional logic. If you need an action that behaves differently for images above a certain file size, or applies a different crop ratio based on image orientation, you’re going to hit a wall. That’s where a short ExtendScript or UXP script becomes necessary. I use a script that checks canvas dimensions before the action fires and routes portrait and landscape files into separate subfolders before processing begins. Writing that script took about three hours the first time. It’s now a permanent tool in my consultancy workflow and has saved considerably more time than it cost to build.

The rule I use for deciding when to script versus when to batch: if the job requires the same decision more than three times during processing, that decision should be made by code, not by you.

The single most important thing I can tell you about batch automation is this: the time you invest building a clean, modular action set and a reliable test protocol will pay back within the first job you run it on, and keep paying back every time you run it again.