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.- Advertising cookies set by Google. The ads on this site are served by Google AdSense, which stores cookies on your device to select ads, cap how often you see the same one, and measure clicks.
No session is created and no fingerprint is taken by this site. The advertising cookies above are set by Google, not by us, and are the one thing here that follows you beyond this page — see below.
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 in analytics:
allow_google_signals and allow_ad_personalization_signals are both
false, so the page-view data is not joined to a Google advertising profile.
That applies to analytics only — the ad script described below is a separate thing
and does feed ad targeting.
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.
Advertising
This site is funded by ads served through Google AdSense. Being straight about what that costs you: it is the one part of this site that tracks people, and it works nothing like the analytics above.
Google and its partners use cookies to serve those ads. Google uses them to show ads based on your previous visits to this and other websites. You can opt out of personalised advertising at Google’s Ads Settings, and review the wider list of vendors at aboutads.info/choices. How Google handles data from sites that use its services is described in Google’s partner-sites policy.
This still never includes your files. The ad script runs in the page like any other script; it has no access to the images or video you process, because those are decoded to a canvas in your browser and never sent anywhere. What advertising sees is that a page was loaded — the same thing any site with ads on it sees.
An ad blocker will stop it, and nothing on this site depends on it running: watermark
removal works exactly the same with ads blocked. To remove ads entirely, clear
ADSENSE_CLIENT in includes/config.php — no script is then
loaded and no request is made.
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.