Use Case10 min read

How to Watermark Photos: Every Method Compared

How to watermark photos and protect your images: text and logo watermarks, tiled patterns, ImageMagick batch jobs, sharp and Pillow scripts, Photoshop actions, and CDN watermarking on the fly.

By ImageGuide Team·Published August 21, 2026
how to watermark photoswatermark imagesimage protectioncopyrightbatch processingimagemagick

If you publish photos online, people will copy them. Some will credit you. Many will not. A watermark is the one defense that travels with the image itself: it survives downloads, reposts, and screenshots in a way that no site setting ever will.

This guide shows how to watermark photos with every major method. We cover the four watermark types, where to place them, batch tools from ImageMagick to mobile apps, programmatic options in sharp and Pillow, and on-the-fly watermarking through an image CDN. We also cover what watermarks cannot do, because honest limits help you pick a strategy that actually works.

Why Watermark Images at All

A watermark serves three jobs, and they rank in this order:

  1. Attribution. When a photo spreads, the watermark carries your name or brand with it. Viewers who see a shared image can find its owner.
  2. Deterrence. A visible mark raises the cost of casual theft. A scraper or lazy blogger wants a clean image; a watermarked one is less attractive than the next result.
  3. Brand. On social platforms, a consistent mark turns every shared image into free advertising.

The Honest Limits

Be clear about what a watermark does not do:

  • Cropping removes corner marks. Anyone with a phone editor can crop out a bottom-right logo.
  • AI removal tools exist. Modern inpainting models erase semi-transparent marks from smooth areas with a few clicks.
  • A watermark is not legal protection. Copyright exists the moment you create the work. The mark is evidence and signaling, not registration.

So treat a watermark as one layer. Pair it with private originals, metadata copyright fields, and hotlink protection. We return to this layered strategy at the end.

The Four Watermark Types

Type What it looks like Best for Weakness
Text Name, handle, or © line Photographers, quick work Looks generic; easy to clone out
Image logo Your logo as a PNG overlay Brands, studios Needs a clean transparent PNG
Tiled pattern Logo repeated across the frame Stock-style previews, proofing Changes the viewing experience
Invisible metadata Digimarc-style embedded signal Tracking usage after publication Enterprise cost; needs special readers

Text is fastest. Pick one font, one size, and reuse it everywhere so your mark stays recognizable.

Image logos look more professional. Export your logo as a PNG with transparency, then composite it over each photo. Keep a master copy of that PNG; you will reuse it in every tool below.

Tiled patterns repeat the logo across the whole image. Cropping cannot remove them, which makes tiles the right choice for preview images you sell later in full resolution.

Invisible watermarks embed a signal in the pixels themselves. Services such as Digimarc do this at enterprise scale. For most creators, a simple EXIF copyright field gives similar attribution value for free — see our guide on image metadata privacy.

Placement: Corner vs Center vs Tiled

Placement decides whether a crop kills your mark. Three zones dominate:

Placement Crop-proof? Hides subject? Typical use
Bottom-right corner No Almost never Branding on blog and social images
Center Yes Yes, strongly Low-res proofs, stock previews
Tiled across frame Yes Mildly, at low opacity Preview galleries, paid photo delivery

Practical rules that hold across all three:

  • Opacity between 30% and 60%. Below 30%, the mark vanishes on bright images. Above 60%, it fights the photo for attention.
  • Keep a margin of 3–5% of image width from the edge. Marks glued to the exact edge look like compression bugs and get cropped with zero effort.
  • Avoid faces and the main subject. Place the mark over sky, bokeh, or negative space when you can.
  • Scale relative to image width, not in fixed pixels. A 24-pixel mark disappears on a 6000-pixel original and looks huge on a 400-pixel thumbnail.
  • Stay consistent. Same position, same opacity, same logo everywhere. Recognition compounds.

Choose Your Method First

# Method Batch? Skill needed Best for
1 ImageMagick Yes Command line Pipelines, hundreds of files
2 sharp (Node) Yes JavaScript Build steps and upload handlers
3 Pillow (Python) Yes Python Python pipelines
4 Photoshop action Yes GUI Designers already in Adobe land
5 GIMP script Semi GUI + Script-Fu Free desktop workflow
6 Mobile app Small batches None Watermarking straight from a phone
7 Image CDN (Sirv) Automatic None Sites serving many images

Batch Watermarking with ImageMagick

ImageMagick’s composite command overlays one image on another. This is the workhorse for watermarking images in bulk.

Prepare logo.png — a transparent PNG of your mark — then run:

# Single image, bottom-right corner, 50% opacity
composite -dissolve 50% -gravity southeast \
  -geometry +40+40 logo.png photo.jpg photo-watermarked.jpg

What each flag does:

  • -dissolve 50% sets the watermark opacity to 50%. Stay in the 30–60% band.
  • -gravity southeast anchors the mark to the bottom-right corner.
  • -geometry +40+40 pushes the mark 40 pixels up and left from that corner — your margin.

Scale the Mark Relative to Each Photo

Fixed pixel sizes break across mixed resolutions. Resize the logo first, per image:

