Watermark
Use Imgwire watermark transformations to overlay an image, text label, or public URL-based watermark on a delivered image variant.
Overview
Watermarks are applied at delivery time. The original uploaded image stays unchanged, and the watermark settings become part of the transformed CDN URL. This is useful for previews, generated image galleries, creator attribution, internal review assets, and branded derivatives.
Syntax
| Parameter | Aliases | Value syntax |
|---|---|---|
watermark | wm | image_id[:gravity[:x[:y]]], or an object with image_id or imageId |
watermark_position | wmp, watermark_offset | gravity[:x[:y[:opacity[:blend]]]], or an object |
watermark_size | wms | width[:height[:scale]], or an object |
watermark_text | wmt | Text string, or an object with text and optional placement fields |
watermark_url | wmu | Base64-encoded public HTTPS URL |
watermark_rotate | wmr, wm_rot | angle, angle:background, or an object |
watermark_shadow | wmsh | true, color[:blur[:x[:y]]], or an object |
Offsets are signed pixels. For example, southeast:-24:-24 places the watermark inside the bottom-right corner by 24 pixels on each axis.
Image watermark example
This example uses an Imgwire-hosted watermark image and places it in the lower-right corner.
https://cdn.imgwire.dev/{organization_id}/{environment_id}/{image_id}?watermark=2ba49760-8654-49f1-a98e-e922278c990e&watermark_size=120&watermark_position=southeast:-24:-24:0.85
image.url({
watermark: '2ba49760-8654-49f1-a98e-e922278c990e',
watermark_size: '120',
watermark_position: 'southeast:-24:-24:0.85',
format: 'auto',
quality: 'auto',
});
imgwire images url img_123 \
--watermark 2ba49760-8654-49f1-a98e-e922278c990e \
--watermark-size 120 \
--watermark-position southeast:-24:-24:0.85
Before and after
More examples
| Text watermark | Rotated image watermark | Image watermark with shadow |
|---|---|---|
URL watermark example
Use watermark_url when the watermark source is a public HTTPS asset outside Imgwire. The URL must be base64-encoded before you place it in the transformation URL.
const watermarkUrl = btoa('https://example.com/watermark.png');
image.url({
watermark_url: watermarkUrl,
watermark_position: 'southeast:-24:-24:0.8',
watermark_size: '120',
format: 'auto',
});
Best practices
- Upload reusable watermark graphics to Imgwire and reference them by image ID.
- Use opacity and padding offsets so the watermark is visible without dominating the image.
- Use
watermark_sizeso the overlay is predictable across different source dimensions. - Keep watermark placement consistent across related image surfaces.
Common mistakes
- Using a watermark image from a different environment than the delivered image URL.
- Forgetting to size the watermark, which can make large source watermark images dominate the output.
- Passing raw public URLs to
watermark_urlinstead of base64-encoding them. - Treating watermarks as access control. Public transformed URLs are still public delivery URLs.
Related pages
Last updated at: May 9, 2026