When you need batch screenshot processing
One screenshot is easy. Fifty screenshots is a problem. If you're preparing App Store screenshots across five device sizes, creating documentation with 30 annotated images, or compressing a folder of Retina captures before uploading to a CMS, doing it one file at a time wastes hours.
Mac has built-in tools that handle most batch operations without installing anything. This guide covers every common batch operation: renaming, resizing, format conversion, compression, watermarking, and metadata stripping. We'll start with the simplest approaches and work up to automations you can reuse.
Batch rename screenshots in Finder
Finder has a built-in bulk rename feature that most people don't know about.
1. Open the folder containing your screenshots.
2. Select all the files you want to rename (Cmd+A for all, or Cmd+click for specific files).
3. Right-click and choose Rename (or Rename [X] Items).
Finder offers three rename modes:
Replace Text: Find and replace within filenames. Change "Screenshot" to "product-demo" across all selected files at once.
Add Text: Prepend or append text. Add "v2-" before every filename, or "-final" after.
Format: Apply a sequential naming scheme. Choose a base name like "onboarding-step" and Finder appends numbers: onboarding-step 1.png, onboarding-step 2.png, etc. You can set the starting number and choose whether the number goes before or after the name.
Batch rename with Terminal (more control)
For complex renaming patterns, Terminal gives you full control. Navigate to your screenshots folder and use a loop:
# Rename all screenshots to a sequential pattern
cd ~/Documents/Screenshots
counter=1
for f in *.png; do
mv "$f" "screenshot-$(printf '%02d' $counter).png"
counter=$((counter + 1))
done
This produces screenshot-01.png, screenshot-02.png, etc. Change the printf format to %03d for three-digit padding if you have more than 99 files.
To replace spaces with hyphens and lowercase everything:
for f in *.png; do
mv "$f" "$(echo "$f" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')"
done
Batch resize with sips (built-in)
sips (Scriptable Image Processing System) is a command-line tool that ships with every Mac. No installation needed. It handles resize, format conversion, rotation, and more.
Resize all screenshots to a specific width
# Resize all PNGs to 1200px wide (maintains aspect ratio)
sips --resampleWidth 1200 *.png
This modifies the files in place. To keep the originals, copy them first:
mkdir -p resized
cp *.png resized/
cd resized
sips --resampleWidth 1200 *.png
Resize to a specific height
# Resize all PNGs to 800px tall
sips --resampleHeight 800 *.png
Resize to exact dimensions (may distort)
# Force all images to exactly 1920x1080
sips --resampleHeightWidth 1080 1920 *.png
This stretches images that don't match the aspect ratio. For screenshots, you almost always want --resampleWidth or --resampleHeight to preserve the original proportions.
Resize Retina screenshots to 1x
Retina Mac screenshots are captured at 2x resolution. A 1440×900 display produces 2880×1800 screenshots. To halve all screenshots to 1x:
for f in *.png; do
width=$(sips -g pixelWidth "$f" | tail -1 | awk '{print $2}')
half=$((width / 2))
sips --resampleWidth $half "$f"
done
Batch convert formats with sips
PNG to JPEG
# Convert all PNGs to JPEG (saves in same directory with .jpeg extension)
mkdir -p jpgs
for f in *.png; do
sips --setProperty format jpeg "$f" --out "jpgs/${f%.png}.jpg"
done
HEIC to PNG
If you're on macOS Tahoe and your screenshots are now in HEIC format:
mkdir -p pngs
for f in *.heic; do
sips --setProperty format png "$f" --out "pngs/${f%.heic}.png"
done
Any format to any format
sips supports conversions between these formats:
| Format | sips Name | Notes |
|---|---|---|
| PNG | png |
Lossless, large files. Default Mac screenshot format. |
| JPEG | jpeg |
Lossy, small files. Best for photos and web uploads. |
| HEIC | heic |
Efficient compression. Default on macOS Tahoe with HDR. |
| TIFF | tiff |
Lossless, very large. Used in print workflows. |
| GIF | gif |
256 colors max. Not recommended for screenshots. |
| BMP | bmp |
Uncompressed. Rarely needed on Mac. |
pdf |
Single-page PDF per image. |
Batch compress screenshots
Retina PNG screenshots are large. A single full-screen capture on a MacBook Pro can be 5–10 MB. Here's how to compress them in bulk.
Reduce JPEG quality with sips
# Convert PNGs to JPEGs at 80% quality (good balance of size/quality)
mkdir -p compressed
for f in *.png; do
sips --setProperty format jpeg --setProperty formatOptions 80 "$f" --out "compressed/${f%.png}.jpg"
done
Quality values range from 0 (smallest/worst) to 100 (largest/best). For screenshots with text, 80–90 is the sweet spot. Below 70, text starts to show JPEG artifacts.
Optimize PNGs with pngquant (free, installable)
If you need to stay in PNG format but want smaller files, pngquant reduces PNG file sizes by 50–80% with virtually no visible quality loss for screenshots:
# Install pngquant
brew install pngquant
# Compress all PNGs in the current folder
pngquant --quality=65-80 --ext .png --force *.png
The --ext .png --force flags overwrite the originals. Remove them to save compressed versions with a -fs8.png suffix instead.
Compress with Preview (no Terminal)
If you prefer a graphical approach: select all screenshots in Finder, right-click, Open With > Preview. In Preview, select all images in the sidebar (Cmd+A), then File > Export Selected Images. Choose JPEG as the format and adjust the quality slider. This isn't as fast as Terminal, but it works without any command-line knowledge.
Batch add watermarks
For screenshots you're sharing publicly — App Store listings, marketing materials, blog posts — you might want a watermark or logo on every image.
Using ImageMagick (free, installable)
# Install ImageMagick
brew install imagemagick
# Add a text watermark to all PNGs
mkdir -p watermarked
for f in *.png; do
magick "$f" -gravity southeast -pointsize 24 \
-fill "rgba(255,255,255,0.5)" -annotate +20+20 "© YourCompany" \
"watermarked/$f"
done
For a logo watermark instead of text:
# Overlay a logo in the bottom-right corner
for f in *.png; do
magick "$f" logo.png -gravity southeast -geometry +20+20 \
-composite "watermarked/$f"
done
Adjust -gravity to position the watermark: northwest, northeast, southwest, southeast, or center.
Batch strip metadata
Mac screenshots embed metadata including your username, hostname, exact capture time, display information, and color profile. Before sharing screenshots publicly, strip this data.
Using exiftool (most thorough)
# Install exiftool
brew install exiftool
# Strip all metadata from all PNGs in the folder
exiftool -all= *.png
This removes EXIF, XMP, and ICC profile data. The original files are backed up with an _original suffix. Add -overwrite_original to skip the backup.
Using sips (basic metadata removal)
# Remove color profile (the most common metadata concern)
sips --deleteProperty profile *.png
This is less thorough than exiftool but requires no installation.
Build a reusable workflow with Automator
If you batch-process screenshots regularly, build an Automator Quick Action that you can trigger from Finder's right-click menu.
1. Open Automator and create a new Quick Action.
2. Set "Workflow receives current" to image files in Finder.
3. Add the Scale Images action. Set it to scale to 1200 pixels wide.
4. Add Change Type of Images if you want to convert format (e.g., PNG to JPEG).
5. Save the workflow with a name like "Resize Screenshots 1200w".
Now you can select any group of screenshots in Finder, right-click, go to Quick Actions, and run your workflow. It processes all selected files in one click.
For more complex automations, add a Run Shell Script action and paste any of the Terminal commands from this guide. Automator passes the selected files as arguments.
Build a reusable workflow with Shortcuts
Apple's Shortcuts app (macOS Monterey and later) can also batch-process images with a more visual interface than Automator.
1. Open Shortcuts and create a new shortcut.
2. Add Receive input from > Share Sheet > Images.
3. Add Resize Image. Set width to your target (e.g., 1200px) and height to "Auto."
4. Add Convert Image if you want to change formats.
5. Add Save File to specify the output location.
6. Toggle on "Use as Quick Action" and "Finder" in the shortcut's details panel.
The advantage over Automator: Shortcuts sync across Macs via iCloud and have a more intuitive drag-and-drop builder. The disadvantage: fewer low-level options and no direct shell script integration (though you can call a shell script via the Run Shell Script action).
Common batch operations: quick reference
| Task | Command |
|---|---|
| Resize all to 1200px wide | sips --resampleWidth 1200 *.png |
| Convert PNG to JPEG | sips -s format jpeg *.png --out ./jpgs/ |
| Convert HEIC to PNG | sips -s format png *.heic --out ./pngs/ |
| Halve Retina resolution | Loop with sips -g pixelWidth + --resampleWidth |
| Compress PNGs | pngquant --quality=65-80 *.png |
| Strip all metadata | exiftool -all= *.png |
| Add text watermark | magick with -annotate |
| Rotate 90° clockwise | sips --rotate 90 *.png |
| Flip horizontally | sips --flip horizontal *.png |
Tips for batch processing App Store screenshots
App Store screenshots are one of the most common reasons to batch-process images on Mac. You need screenshots across multiple device sizes, and each size has specific pixel requirements.
| Device | Required Size (portrait) |
|---|---|
| iPhone 6.9" (16 Pro Max) | 1320 × 2868 |
| iPhone 6.7" (15 Plus/Pro Max) | 1290 × 2796 |
| iPhone 6.5" (14 Plus) | 1284 × 2778 |
| iPad Pro 13" | 2048 × 2732 |
| Mac | 1280 × 800 (minimum) |
To resize a set of base screenshots to multiple device sizes:
for size in "1320x2868" "1290x2796" "1284x2778"; do
w=$(echo $size | cut -d'x' -f1)
h=$(echo $size | cut -d'x' -f2)
mkdir -p "$size"
for f in *.png; do
sips --resampleHeightWidth $h $w "$f" --out "$size/$f"
done
done
This creates a folder for each device size with all screenshots resized accordingly. Note that this stretches images if the aspect ratio doesn't match — you'll want to design your base screenshots at an aspect ratio that works across your target sizes, or use a tool that adds padding instead of stretching.
LazyScreenshots captures and annotates screenshots in one step — so when it's time to batch process for documentation or App Store submissions, your images are already polished. $29 one-time.
Try LazyScreenshots — $29 one-time