Privacy
Short, because there is very little to describe.
Files you process
Your images and videos are read in your browser with the File API, decoded to a canvas, and processed by JavaScript running on your own device. In normal use they are never transmitted: there is no storage bucket and no processing queue.
Nothing is written to disk unless you press download, and the browser tab discards everything when you close it.
The one exception: codec conversion
Some videos cannot be opened in a browser at all. H.265/HEVC — the default recording format on most modern phones — has no decoder in Chrome on Android and several other browsers. No amount of local JavaScript can read those files.
When that happens, and only when it happens, you are offered a button to convert that single file on our server. Pressing it uploads that one file. Declining sends nothing at all.
If you use it, this is exactly what occurs:
- The file is received into the operating system's temporary directory under a random name.
ffmpegre-encodes it to H.264/AAC.- The converted video is streamed back to your browser.
- Both the original and the converted file are deleted before the response completes. This runs on a shutdown handler, so it happens even if the conversion fails or errors.
Nothing about the file is logged, indexed or kept. No copy is retained, and the watermark removal itself still happens locally afterwards — the server only ever changes the container and codec.
The endpoint is /api/transcode.php. If you would rather it did not exist at all,
set TRANSCODE_ENABLED to false in includes/config.php,
or delete the file. The rest of the tool is unaffected; unsupported videos then simply report
that they cannot be decoded.
What is stored on your device
unmarkai-themeinlocalStorage— whether you chose light or dark. That is the entire list.
No cookies are set. No session is created. No fingerprint is taken.
Analytics and third parties
This site uses Google Analytics to count page views and see which pages people find useful. It records the page you viewed, roughly where in the world you are, and what kind of device and browser you used.
It runs without cookies. Analytics is configured with
client_storage: 'none', so nothing is written to your device and you are
not given an identifier that follows you between visits. The trade-off is ours, not
yours: repeat visits cannot be linked, so the visitor numbers are an estimate.
Advertising features are switched off explicitly: allow_google_signals and
allow_ad_personalization_signals are both false, so nothing here
feeds ad targeting or is joined to a Google advertising profile.
This never includes your files. Analytics sees which pages loaded. It does not and cannot see the images or video you process, because those are never sent anywhere — they are read and rebuilt inside your browser. Analytics is not told what you opened, how large it was, or whether a watermark was found.
To turn it off entirely, clear GA_MEASUREMENT_ID in
includes/config.php. No script is then loaded and no request is made. Browser
tracking protection, an ad blocker, or a Do Not Track extension will also stop it, and
nothing on the site depends on it working.
Server logs
Whoever hosts this deployment may keep standard web-server access logs — IP address, timestamp, requested path, user agent — as almost every web server does by default. Those logs record that you loaded a page. They cannot record what you processed, because what you processed never reached the server.
Verifying this
Do not take the above on trust. Open your browser's network tab, process a file, and watch the request list stay empty. Or load the page once, disconnect from the internet, and remove a watermark offline.
The only request you will ever see carrying your media is the conversion described above, and only after you press the button that warns you about it.
Contact
This is a self-hosted, open build. Questions about a specific deployment go to whoever runs that deployment.