Batch-add text or logo watermarks — with rotation, repeat tiling, and per-image preview. 🔒 100% private — no upload
Every image is processed entirely inside your browser using the HTML5 Canvas API. No file ever leaves your device — there is no server, no upload, and no account required.
Your text is drawn using Canvas fillText(). Bold, italic, outline stroke, and drop shadow are composited independently so the text stays legible on any background color.
Your logo PNG is composited using drawImage(). PNG alpha channels are preserved. Adjust width as a percentage of the output image so it scales correctly regardless of original resolution.
Canvas rotate() is applied before drawing. In Grid and Diagonal tile modes, the watermark is stamped in a repeating pattern across the full image surface — the same method used by stock photo agencies.
Images are processed one by one, encoded as JPEG/PNG/WebP blobs, and packed into a ZIP using JSZip. FileSaver.js triggers the download. File names are preserved with a _wm suffix.
Font size, margin, and tile spacing are all specified relative to a 1000 px image width, so they scale proportionally across your batch regardless of each image's actual resolution. A 48 px setting on a 4000 px wide photo renders at 192 px — visually consistent every time.