What this page knows about you

Nothing here needs a server, so there isn't one: your photo and the element you place on it are read, combined and saved by code running in this tab, and no copy of either is kept anywhere.

The short version

Two files go into this tool and neither of them goes anywhere. The photograph and the thing you put on top of it are decoded into memory by the browser, drawn onto a canvas, and — if you press save — written back out as a download. At no point is either file sent to a machine belonging to us, because there is no machine belonging to us: this is a set of static files on a content network with nothing behind it that could accept a picture.

Close the tab and both are gone. There is no account to make and no history of what you opened. One thing can now outlive the visit, and it is not yours: if you press the cutout control, the model file that does the separating is stored in this browser so the second use costs nothing. That file came from the network, it is the same file every visitor gets, and there is a control beside the cutout that deletes it.

The requests that leave this domain

Everything this site needs to run — the page, its stylesheet, its scripts, its two typefaces, the decoder for iPhone photos, the 13.3 MB WebAssembly runtime that executes the cutout — is served from this domain. Two things are not. On overlaypicture.com itself, a cookieless page-view counter from Cloudflare loads with each page (described below). And only if you ask for it, the cutout model’s weights, 6,163,938 bytes, Apache-2.0-licensed, come from our model file server.

That request carries nothing about you beyond what any request for a file carries — the address being asked for, and whatever your browser tells every server it speaks to — and it goes in one direction. Your photographs are not part of it. They cannot be: the separation happens on this processor, after the model has arrived, and nothing in this page has anywhere to send a picture.

Nothing is fetched before you press the control that states the size. Decline it and no request is made, no model is stored, and every control on the site behaves exactly as it did before the model existed — you place a transparent PNG you cut elsewhere, or set the whole picture to Multiply or Screen and let the background fall away. That path is not a degraded mode kept for appearances; it is what this tool was built as, and it is still what happens by default.

What happens to a file, step by step

Opening it
The first 128 kilobytes are read to work out what the file really is and which way up it goes, then the browser decodes the whole thing into memory.
HEIC from a phone
A decoder is fetched from this site the first time an iPhone photo turns up. The code travels to you; the photo does not travel anywhere.
Working on it
Everything you do happens on a canvas in this tab. The preview is a smaller copy so dragging stays smooth; the export redraws the same thing at full size.
Cutting the subject out
Only if you press for it. The element is squashed into a 192-pixel square, the model reads it here on this processor in about 90 ms, and what comes back is an alpha channel. The square, the scores and the result all live in this tab's memory.
Saving it
The finished picture becomes a file in your browser's downloads. Its metadata is not carried over — a canvas has none to carry — so location and camera data from the original are not in the result.
Afterwards
No copy of either picture is written to storage in the browser and none exists anywhere else. The only thing left on your device is the model file, if you asked for it.

Counting visits, and no advertising

Cloudflare Web Analytics counts aggregate page views on overlaypicture.com. When a page loads on that domain, a small script from Cloudflare reports the page address, the referring page, coarse browser, device and country information, and how quickly the page loaded, to a property that belongs to this site alone.

It runs only on overlaypicture.com. A copy of these pages opened anywhere else — a preview build, a local development server — never loads the script, so it sends nothing. The script sets no cookie and no identifier, does not follow anyone between sites, and no event is sent for opening, placing, typing or saving anything: it cannot know that a picture was opened, let alone which one, and the words you type into a text layer never leave the tab.

This site carries no advertising. There is no ad script on any page, nothing that sets an advertising cookie and nothing that shares what you do here with an ad network.

A content blocker is welcome here. Blocking the counter changes nothing about the tool. The only other thing a blocker could interrupt is the model download, and if it does, the cutout control says so plainly and the rest of the tool carries on.

How to check any of this

Open the network panel before you open a photograph. Place an element, drag it around, pick a mixing mode and save the result, and count the requests: this page, its stylesheet, its scripts, its typefaces, and the HEIC decoder if you opened a file in that format — all from this domain — plus, on overlaypicture.com, the Cloudflare counter that loaded with the page. Then press the cutout control and watch two more appear: the runtime from here, and one request to our model file server for 6,163,938 bytes. Watch the direction as well as the count: none of them carries a picture.

Children, requests and changes

The contact page is the one place you can hand us anything. Its form sends what you type — name, email address and message — along with this site’s domain to a Google Form, and only when you press its send button. Opening it fetches nothing from Google, no other page on this site talks to Google, and the form has no way to carry a picture.

This is a general-audience utility with no accounts, so there is no account data to ask for, correct or delete — beyond a message you sent us yourself, a request to see what we hold about you would come back empty, which is the point. If this policy changes, the change appears here; there is no mailing list to be told through, because there is no mailing list.