Free tools that run on your computer, not on a server
What "nothing is uploaded" actually means on this site, how to check it for yourself, and the handful of places it does not apply.
Almost every tool on johnmcm.com does its work inside the browser tab you have open. You pick a file, the page reads it into memory, changes it, and hands the result back as a download. At no point does the file travel to a server — not mine, not anyone's.
That is unusual. Most free online converters work the other way round: you upload, a machine somewhere does the job, and you download the result. The tool is free because your file paid for it.
How a browser tool actually works
When you choose a file, the browser does not send it anywhere. It hands the page a reference, and JavaScript reads the bytes into memory. Everything after that happens locally:
- The libraries run in the page. The SQL Playground is SQLite compiled to WebAssembly. The OCR Toolkit is the Tesseract engine, also compiled to WebAssembly, downloaded to your browser and run there. The PDF tools use pdf-lib and PDF.js. These are the same engines a desktop program would use — they are simply running in the tab.
- The result is built locally too. When you press download, the page makes a blob in memory and points a link at it. The file appears in your downloads folder without a round trip.
- It keeps working offline. Once a feature has loaded everything it needs, you can disconnect from the internet and, while the page stays open, it will still run. Some features fetch a library, a codec or a language model the first time you use them - each OCR language, for example - so do the exact job once before you test that.
Why it is worth caring about
"Nothing is uploaded" sounds like a technicality until you look at what people actually put into these tools.
- Documents are often confidential. Contracts, payslips, medical letters, passports, tenancy agreements. Merging two PDFs on a random website means handing that document to a company you know nothing about, under a retention policy you have not read.
- Photographs carry more than the picture. A phone photo usually has GPS coordinates, a timestamp and the camera's serial number in its EXIF data. Resizing it here strips or keeps that data on your machine, rather than on someone else's.
- Some pastes are credentials. A JSON Web Token is a password in disguise. Pasting one into an online decoder is handing over a working key — which is why the JWT Decoder here never sends it anywhere. The same goes for config files with database passwords in them.
- There is no upload limit to run into. Nothing is being transferred, so a 400 MB video or a 200 MB database is limited by your own machine's memory rather than by a free tier.
- There is no account, so there is nothing to breach. The site holds no password of yours, because it never asked for one.
Do not take my word for it — check
This is a claim you can verify in about thirty seconds, and you should, here or anywhere else that makes it.
- Watch the network. Open any tool, press F12 for developer tools, and pick the Network tab. Now do the job — merge the PDF, resize the image, run the query. Nothing carrying your file will appear.
- Or pull the plug. Load the tool and do the job once, so anything it downloads is already in the page, then turn off your wi-fi and do the same job again without reloading. A tool that needed a server would stop working; these do not.
Where this does not apply
A privacy claim is only worth anything if the exceptions come with it. These are all of them.
- ZIP to Text does upload. It sends the archive to this site's own API, which joins the text files inside it into one text document and sends that back. The archive is kept only for the length of the request - in memory, or for a larger upload briefly in a temporary file - and deleted as soon as the reply is sent; nothing is stored. The limit is 25 MB. If that is not acceptable for a given file, do not use this one.
- Math Drills does too. Problems are generated and answers are graded by the API, so the answers leave the machine. Nothing is stored — there is no database behind it and no record of who answered what.
- The GPX Viewer and FIT Viewer fetch map tiles. Your track is read and drawn locally, but the map underneath it comes from openstreetmap.org, so those tile requests do leave your browser. Both let you untick the map before opening a file, and then nothing is requested.
- Some libraries load from a public CDN. Most libraries are served from this site itself. The rest are fetched from a CDN the first time you open a tool that needs them, checked against a pinned hash before they run, and then cached by your browser. That request tells the CDN you loaded the library; it does not carry your file. The fonts come from Google Fonts the same way. Everything used is listed on the open source licences page.
- The OCR Toolkit fetches a language model. Choosing a language downloads its trained data from
tessdata.projectnaptha.comthe first time you use it, so that host learns which language you picked - not what your document says. The recognition itself runs on your machine: I checked, and reading a scan produces no upload of any kind, only that one download. - Audio to Text, Add Subtitles to Video, Text to Speech, the Background Remover and the Image Upscaler fetch an AI model. The first time, the model is downloaded from huggingface.co and kept by your browser, so that host learns which model you use. The recording or the photo is processed on your own machine and never sent anywhere.
- A file you open can try to fetch things, and mostly it is stopped. Several formats let their author point at another server - an EPUB chapter at a remote image, an SVG at a remote bitmap - and loading one tells that server you opened the file, and when. The EPUB Reader and the SVG Optimizer both refuse those requests, because there is no good reason for a book or a logo to call home. The MSG & EML Viewer blocks an email's remote images until you ask for them, since those are how a sender learns a message was opened.
The Markdown Editor does the same with pictures from the web in its preview, such as the badges in a README: it holds them back and says how many, and loads them only if you choose to. - The Donate button asks for one number. To show how far this month's goal has got, it asks this site's API for that percentage, and sends nothing about you or your files. Donating itself happens on Ko-fi, which takes the payment; Ko-fi then tells this site the amount and the name and message you gave, and whether you said they may be shown. Your email address is not kept: it is only compared, as the notice arrives, with the emails on open requests sent through the form below, so a supporter's request is linked to their donation.
- The feedback form sends only what you write. "Report a problem or suggest something", under every tool, sends your message, the email you give if you want a reply, the page's address and your browser's description of itself (its name and version and your operating system) to this site, and nothing else - never a file. It is stored on this site's database, emailed to me so I see it, and never shown publicly. The "Recent changes" under a tool and the What's new page only fetch the list of changes, and send nothing about you.
- A file type nothing here opens is counted. When you drop a file on the File Opener that no tool here opens, or type in a type that has none, the page sends this site its extension, such as ".xyz", and for a file that is not text its first 8 bytes - the signature that tells which format it is. Never the file, its name or anything in it, and nothing about you: each type is one counter, so I can see which formats people need most and add those.
- Page visits are counted. The site runs a self-hosted Umami instance on my own server — no cookies, no cross-site profile, no personal data, and nothing about what you put into a tool. It records that a page was viewed, which is how I know which tools are worth working on.
- The web server keeps an access log. Like almost every server, it notes each request — the address it came from, the page asked for and the browser's name — so that attacks and breakages can be spotted. Never the contents of a file, and the log is deleted after 30 days.
And it is genuinely free
No ads, no sign-up, no trial, no watermark on the output, and no paid tier holding the useful half back. Donations help with the running costs, but nothing is held back from anyone who does not give. This is a personal site, the tools are small, and running them costs me almost nothing precisely because your files are not passing through my server.