Photo Watermarking & Batch Processing
ImageMagick, XnConvert, Lightroom export, GIMP Script-Fu — watermark, resize, rename in bulk.
Bulk operations on hundreds or thousands of photos: resize for web, watermark for portfolio, rename to a sortable scheme, convert format. The CLI tools are unbeatable at scale; the GUI tools win on convenience. For the underlying server-side image libraries see Image Editing (sharp, libvips); for develop-app exports see Photo RAW Editors.
CLI (free / OSS)
- ★ ImageMagick — Apache 2.0, C. The canonical CLI image toolkit; resize, convert, composite, watermark, format-convert, OCR-grade text overlay.
magick mogrifyfor in-place batch. Pairs with shell loops. - ★ GraphicsMagick — MIT, C; an ImageMagick fork focused on stability and speed for batch. Often faster on large batches; smaller surface area.
- libvips /
vipsCLI — LGPL; the engine behind sharp. Faster + lower memory than ImageMagick on large files; smaller feature surface. - ffmpeg — for image-sequence work, format conversion, batch transcoding.
- ExifTool — see Photo EXIF & Metadata; great for batch rename based on EXIF (
exiftool '-FileName<DateTimeOriginal' -d '%Y-%m-%d_%H%M%S.%%e' .).
GUI batch (free)
- ★ XnConvert — free for personal use, paid commercial. Cross-platform GUI batch; resize / watermark / rename / convert / metadata. The default free batch GUI; very capable.
- IrfanView Batch Conversion / Rename — free; Windows; basic but fast.
- FastStone Image Viewer Batch — free; Windows; integrated batch tools.
- GIMP Script-Fu / Python-Fu / BIMP plug-in — free; batch via scripting; the BIMP (Batch Image Manipulation Plugin) gives a GUI on top.
- darktable export — free; bulk export with watermark, resize, ICC convert from the lighttable.
- digiKam Batch Queue Manager — free; integrated batch in digiKam.
GUI batch (paid)
- ★ Lightroom Classic Export — included; the most ergonomic batch the average photographer uses; presets per use case (web, print, full-res, watermarked). Watermarks via the built-in editor.
- Capture One Process Recipes — included with C1; multi-recipe export (e.g. one TIFF + one JPEG + one watermarked web JPEG per shot).
- Affinity Photo Export Persona — paid one-time; per-slice batch export.
- Photoshop Image Processor / Actions — paid CC; classic batch via Actions.
- BatchPhoto, FastStone Photo Resizer — paid; consumer-flavored batch.
Watermarking-specific
- iWatermark Pro — paid Win/Mac; watermark-only specialist, signatures + branding.
- Marksta — paid iOS; mobile watermark.
- Visual Watermark — paid Win/Mac; consumer.
- PhotoBulk — paid macOS; consumer.
Common batch patterns (CLI)
Web / on-the-fly batch
- imgproxy / Cloudflare Polish /
<Next/Image>— see File Uploads; resize / convert / strip metadata at delivery time. Eliminates a build-step batch for many use cases. - Cloudinary / ImageKit — hosted versions of the same.
- Cloudflare Workers + sharp via
@cf-wasm/photon— run a tiny edge resize service.
Patterns to know
- Watermark on a layer copy, not the master — keep a clean export pipeline; watermark only on web-bound JPEGs.
- Output sharpening per use — Lightroom / darktable export presets handle this; for screen vs. matte vs. glossy.
- Strip EXIF on web exports at minimum strip GPS. See Photo EXIF & Metadata.
- Batch with previews — XnConvert and Lightroom both preview before commit; CLI doesn't, so test with one file first.
- Parallelize CPU batches —
magick mogrify -limit thread 8or GNU parallel for big runs.
Pick this if…
- Default scriptable / pipeline: ImageMagick CLI (
mogrify). - Default cross-platform GUI batch: XnConvert.
- Already in Lightroom / Capture One: their built-in Export / Recipes.
- Watermark-only use case: iWatermark Pro or Lightroom watermark presets.
- Edge / on-the-fly: imgproxy or Cloudflare Polish.
- Bulk EXIF rename: ExifTool one-liner.