Privacy
PhotosUpscaler fetches a model file and a WASM runtime when you press the control that names their size, and then executes them here — your folder is read from disk, worked through in a Worker on this device and written back as an archive, and no image byte is sent to any server, ours or anybody else's.
The short version
There is no server behind photosupscaler.com. The pages are flat files, there is no API route, no form posts anywhere except the contact page’s (which carries only text you type), and no code path by which a pixel buffer could be sent somewhere even by mistake — a build step fails if one appears in the engine or in any component.
What leaves this device
Model files, and only when you ask for them
A model file is fetched from our model file server — 240,078 bytes for ESPCN, or 4,866,396 bytes for Real-ESRGAN if you opt into it — and it is fetched only after you press a control that prints those numbers. That request tells the host that some visitor asked for that file. It carries no image, no filename, no dimension and no identifier this site set. Nothing is fetched at all if you run the arithmetic path.
The review studio can also fetch a face detector, YuNet, 229,738 bytes, when you press “Find faces on this device”; it runs here and its answer never leaves the tab. Every model file is checked against a published SHA-256 before it is run or kept, and the studio’s diagnostics list each one with a control to remove it.
The WebAssembly runtime that executes the graph is served from this domain, so the only other server the tools talk to is our model file server.
A message, if you write one
The contact page sends something only when you press its Send button: the name, email address and message you typed, plus the name of this site, posted to a Google Form that the people running photosupscaler.com read. Nothing goes while you type, the page loads no Google script, font or frame beforehand, and no other page here talks to Google. A picture cannot be attached to it.
Your pictures
They are read from disk by the browser, decoded in this tab, worked through in a background thread on this device and written back into an archive your browser saves. They are not uploaded, not copied to any service, and not seen by anyone operating this site.
What is written to disk, and where
Model files
Downloaded weights are kept in a Cache Storage bucket named photosupscaler-models-v1, so a return visit does not fetch them again. The estimate reference page reports how many bytes are held and deletes them on request, and deleting site data in your browser removes them too.
The run record
While a queue is running, an IndexedDB record holds the requirement, the format, the naming pattern, the list of filenames with their sizes and dimensions, each file’s state and the measurement. It exists so a closed tab does not lose your settings, the measurement or the files already finished.
Finished files, staged on this device
As each file in a queue finishes, its output is written to this browser’s Origin Private File System — a private folder only pages on photosupscaler.com can open, inside your browser profile, on this device. This is the one place this site writes picture data, and it is there so a resumed run keeps what it already finished instead of doing it again. Nobody operating this site can read it; it never leaves the device.
Your source photographs are never copied there. Resuming a run asks you to grant the folder again, matches each file by path, size and dimensions, and runs only the ones that had not finished. Pressing Discard deletes a run’s staged files at once. Downloading the archive deletes the record, and its staged files go the next time a page here opens or a new run starts. A run left untouched for seven days is deleted, staged files and all. Where a browser offers no such folder, or runs out of room for one, staging stops, the run carries on in memory, and the queue says so.
Settings the studio remembers
The single-photo studio remembers the last mode, scale, output format and quality you used, in this browser’s local storage, so the next photo opens the way you left it. Settings only — never a picture, a filename or a result. “Forget my settings” in the studio’s diagnostics removes them.
Form presets you name
On the online-form page you can save the pixel and kilobyte limits you typed under a name. They are kept in this browser’s local storage, hold no picture data, and are removed by the delete control beside each one or by clearing site data.
Clear everything
One control removes all of it at once — model files, run records, staged outputs, remembered settings and saved presets — and reports what the browser says it freed. The same control is in the studio’s diagnostics.
Removes the model files, the run records, any staged outputs, the remembered studio settings and your saved form presets.
Measurement
This site is set up for Cloudflare Web Analytics, which is cookie-free: it counts page views, the page address, the referring page, and the browser and country a request comes from, and sets nothing in your browser. It is added only when the page is served from photosupscaler.com itself — never on a preview copy or a local build — and it never sees a photograph, a filename or a dimension, because none of those leave this tab. Its token has not been switched on yet, so today the beacon is not loaded on any page; this paragraph already describes what it will do when it is.
Advertising
This site shows no advertising and loads no ad code.
What there is not
No account, no sign-in, no mailing list, no session cookie, no fingerprinting script, no social embed, no third-party font and no tag manager. Everything stored in this browser is described above and is removable from this site’s own controls or by clearing site data.