#!/bin/bash
mkdir -p watermarked
for f in *.jpg; do
  W=$(identify -format "%w" "$f")
  LW=$(( W * 15 / 100 ))   # logo width = 15% of photo width
  convert logo.png -resize "$LW"x logo-scaled.png
  composite -dissolve 45% -gravity southeast \
    -geometry +$(( W / 25 ))+$(( W / 25 )) \
    logo-scaled.png "$f" "watermarked/$f"
done

Tiled Watermarks

For crop-proof tiling, build a tile canvas with convert -tile:

# Tile the logo across the whole image
convert -size 1024x1024 xc:none \
  \( logo.png -resize 200x -rotate -25 \) \
  -geometry +30+30 -composite pattern.png
composite -dissolve 35% -tile pattern.png photo.jpg photo-tiled.jpg

Rotate the tile so it reads as a deliberate pattern rather than a grid of stickers. Lower opacity (around 30–35%) keeps previews usable.

Add a Text Watermark Instead

No logo file? Draw text directly:

convert photo.jpg -gravity southeast -pointsize 36 \
  -fill "rgba(255,255,255,0.55)" -annotate +40+40 "© Your Name" \
  photo-text-marked.jpg

Add -stroke black -strokewidth 1 for a subtle outline that survives bright backgrounds.

Programmatic Watermarking with sharp (Node)

sharp composites buffers fast and fits neatly into an upload handler or build step:

import sharp from "sharp";

const logo = await sharp("logo.png")
  .resize({ width: 300 })          // scale once, reuse
  .toBuffer();

await sharp("photo.jpg")
  .composite([
    {
      input: logo,
      gravity: "southeast",
      blend: "over",
    },
  ])
  .jpeg({ quality: 82 })
  .toFile("photo-watermarked.jpg");

To control opacity, pre-bake it into the logo buffer:

const fadedLogo = await sharp(logo)
  .composite([{
    input: Buffer.from(
  '<svg><rect width="300" height="300" fill="black" fill-opacity="0"/></svg>'),
  }])
  .ensureAlpha(0.5)                // 50% opacity
  .toBuffer();

ensureAlpha(opacity) multiplies the alpha channel, which is the cleanest way to hit your 30–60% target. For tiling, compute a grid of positions and pass one composite entry per tile.

Watermarking with Pillow (Python)

Pillow’s Image.alpha_composite handles the same job:

from PIL import Image

photo = Image.open("photo.jpg").convert("RGBA")
logo = Image.open("logo.png").convert("RGBA")

# Scale logo to 15% of photo width
target_w = photo.width // 7
ratio = target_w / logo.width
logo = logo.resize((target_w, int(logo.height * ratio)))

# Apply 50% opacity by scaling the alpha channel
alpha = logo.getchannel("A").point(lambda a: int(a * 0.5))
logo.putalpha(alpha)

margin = photo.width // 25
pos = (
    photo.width - logo.width - margin,
    photo.height - logo.height - margin,
)
photo.alpha_composite(logo, pos)
photo.convert("RGB").save("photo-watermarked.jpg", quality=85)

Wrap the body in a function and loop over a directory for batch runs. If you already process uploads in Python, this adds about ten lines to existing code.

Photoshop Actions

Photoshop suits one-off branded exports more than thousand-file batches, but its action recorder automates the repetitive part:

  1. Open one representative photo.
  2. Start recording: Window → Actions → New Action.
  3. Place your logo (File → Place Embedded), set opacity to 40–50%, position it, then flatten.
  4. Stop recording.
  5. Run it over a folder with File → Automate → Batch, or use Image Processor for format conversion at the same time.

Two cautions: record the logo placement as a percentage-relative step if possible, and always run the batch on copies. Actions apply fixed pixel offsets, so mixed image sizes need separate actions per size class.

GIMP

GIMP does the same job for free:

  1. Open the photo, then add your logo as a new layer (File → Open as Layers).
  2. Set the layer opacity to 40–50% and drag it into place.
  3. Record the steps with a Script-Fu script for repeats, or use the Watermark plug-ins available through the package manager.

Script-Fu example for a text mark:

(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "photo.jpg" "photo.jpg"))))
  (gimp-image-select-item image CHANNEL-OP-REPLACE (car (gimp-image-get-active-drawable image)))
  (gimp-context-set-opacity 50)
  (gimp-image-flatten image)
  (gimp-file-save RUN-NONINTERACTIVE image
    (car (gimp-image-get-active-drawable image))
    "out.jpg" "out.jpg"))

For serious volume, ImageMagick or sharp will beat any GUI route.

Mobile Apps

Phone-first photographers can watermark without a computer:

  • iOS: Use the Stamp app or Shortcuts. A Shortcuts automation can stamp every photo you export from the camera roll.
  • Android: Add Watermark and Photo Watermark handle text and logo marks with batch folders.
  • Lightroom Mobile: Premium subscribers can add a text or graphic watermark at export, applied to whole batches automatically.

Mobile tools shine for social shooters. They rarely expose opacity fine control or relative sizing, so keep expectations modest.

On-the-Fly Watermarking via CDN URL Parameters

