Bulk Image Watermarker

Drop a folder of images. Stamp them all with text or your logo, anchored to whichever corner you pick. Tune size and opacity, hit download — you get one zip back.

Drop images to watermark
PNG · JPEG · WEBP · batch size up to your device's RAM

How it works

For each dropped image we draw the source into a fresh canvas, then either fillText() the watermark text or drawImage() your logo at the chosen anchor point with the chosen opacity. Text size, logo size, and the edge margin are all percentages of the image dimensions so the result looks identical on a 400-pixel thumbnail and a 4000-pixel master.

Each output canvas goes through canvas.toBlob() in your chosen format/quality and is added to a JSZip archive. JSZip is lazy-loaded only when you click the button. Files come back named like original-name-wm.jpg.