ToolActToolAct

Image Watermark Tool

Add text or image watermarks to images, adjust position, opacity, and size

Upload Images

Drag images here, or click to select files

Supports JPG, PNG, WebP, BMP formats, select multiple at once

What is Image Watermark?

Image watermarking places text, a logo, or another image over a picture to show ownership, source, brand identity, usage status, or publication context. It is commonly used for product photos, portfolios, event images, training material, social posts, and previews sent before final approval. The challenge is balance: a watermark should be visible enough to discourage casual reuse, but not so heavy that it ruins the subject, covers important details, or makes the image look unprofessional. Position, opacity, size, repetition, and rotation all matter. This browser-based tool is intended for fast labeling and lightweight protection without uploading the original image.

How to Use

How to use

  1. Drag or click to upload images (supports multiple)
  2. Select watermark type: text or image watermark
  3. Set watermark content, position, opacity, size, and rotation
  4. Click "Add Watermark" button, preview and download

Watermark Checks

  • Preview different image sizes; a watermark that is clear on a large image may be too strong or unreadable on a thumbnail.
  • Keep an unwatermarked original so you can change position, opacity, or wording later.

Use Cases

Apply text or image watermarks to multiple filesUpload images, choose text or an uploaded watermark image, then control font size, color, opacity, scale, rotation, position, and tiling before generating outputs. Visible overlays are the only protection this tool applies, so they stop casual reuse but not LSB steganography-aware extraction from a clean master.
Preview watermark behavior before batch exportThe same canvas drawing logic is used for preview and export, so tiled spacing, single-position placement, rotation, and transparency can be checked before processing all images. Custom fonts can fall back to a system stack, so a chosen typeface in the source image may render with a different metrics on export. When the source image carries an EXIF orientation tag, browsers honour it on draw, but the exported PNG or JPG strips the tag, so a portrait captured in landscape mode will need a manual rotation before the watermark sits in the intended corner.
Export watermarked images in practical formatsChoose PNG, JPG, or WebP with quality controls for JPG/WebP, then download individual completed files or all completed results after canvas rendering. Review the alpha math before exporting, because the canvas globalAlpha value multiplies onto the existing pixel alpha, so a 50% watermark on a 50% transparent PNG renders as 25%. measureText width is in CSS pixels, so a watermark that fits the preview on a 2x display may overflow the image edge on a 1x mobile export.
Diagonal tiled watermark for draft previewsEnable tiling with rotation to mark draft or unreleased product shots so reviewers cannot accidentally publish the working file. Lower the opacity to roughly 25-40% so the subject stays visible underneath the repeating text or logo.
Combine logo placement with a copyright lineStack a small image logo in one corner with a text line such as '© Studio Name 2026' along the bottom edge for stronger attribution. Re-render the canvas after each change, since font scaling, image scale, and opacity all affect how the two marks overlap.

Technical Principle