Batch pipelines bake the mark into files forever. An image CDN applies it at request time instead: your stored originals stay clean, and every delivered copy carries the mark.

Sirv supports this with URL parameters — no preprocessing at all:

https://demo.sirv.com/photo.jpg
  ?watermark.0.image=/logo.png
  &watermark.0.position=southeast
  &watermark.0.scale.width=15%

Swap position for tile and the mark repeats across the frame:

https://demo.sirv.com/photo.jpg
  ?watermark.0.image=/logo.png
  &watermark.0.position=tile
  &watermark.0.rotate=-13
  &watermark.0.scale.width=200

Because the mark lives in the delivery layer, you can change the logo globally by editing one profile, serve watermarked previews and clean originals from the same file, and combine the watermark with other protections. The Sirv guide on protecting images from copyright theft covers the full stack: domain restriction blocks hotlinking, signed JWT URLs make watermark parameters impossible to strip from the URL, and strict profiles force the watermark onto every request in a folder. The dynamic imaging watermark reference lists every parameter, and Sirv Media Viewer pairs well with zoom galleries where protecting full-resolution detail matters most.

If this model fits your site, you can create a Sirv account and test watermark profiles on a demo bucket before touching your pipeline. For background removal and AI-driven edits on the same delivered images, Sirv Studio handles those tasks alongside the CDN.

Common Pitfalls

Publishing Your Only Clean Copy

The classic mistake: shoot, edit, upload the full-resolution master, then watermark a copy of the same public file. Once the clean version is public, the watermark protects nothing — thieves just grab the clean one.

Do this instead:

  1. Keep masters private: local archive or private cloud storage, never web-accessible.
  2. Publish only watermarked or downsized derivatives. A typical safe public size is 1500–2048 pixels on the long edge at quality 80–85.
  3. Sell or license from the private master only.

Relying on the Watermark Alone

Layer your defenses:

  • EXIF copyright fields. Write © Your Name 2026 into the metadata. Scrapers often strip EXIF, but platforms and reverse-image tools read it when present. Our image metadata privacy guide shows how to set and audit these fields.
  • Hotlink protection. Stops other sites from embedding your bandwidth directly.
  • Reverse image search monitoring. Google Lens and TinEye surface unauthorized uses.

Over-Watermarking

A 70%-opacity center mark makes photos unusable for viewers and buyers alike. If the mark destroys the viewing experience, engagement drops — and so does the reach that attribution was supposed to grow. Match intensity to purpose: light corner marks for brand content, heavy tiles only for paid-preview scenarios.

Inconsistent Marks Across a Portfolio

Five different positions and opacities read as five different owners. Decide once — position, opacity, margin, logo size — and encode it in your script or action so every future image inherits it. The batch workflows in our batch image processing guide slot a watermark step in naturally.

Designing a Watermark That Works

The best watermark is one you never have to think about again. Design it once, with these rules:

  • Use a transparent PNG. Export your logo or wordmark on a transparent background at high resolution, around 800–1200 pixels wide. You will scale it down per image; never scale up.
  • Plan for both light and dark photos. A white mark vanishes on snow; a black mark vanishes at night. Two fixes work well: a thin contrasting outline or drop shadow around white text, or a semi-transparent dark rounded box behind the mark.
  • Keep it simple at small sizes. Fine details disappear when the mark shrinks to 15% of a thumbnail’s width. Bold shapes and short wordmarks survive scaling.
  • Include something findable. A bare symbol attributes nothing. Add your handle, domain, or name so a viewer can reach you.

Save the master as logo-watermark.png in a fixed location. Every script in this guide assumes that file exists; keeping one canonical copy prevents drift between tools.

Verify Before You Ship

Run your batch, then check the output instead of trusting the command exit code:

  1. Open the smallest and largest outputs. Confirm the mark stays visible on the small file and does not dominate the large one.
  2. Check a bright photo and a dark photo. This exposes contrast problems fast.
  3. Confirm originals are untouched. Your batch should write to a separate folder or suffix. Overwriting masters is unrecoverable.
  4. Spot-check metadata. If you add EXIF copyright fields in the same pass, confirm they survived the save. Some encoders strip metadata by default.

A five-minute review catches the two most common failures: marks sized for one resolution class, and pipelines that quietly wrote over source files.

Which Method Should You Use?

Quick decision paths:

  • A folder of photos, once: ImageMagick loop, five minutes of setup.
  • Every upload to a website: sharp in the upload handler, or a CDN watermark profile if you serve through one.
  • Client proofs before payment: tiled pattern at 30–35% opacity, full-res master kept private.
  • Social media from a phone: Lightroom Mobile export watermark or a dedicated app.
  • Brand content at scale: CDN-level watermarking with a strict profile, so no request can skip the mark.

Whatever path you choose, the sequence stays the same: design one clean transparent logo, fix your placement rules, automate the application, and keep your masters behind the watermark wall. The mark itself is just the visible half of a protection habit — the private master and the metadata are the other halves.

Related Resources

Format References

Ready to optimize your images?

Sirv automatically optimizes, resizes, and converts your images. Try it free.

Start Free Trial