Watermark Photos
Drop photos here and paint a text or logo watermark onto them in this tab. Pick one of nine anchor points, or tile the mark across the whole frame; the page counts how much of each picture the mark really covers and, for a single mark, how much of the picture a crop would have to cost to remove it. The photo is decoded, marked and re-encoded by your own browser — nothing is uploaded, and the mark ends up burned into the pixels.
Drop photos here
or choose files · up to 20 at a time · JPG, PNG, WebP, AVIF, GIF, BMP
Left empty, nothing is drawn and the download buttons stay off.
A PNG with a transparent background sits on the photo without a white box. The logo is drawn at the height set by Size.
JPG, PNG, WebP, AVIF, GIF & BMP in · text or logo · nine positions or tiled · up to 20 photos · no upload · no account
Watermark Photos: What a Mark Covers, and What a Crop Costs
A 1,600 × 1,200 photo carrying "© Your Name 2026" at 8% of its short edge gets a mark 919 px wide and 96 px tall. That mark covers 2.38% of the frame, and the cheapest crop that removes it takes a 12.0% strip off the bottom edge. Tiled at 45 degrees, the same text covers 18.92% of the frame across 60 grid positions, with a gap of 154 × 134 px between marks. Those four numbers decide whether the mark travels with the picture or comes off in one crop.
Coverage is the number that decides what you made
A watermark either survives or it does not, and the thing that separates the two is how much of the frame it occupies. This page counts that share from the mark it actually draws: the watermark is rendered into an alpha mask at the same proportions, and every pixel with any ink in it is counted.
On a 1,600 × 1,200 frame the numbers are small. A single line of text at 8% of the short edge covers 2.38% of the picture. A logo at the same 8% height covers 1.15%, because a logo is compact and a string of characters is not: the text is 919 px wide, the logo 240 px.
Coverage below about 3% is a signature. It tells anyone who looks that the picture is yours. It does not stop the picture from being used, because 97% of the frame is still there to be cropped.
A corner mark costs one crop
Take the bottom-right placement. The mark sits inside the bottom 12.0% of the frame, so a crop that throws away the bottom 12.0% removes it completely and keeps the other 88.0% of the picture. That is one drag on a crop handle, in any editor, on any phone.
Move the same mark to the centre and the price changes. A centred mark sits in the middle 54.0% of the height, so removing it by cropping means keeping less than half the picture. The mark covers 2.39% of the frame either way; only the crop cost moved, from 12.0% to 54.0%.
That gap is the whole argument for placement. A corner mark is a label: it rides along until someone spends thirty seconds in a crop tool. A mark near the middle, or across the subject, is the beginning of a watermark.
Tiling: 60 positions, and a gap of 154 × 134 px
Tiling repeats the mark on a grid so that no single crop clears it. The spacing scales with the mark: one gap of 1.6 times the font size across, 2.4 times down. At 96 px that puts the marks 1,073 px apart horizontally and 230 px apart vertically, which leaves a clear gap of 154 px by 134 px between neighbours.
On the 1,600 × 1,200 frame that is 60 grid positions and 18.92% of the picture in ink. The rotated grid reaches every edge, so a crop cannot keep a clean rectangle of any useful size: the largest mark-free area is one of those 154 × 134 px gaps, which is 1.1% of the frame.
The cost is real and visible. Nearly a fifth of the picture now has text over it, including whatever is in the middle. Tiling suits proof galleries, stock previews and anything where the point is to make the unlicensed copy useless rather than pretty. It is the wrong choice for a portfolio you want people to enjoy.
Opacity is arithmetic, not a look
A watermark at 35% is not "subtle". It is a fixed calculation, applied per channel:
out = in * (1 - opacity) + colour * opacity
On a flat mid-grey frame (128, 128, 128), white text at 100% lands on 255, a change of 127 levels. At 50% it lands on 192, exactly half that change. At 25% it lands on 160, a quarter. The page measured those three: 127, 64 and 32 levels of maximum change, in step with the slider.
At 35% on the same grey the result is 172, which is 44 levels above the background. That is why a mark at 35% reads clearly on a dark photo and nearly disappears on a pale sky: the arithmetic is fixed, the background is not.
Below about 10%, the encoder has the last word
Opacity also decides whether the mark survives compression. On the 1,600 × 1,200 photo saved at JPEG quality 60, the average change inside the marked area was:
| Opacity | Average change inside the mark | Peak change |
|---|---|---|
| 100% | 50.2 levels | 158 |
| 40% | 18.7 levels | 73 |
| 20% | 9.5 levels | 39 |
| 10% | 5.0 levels | 20 |
| 6% | 3.5 levels | 13 |
The same re-encode moves the rest of the frame by 2.7 levels on average, up to 29 at the worst pixel. At 6% the mark's average change, 3.5 levels, is 0.8 levels above the noise floor of the compression itself. A mark that faint is no longer reliably distinguishable from JPEG artefacts, especially on textured backgrounds where the artefacts are strongest.
Below 10% you are decorating the file, not marking it. Between 20% and 50% the mark survives a normal re-encode and stays readable on a phone screen.
The mark is 2% of the pixels; the re-encode is all of them
A watermark is drawn onto a decoded copy, and the copy is encoded again. That second encode touches every pixel, not just the ones under the text. On a 12 MP photo (4,032 × 3,024, 451,020 bytes as saved), the output at quality 92 was 518,670 bytes, and 6.44% of the pixels outside the mark came back changed, by up to 6 levels. At quality 75 the file was 399,522 bytes with 7.16% of outside pixels changed, again by at most 6 levels. At quality 60 the file was 348,343 bytes and 97.09% of outside pixels changed, by up to 15 levels.
The same photo written as PNG came out at 4,582,535 bytes, 10.2 times the JPEG it started as, because PNG stores every pixel of the decoded image without loss and JPEG's compression is gone.
Two conclusions follow. A quality setting near the source's own costs almost nothing outside the mark; a much lower one rewrites the whole frame. And if the picture has to stay lossless, PNG is the only way out, at ten times the size.
Text at 919 px, a logo at 240 px
Both modes use the same size control, which sets the mark's height as a share of the short edge. The shapes differ. At 8% on a 1,600-wide frame, the text is 919 px across and the logo 240 px, so the logo covers 1.15% against the text's 2.38%.
A logo therefore needs to be set larger than text to protect the same area, and past a certain size it stops looking like a signature and starts looking like a sticker. Text is cheaper per pixel of coverage and can carry a name, a licence line or a year. A logo carries a brand and survives being scaled down better, because its shapes are meant to be read small.
Transparency matters for the logo: a PNG with an alpha channel drops onto the photo without a white box, because the canvas composites it pixel by pixel. A JPEG logo arrives with its own background and paints that background onto the picture.
What this page will not do
- Remove a watermark. Nothing here erases marks, from this page or any other. It only draws them.
- Make an invisible watermark. Everything is visible ink. Nothing is hidden in the low bits of the pixels.
- Prove ownership. A visible mark is evidence of intent, not of authorship. It can be cropped, painted over or reconstructed with an editing tool.
- Track a copy. The same mark goes on every file. There is no per-recipient variant and no identifier hidden in the output.
- Open everything. The browser decodes what it can: JPEG, PNG, WebP, AVIF, GIF and BMP in Chrome and Edge. HEIC and camera RAW files need a decoder the browser does not ship, so those files are refused instead of guessed at.
- Keep animation. A GIF contributes its first frame; the rest are dropped.
- Keep EXIF. The canvas has no metadata API, so the output is a fresh encode without the source's EXIF block or colour profile beyond the browser's own sRGB tag.
- Take a folder of 500. The batch stops at 20 photos, because every pixel stays in this tab's memory.
How to use this page
- Drop photos onto the panel, or click it and pick them. Up to 20 at a time.
- Type the text, or switch to Logo image and load a transparent PNG.
- Pick a placement, or choose Tile across the photo.
- Move Size and Opacity until the previews look right. Each card under the panel shows what the mark covers and what a crop would cost.
- Download one photo, or Download all as ZIP.
The previews are drawn at up to 720 px on the long edge so the sliders stay responsive. The file you download is rendered again from the full-resolution original with the same settings, which is why the card's numbers are reported for the frame, not for the preview.
What the controls do
Watermark switches between text and a logo image. Text mode shows a text field, a font choice (sans, serif, mono) and a colour. Logo mode takes a PNG, WebP, SVG or JPEG and draws it at the height set by Size.
Placement offers nine anchors, from top-left to bottom-right, plus Tile across the photo. The anchor keeps a margin of 4% of the short edge from the frame edge, so the mark never touches the border.
Size sets the mark's height as a share of the short edge, from 2% to 30%. On a 1,200-pixel-tall photo, 8% is a 96 px font. The number box and the slider move together.
Opacity runs from 5% to 100% and multiplies the whole mark, shadow included. Text is drawn twice: a black shadow at 55% of the mark's opacity, offset by 6% of the font size, then the chosen colour on top. The shadow is what keeps white text readable on a bright sky.
Tile angle appears only in tiling mode and runs from 0 to 90 degrees, default 45.
Output chooses JPG or PNG. JPG exposes a quality slider from 60 to 100, default 92. PNG writes the marked pixels losslessly at roughly ten times the JPEG size.
Why this page doesn't upload your photo
The file is read with the browser's own decoder, drawn onto a canvas, marked and encoded by the browser's own encoder. No request leaves the tab at any point. The page can prove it: with the network cut in DevTools, a 1,600 × 1,200 photo still produced a byte-identical result (the SHA-256 matched the online run), and the resource log showed no new entries during the render.
That matters more here than for a converter. The photo you watermark is often the one you have not published yet.
Questions that come up
What does watermarking a photo mean? It means drawing a visible mark onto the pixels so the file carries your name or logo wherever it goes. The picture is re-encoded with the mark burned in, so there is no layer to switch off later.
How do I watermark photos for free? Use the panel above: drop the photos, type the text, pick a corner or tile it, then download. No account, no queue, and nothing is uploaded.
Can I watermark photos on my phone? Yes. The page runs the same canvas code in a mobile browser, and the photos can come from the camera roll. A 12 MP photo takes about half a second to decode, mark and encode on a desktop; a phone will be slower, and the 20-photo batch is the point where memory becomes the limit rather than speed.
Can someone remove the watermark? Usually yes. A corner mark goes away with one crop, which is why this page reports the crop cost before you download: 12.0% of the frame for a bottom-right mark, 54.0% for a centred one. Tiling raises the cost to the point where the crop is no longer worth it, because the gaps between marks are only 154 × 134 px. A determined editor can still paint over any visible mark.
Does watermarking reduce photo quality? It forces a re-encode, so yes, slightly. At quality 92 on a 12 MP photo, 6.44% of the pixels outside the mark changed, by at most 6 levels; at quality 60, 97.09% changed, by up to 15. The mark itself is not the cost. The decode-and-encode round trip is.
Does a watermark stop AI from training on my photos? No. A visible mark is a human-readable signal; it does not opt the file out of anything. Blocking crawlers and declaring terms are separate layers, and neither is enforced by the image itself.