Watermarking happens entirely on a 2D canvas. The source image is drawn into an HTMLCanvasElement at its native pixel dimensions through ctx.drawImage, then text or a logo is composited on top using ctx.fillText for strings and a second drawImage call for raster overlays. Opacity is controlled by ctx.globalAlpha, which multiplies onto every alpha channel that follows; a globalAlpha of 0.5 against a 50%-transparent PNG ends up at 25% on the final pixel, which is the most common cause of 'why is my watermark invisible' bug reports. Positioning uses standard canvas transforms: ctx.translate moves the origin to the placement anchor (top-left, top-right, centre, bottom-right, or each cell of a 3×3 grid), ctx.rotate(angle) tilts a diagonal stamp around that origin, and the draw call places the mark with no further offset. Tiled watermarks call CanvasPattern.createPattern with the rotated source and ctx.fillRect across the whole canvas, which is how a full-page DRAFT stripe stays evenly spaced regardless of source dimensions. Font metrics come from ctx.measureText, which reports CSS pixels, so a 28 px label that fits the preview on a 2x display can clip on a 1x mobile export. The export step calls canvas.toBlob with 'image/png', 'image/jpeg', or 'image/webp' and an optional quality parameter for the lossy formats. The canvas runs at the source resolution, so the output preserves the original pixel dimensions but does not carry the source EXIF orientation, ICC profile, or other metadata. Batches above ~30 large files start blocking the UI thread because toBlob is asynchronous but the draw stack runs synchronously on the main thread, which is why a heavy workload benefits from moving canvas work into a Web Worker with OffscreenCanvas.

  • Composite stack: ctx.drawImage for the base, ctx.fillText (or a second drawImage) for the mark, ctx.globalAlpha for transparency multiplication.
  • Alpha math: globalAlpha multiplies onto each pixel's existing alpha, so a 0.5 mark on a 0.5-alpha PNG renders at 0.25, not 0.5.
  • Rotation: ctx.translate to the anchor, ctx.rotate(angle) in radians, then draw at origin (0,0) so the transform stays centred on the placement point.
  • Tiling: createPattern returns a CanvasPattern that fillRect can paint across the whole canvas, keeping spacing uniform across any source dimensions.
  • Text metrics: measureText reports CSS pixels, so a label sized on a 2x preview can overflow the image edge on a 1x mobile export; size proportional to canvas.width when in doubt.
  • Export: toBlob('image/png' | 'image/jpeg' | 'image/webp', quality) preserves source resolution but strips EXIF and ICC; rotate based on EXIF orientation before draw if portrait/landscape correctness matters.

Examples

Copyright text in bottom-right corner

Type: Text watermark
Text: "(c) 2026 ToolAct Studio"
Font: 28 px, white (#FFFFFF)
Position: bottom-right
Opacity: 50%
Use: portfolio photos, blog hero images

Diagonal tiled draft mark across full image

Type: Text watermark, tiled
Text: "DRAFT - DO NOT SHARE"
Font: 48 px, light gray (#CCCCCC)
Rotation: -30 degrees
Opacity: 25%
Tile spacing: 200 px
Use: unreleased product shots in client review

PNG logo in top-left, 15% scale

Type: Image watermark
Watermark file: brand-logo.png (transparent background)
Position: top-left, 20 px inset
Scale: 15% of original image width
Opacity: 80%
Result: logo appears at 288 px wide on a 1920 px hero image

Batch process 30 product photos

Input: 30 JPG product photos, 2000 x 2000 px each
Watermark: text "shop.toolact.com"
Position: bottom-center, 40 px margin
Opacity: 60%, Output format: JPG, quality 92
Processing time: ~8 s, total output: 24 MB

FAQ

Is the image uploaded for watermarking?

No. The watermark is composited onto the image in your browser using canvas. The original bytes never leave your device, and neither does the watermarked output.

What watermark styles are supported?

Text watermarks (custom string, font size, color, opacity, rotation, tile/repeat for full coverage) and image watermarks (your own logo overlaid at a chosen position and opacity). Most builds support both at once.

Where should I place the watermark?

Corner placement (typically bottom-right) is least obtrusive but easy to crop out. Tiled watermarks across the whole image are harder to remove cleanly but reduce visual appeal. Centered semi-transparent watermarks balance the two. Choose based on whether the priority is legibility or copyright protection.

Can the watermark be removed?

A determined attacker can usually remove single-corner watermarks by cropping or content-aware fill, especially on photos with regular backgrounds. Tiled, semi-transparent watermarks are harder. No watermark is unremovable - treat it as a deterrent and a copyright marker, not as actual protection.

What output format and quality?

PNG preserves the watermark's edges crisply (recommended for line-art and screenshots). JPEG re-encodes the result and can soften the watermark slightly; pick quality 90+ for clean output. The page lets you choose format and quality.

Are EXIF and metadata preserved?

Most likely no - canvas-based processing usually drops EXIF and ICC profile data. That can be a privacy benefit (your camera metadata, GPS location, and timestamp are removed) but means the watermarked copy is no longer a forensic original.

Can I batch watermark multiple images?

Yes. Drop several files; the same watermark is applied to each. Batch size is limited by browser memory - very large batches slow processing or run out of memory on mobile. Process in chunks of ~20-50 images for stability.