How In-Browser Watermark Removal Actually Works

It does not run a model at all. It solves a geometry problem: the pixels around your marked area are pushed inward from the edge, nearest boundary first, each new pixel blended from neighbors that are closer to the original background — weighted by how well each neighbor's gradient points at the pixel being filled. The method is Telea's Fast-Marching Method, and it runs entirely in your browser tab.

Why you should care: this design has a hard ceiling — it cannot invent pixels that were never in your file. A cloud tool with a generative model can; that is why its fills sometimes look richer and sometimes fabricate detail you never photographed. Here, every pixel in the result comes from your own image, provably, because nothing else ever enters the computation — no model weights, no server round-trip, nothing.

Before and after: a watermark removed by in-browser propagation
A real run on watermarkstrip.com — the marked area is rebuilt by propagation from its boundary. Left: before. Right: after.

The fill, one ring at a time

When you hit Remove watermark, the page does not call anything remote. It builds a thin band around your painted mask and walks it inward, like a tide coming in over the hole:

That is the entire algorithm: in from the edges, nearest first, blend as you go. There is no network request anywhere in this path — the removal code contains no fetch, no XMLHttpRequest, no WebSocket, no sendBeacon. The loop is a pure distance-and-blend computation on the canvas data you loaded.

What the blend weights actually do

The fill is not a naive average, and this is where most of the visible quality comes from:

One honest consequence: on a fully painted solid block, a naive average would collapse to the same flat color forever (the interior keeps averaging to itself). The directional weighting plus the marching order is what lets the fill rebuild a plausible background even there. It is still reconstructing from your pixels only — just smarter about which pixels to trust.

Deterministic by construction

Run the same image through the same mask twice and you get the same output. The removal path contains no random source at all — no Math.random, no noise injection, no dice.

Why this matters to you:

The honest ceiling of in-browser fills

A method that only moves your own pixels has a fixed ceiling, and you should know it before you pick a tool:

Nothing here runs on your GPU in a heavy way, nothing uploads, and nothing is invented. Those three facts share one cause: it is a small geometry algorithm, not a model. If your job fits inside its ceiling, it is the more private and more predictable tool. If it does not, you now know exactly why — and what a cloud tool is really trading you for the prettier fill.