Privacy
The short version: your files never leave your device, and we do not know who you are.
Your files
Every tool on this site processes files inside your browser. Files are read from your disk into memory, converted there, and offered back to you as a download. No file, file name or file content is ever transmitted to Stayput or to anyone else. You can verify this with your browser's network inspector, or by loading a tool, running it once, disconnecting from the internet and using it again. Every tool that takes files also counts the requests this tab makes after you add them and lists them; requests made inside background workers, such as a model download, are not in that list.
The microphone and camera tools (mic test, voice recorder, tuner, webcam test, and the screen recorder when you turn its microphone on) ask your browser for access, and the sound or picture is handled inside the page in your tab: it is never sent to a server, and a recording is kept in memory until you save it.
What the site loads
- The pages, scripts and styles of this site, served from our host (Cloudflare).
- Some tools also need a WebAssembly program, served from this site like the rest of its code: the libheif decoder on pages that accept HEIC photos, the libjxl and libavif decoders when your browser cannot open a JPEG XL or AVIF file itself, and qpdf when you drop a password-protected PDF (it removes the encryption inside your tab). Most video runs on your browser's WebCodecs through Mediabunny. For old formats the browser cannot read, the page loads a decoder built from FFmpeg's libraries (LGPL) only when you convert such a file. Only when you use the tool that needs it, a page also downloads the MP3 encoder, the archive reader, the checksum, noise-removal and OCR engines and the AI models for background removal, upscaling, object removal, speech and vocal separation. A tool page that may need a decoder downloads it once in the background so that after one visit and a short wait the tool also works offline. A tool that uses a model needs one online run first, to download the model. These requests download only the program or model; they carry none of your data, and the file is decoded or unlocked in memory here.
- A small usage-counting script from our own self-hosted Umami instance, described below.
That is the complete list. There are no advertising scripts, no fonts from third parties and no cookies.
The tools that cut a person out of a video (blur video background, green screen video and video background remover) and the tools that find faces (passport photo maker, profile picture maker, blur and pixelate image when you use its face finder, and blur faces in video) use Google's open-source MediaPipe library, served from this site. About a minute after it starts, the library tries to send a usage log to Google (odml.pa.googleapis.com). The site's security policy makes your browser refuse that request, so nothing reaches Google. You may see the blocked request as an error in your browser's console.
Usage counting
To know whether Stayput is useful, we count page views and a few anonymous events with Umami, an open-source analytics tool we host ourselves. It sets no cookies and stores nothing in your browser, and it does not follow you across sites. (The small notes the site itself keeps in your browser are described below; they never leave your device as-is.) Our server does group the events of one browser into a session, described under "What the stats server can see" below. If your browser sends a Do Not Track or Global Privacy Control signal, nothing is recorded at all.
Every event, page views included, carries the site's address (stayput.dev) and the path of the page it happened on, such as "/tools/strip-exif". It never carries the query string or fragment of the address, the page title, your screen size, your browser language or the address of the page you came from. The details below are added for the events that have them:
- Visit start, once per visit: the page you arrived on, the name of the site that linked you here if it is a well-known one (for example "google" or "reddit"; otherwise "other" or "direct", never the full link; when your browser sends no referring site, the "utm_source" tag in the link you followed, if it names a well-known site, is used the same way, and the tag itself is never sent), and roughly how long since your last visit ("new", "same day", "1 day", "2-7 days", "8-30 days" or "31+ days").
- Files added, when you first add files to a tool: which tool, the number of files as a range (for example "2-5"), their total size as a range (for example "1-10MB"), the previous page you looked at on this site, the three visit details above, and, if you reached the page from the site's own search, a note saying so.
- Tool start, when you press Run on a speech-to-text or subtitle tool (Auto captions, Video to subtitles, Transcribe, Add subtitles to video and the pages built on them): only some of the details a tool run sends, namely which tool, the number of files as a range, their total size as a range, the file kind you picked to save as (for example SRT or MP4) and the visit details above. It is sent as the work begins, so we can tell how often a run is pressed on a phone and never finishes; it carries no file name, no file content and no timing.
- Tool run, each time a tool runs: the same details, plus whether it succeeded, whether it was the first success since you added files or a repeat, the output size range, how long it took as a range, which tool you ran before it in this tab, whether this is your first, second or third-plus run in this visit, how many different Stayput tools this browser has used (1, 2 or 3+), roughly how long since your last successful run, and which group of a site experiment this visit is in (see below). Tools that produce a set kind of file also send that kind or the option you picked, such as MP4, ICO, ZIP or password-protected ZIP; it never says anything about your file. If a run fails, we also record the kind of error (for example "TypeError"), never its message, so we can tell a tool is breaking without seeing anything about your file. When you leave a Video background remover run before it finishes, the "left during run" record also carries three coarse ranges, never exact times: how long the run had been going ("under 10 seconds", "10-30 seconds", "30-60 seconds", "1-3 minutes", "3-10 minutes" or "over 10 minutes"), how far along it was ("0", "1-25", "26-50", "51-75" or "76-99" percent), and which person finder was chosen ("fast" or "better"). We use them to see whether runs feel too slow on phones.
- Next step click, when you click a suggested next tool after a job: which tool you were on, which one you picked, and the experiment group.
- Search opened, the first time you open the header search on a page: the path of the page you opened it from. Nothing you type is sent.
- Search result opened, when you pick a search result: the path of the page you picked, whether it is a tool, a page or a guide, and its position in the list ("1", "2", "3", "4-10" or "11+"). Never the words you typed.
- App installed, when you accept the browser's offer to install the site as an app: the event name alone, with no details.
- Test label, only while we are testing two versions of a page: every event above then also carries one more detail, a random label ("A" or "B", with the name of the test, for example "home-hero:A"). It is picked by chance when your visit starts and kept in this tab only, so it is the same for the pages you look at in this visit and forgotten when you close the tab. It is not stored across visits and is not linked to you or to anything you did before. When no test is running, events have no such detail at all.
File names, file types, exact sizes and file contents are never recorded. To work out the "since your last visit" and "tools used" ranges, the site keeps a small note in your browser's own storage: the date of your last visit, the date of your last run, the list of Stayput tools you have used and a count of successful runs, which is only used to decide when to offer installing the app (the offer is remembered once you dismiss it). That note never leaves your device as-is; only the ranges above are sent. We also test whether suggesting a next tool after a job is useful: each visit is placed at random in one of two groups, one that sees the suggestions and one that does not. The group is a coin flip kept in this tab only and forgotten when you close it. Clearing site data for stayput.dev removes it.
What the stats server can see
Like any web server, our Umami server sees the IP address and the browser user agent of each request that reaches it. From the IP address it looks up an approximate location: country, region and city, where its location data has them. From the user agent it works out your browser, operating system and device type. Umami keeps these, with the page path, event name and details above, against a session and a visit. It does not store the IP address or the user agent text. They are used for the lookups, and are mixed with a secret and a salt that rotates (Umami's own code changes it monthly unless the operator sets another period) into a one-way hash that tells the events of one browser apart from another's. The hash cannot be turned back into your address. The site does not send Umami any identifier of its own: no screen size, language, page title, user id or tag.
Within one page view, the server's reply to your first event contains a short token that identifies the session and visit. The page keeps it in memory only, never in a cookie or in your browser's storage, and sends it back with that page's later events so they are grouped together. It is gone when you reload or leave the page. Each request also names the site and its hostname in request headers.
What we can see
Our host keeps standard, short-lived server logs of page requests (the page URL, your IP address and browser type) for security and capacity purposes. We do not add anything to that. We cannot see which files you use, how many, or what is in them, because that information never reaches a server.
Offline storage
So that pages work offline after one visit and a short wait, the site asks your browser to cache its own pages and scripts using a service worker. This cache contains only the site's code, never your files. You can clear it at any time from your browser's site settings.
When you follow a "next step" link after a job, such as from Auto caption to Compress video, the site can carry the finished file to the next tool so you do not have to pick it again. To do that it keeps one temporary copy in your browser's own storage on your device, and a note of it in this tab. The next tool deletes the copy as soon as it has picked it up. If you leave without that happening, the copy is deleted when you leave the page, or after five minutes the next time any Stayput page opens; if the tab was closed first, it stays on your device until then. The copy never leaves your device: it is not uploaded, no request carries it, and no analytics event mentions it. Files over 200 MB (64 MB in a browser that cannot store files directly) are not carried, and if your browser will not store a copy the next tool simply asks for the file. The same applies to the signature maker's "Use in Sign PDF" button, which carries the signature image.
Tools that write a video, such as Auto caption, save the finished video as a temporary file in your browser's own storage on your device while it is made, so a long video does not have to fit in memory. The file never leaves your device and has a random name, not yours. It is deleted when you clear the results or run the tool again, and when you leave the page; if the tab was closed first, it is deleted the next time any Stayput page opens. If your browser does not allow this, the video is held in memory instead.
Open source
The full source code is at github.com/keenanlk/stayput, so anyone can confirm the above.
Last updated November 1, 2026.