Skip to content

Watermarks

A watermark in Ultimate Watermark is a template — a set of fields that describes what to stamp, where, on which images. You can have one (free) or many (Pro). Each upload runs through every active template that matches its rules.

What a watermark is, technically

  • Custom post type: ultimate_watermark.
  • Storage: post + post meta (no separate DB table).
  • Free limit: one active template (WatermarkAjaxHandler.php:608–620).
  • Pro: unlimited.

Watermark types

Two kinds you can build:

Text watermark

Best for: copyright lines, studio names, URLs.

FieldDefaultRange / values
Watermark textemptyMulti-line.
Font familyArialArial / Helvetica / Georgia / Times / Courier / Verdana / Trebuchet / Comic Sans.
Font size24 px8 – 72 px.
Font weightnormalnormal / bold.
Font stylenormalnormal / italic.
Decorationnonenone / underline / line-through.
Color#ffffffHex picker.
Opacity70 %0 – 100.

Each new line in the Watermark text box becomes a new line on the rendered watermark.

Pro Text supports dynamic placeholders like {{date}}, {{user}}, {{ip}}, {{copyright}}, {{post_title}} — see Pro features → Dynamic placeholders.

Image watermark

Best for: a logo, transparent badge, signature stamp.

FieldDefaultRange / values
Watermark imagePick from media library. PNG-with-transparency works best. SVG works only with Imagick.
Size modeOriginalOriginal / Custom px / Scaled %.
Custom width (Custom px)200width in pixels (height auto).
Scale percentage (Scaled %)25 %100 = watermark width = full image width.
Output quality90JPEG quality, 1–100.
Baseline / progressivebaselineJPEG baseline (faster) or progressive (better perceived load).
Opacity70 %0 – 100.

Multiple watermarks per image

Have more than one active watermark? Each gets applied in sequence:

  1. Original image is loaded.
  2. First watermark is painted.
  3. Second watermark is painted on top of the result.
  4. …and so on for every matching template.

This lets you stack — say, a copyright logo bottom-left and a "DRAFT" diagonal text in the middle.

Order is by post ID ascending. To reorder, recreate them in your preferred order.

Image formats supported

The free plugin (and Pro) support these via GD and Imagick:

FormatGDImagick
JPEG
PNG
GIF
WebP
AVIF⚠️ companion⚠️ companion
TIFF
BMP
SVG (as watermark)

AVIF: Ultimate Watermark handles AVIF files as companions on disk (when WordPress generates an AVIF subsize alongside JPEG). It doesn't watermark the AVIF directly — the JPEG sibling gets watermarked, and AVIF stays in sync.

PDF / video: Ultimate Watermark doesn't watermark PDFs or videos.

GD vs Imagick

LibraryDetector.php:47–60 picks Imagick if loaded, else GD. You can't override.

LibraryProsCons
ImagickHigher quality, more formats (TIFF/BMP/SVG), smarter font scaling.Heavier on memory. Some hosts don't ship it.
GDUniversal — every host has it. Fast for typical JPEG/PNG.No SVG support; JPEG/PNG/GIF/WebP only.

For very-large images: GD raises memory limit to 256 MB during processing (GDWatermarkProcessor.php:21) and supports up to 15 000 px per side and 50 MB files (:26–32).

Where the watermark gets painted

Two distinct paths:

1. Burned into the original (default)

When you upload an image, Ultimate Watermark intercepts via wp_handle_upload (MediaLibraryIntegration.php:34–35) and via wp_generate_attachment_metadata (RestApiIntegration.php:60). The watermark is painted into the file on disk — every subsize that matches your rules.

If you later edit the watermark template:

  • New uploads use the new template.
  • Old uploads stay watermarked with the old version (they're already burned in).
  • Run Bulk → Apply to re-watermark old uploads.

2. On-the-fly at request time PRO

PROOTF (on-the-fly) display

Pro renders the watermark at request time — original files stay untouched on disk; visitors see a watermarked version that's cached after first render.

Unlock OTF →

Toggle the Display on frontend option in the watermark's Display tab. See Pro features → On-the-fly display.

Per-subsize control

WordPress generates multiple sizes per upload (thumbnail, medium, medium_large, large, scaled, full). You can choose which sizes Ultimate Watermark stamps.

In your watermark's Rules → Image size field, select:

  • (empty) — apply to all sizes.
  • full — only the original.
  • large — only the large size.
  • Specific sizes: thumbnail, medium, large, etc.

WordPress creates an extra scaled subsize on uploads ≥ 2560 px. Ultimate Watermark treats full as also matching scaled for backward compatibility (WatermarkHelper.php:672–674).

Building a watermark — the form layout

Open Watermark → Add Watermark. The form uses tabs:

TabHolds
BasicName, description, Active toggle, Type (text / image), Automatic / Manual / Frontend toggles.
AppearanceType-specific fields (text or image), position, size.
RulesPost type, image size, plus Pro-only conditions.
Display PROOTF settings (apply to content, thumbnails, WooCommerce, role bypass, cache toggle).

Toggles on Basic:

  • Active — turn this template off without deleting.
  • Automatic watermarking — apply on upload.
  • Manual watermarking — apply via Media Library bulk action only.
  • Frontend watermarking PRO — render at request time.

Editing a watermark

Edit the template — every change applies to future uploads. To re-watermark old uploads:

  1. Open Media → Library → List view.
  2. Select the affected images.
  3. Bulk action: Apply Ultimate Watermark (your watermark name).
  4. Click Apply.

The bulk action processes synchronously for small batches. Pro's batch processor handles larger sets in the background — see Performance.

Removing a watermark

The Bulk action also has Remove watermark which restores the file from uploads/ulwm-backup/YYYY/MM/. This requires backups to have been enabled at the time of the original watermark — see Settings → Backups.

Where to go next