Privacy policy
Last updated September 2026. This describes what nanofile.io does with your data, in plain terms. Where something is a limitation rather than a promise, it says so.
The short version
Your files are compressed by your own browser, on your own device. They are never sent to us, because there is no endpoint to send them to. We do collect anonymous usage analytics about how the site is used, which is described in full below.
Your files
When you drop a file into any of the tools here, it is read into memory by the page and processed by code running in your browser. No copy is transmitted anywhere. There is no upload route in the application, no storage bucket behind it, and no queue. You can confirm this yourself: open your browser's network tools, compress something, and watch that no request carries the file. Disconnecting from the network after the page has loaded also works, and the compressors keep running.
Because your files never reach us, we cannot read them, scan them, retain them or hand them to anyone else. This is a property of how the site is built rather than a policy we have chosen to follow, which is the strongest form the guarantee can take.
Files you compress are held in your device's memory only for as long as the page is open. When you leave or reload the page, they are gone.
What your files carry, and what we remove
Files carry more than the picture, the page or the sound. A photo from a phone records where it was taken, on what, and when. An image saved out of a generator often carries the prompt that made it. A growing number of files carry Content Credentials, the C2PA signature that records what tool made or edited them. A PDF remembers who wrote it and which application saved it.
Every image compressor here decodes the file to pixels and encodes it again from those pixels alone, so none of that comes through: EXIF and GPS, the XMP packet, the colour profile, the Content Credentials manifest and any tag recording that a model was involved are all gone from what you download. On some formats that is a switch you can turn off, and the page says so; on the ones where the conversion makes it unavoidable, the page says that instead of offering a choice it could not honour. PNG is the exception to the mechanism rather than the outcome: its metadata is cut out of the container directly, which is why an already-optimised PNG can still come back smaller with nothing else changed.
Because we would rather show you than tell you, the result panel lists what was in the file and what left with the compression. That reading happens on your device, like everything else here, and none of it is sent anywhere: the analytics code drops any value whose name suggests it came from a file's contents, and that rule is enforced by a test rather than by good intentions.
One thing no compressor can do, including this one. Some image generators also mark their output inside the pixels themselves, invisibly, in a way that is meant to survive editing and re-encoding. Removing metadata does not remove that, and nothing on this site claims otherwise. If your reason for stripping a file is that it must not be traceable to the tool that made it, metadata removal is not sufficient and you should not treat it as though it were.
What is stored on your device
Six things, all local to your browser. The first five never leave it. The last, the analytics cookies, are read by Google's tag and sent to Google with each analytics request, as the analytics section below describes. None of them is sent to us.
- Your theme choice. A single value under the key
nf-themein local storage, so the site does not flash the wrong colours when you return. - The settings you last used on a tool. One record per compressor, under keys like
nf-opts:compress-jpgin local storage, so a quality you chose last week is still chosen this week. It holds the positions of the controls and nothing else: no file, no file name, and nothing read out of a file. - Files in transit between pages. When you drop a file on the home page, it is parked briefly in your browser's IndexedDB so the compressor page can pick it up after navigating. It is removed once collected, and it never leaves your device.
- A marker while a compression is running. One value under the key
nanofile_run_inflightin session storage, naming the tool and format being worked on, so that if your browser closes the tab mid-compression we can tell that it happened. It is removed as soon as the work ends, it is gone when you close the browser, and it holds no file and no file name. - Your analytics choice. If you turn analytics off with the switch below, the value
1under the keynf-analytics-optoutin local storage, so every page knows not to load the Google tag. It is only there if you have used the switch, and turning analytics back on removes it. - Analytics cookies. Set by Google Analytics, whose names begin
_ga, and sent to Google rather than to us. They are not set at all if you have turned analytics off. Described next.
Analytics
We use Google Analytics 4 to understand which tools people use and where the site is failing them. This is the one part of the site that sends data to a third party, so it is worth being precise about what that data is.
We never send file names, file paths, file contents, or anything derived from the contents of your files. The code strips any parameter whose name suggests it could carry one before an event is sent. Sizes and durations are sent as coarse bands rather than exact figures, so a single event cannot be matched back to a specific file.
Every event also records whether you are on a phone, a tablet or a desktop. That is worked out from the size of the browser window and whether the pointer is a finger or a mouse, never from your browser's user agent string, and it is there because compression is a different experience on a phone: it is slower, and a large file can run the device out of memory. Without it, a tool that works everywhere and a tool that only works on a laptop look the same to us.
These are all the events the site can send, and everything each one carries:
| Event | What it records |
|---|---|
page_view | Sent by the Google tag itself as each page loads, not by our code: the address and title of the page and the page you arrived from. |
file_selected | That a file was chosen, its format, and a coarse size band such as 1-5MB. |
format_unsupported | The format of a file we cannot handle yet, so we know what to build next. |
route_to_tool | Which compressor a file was sent to from the home page. |
compress_complete | That the work finished, which tool did it and whether it was a compression or a conversion, the format, how many files, the settings used, how much smaller the result was as a percentage and as a band such as 50-74%, whether the files came out smaller, the same size, larger, or were handed back untouched, whether this was the first run or a repeat after changing a setting, whether the file was one of our samples, and coarse size and duration bands. |
compress_error | That the work failed, which tool it was and whether it was a compression or a conversion, which engine ran, the formats going in and coming out, how many files failed, a short reason code such as "out of memory", a trimmed technical error message with any file name removed from it, whether it was the first attempt or a repeat after changing a setting, and coarse size and duration bands. If the browser closes the tab mid-compression, or you leave the page while one is running on a phone, that is reported the next time you open the site. |
file_error | That a file could not be read when it was dropped, its format, and the same reason code and trimmed error message described above. |
run_progress | That a long compression is still running, sent every ten minutes so a failure at the end of one is not recorded as if it came from nowhere. It carries the same tool and format details as the events above and nothing more. |
search | What you typed into the search box, once you had finished typing it, how many results it showed you, and whether you opened one of them. See the note below this table. |
search_no_results | A search that found nothing, and the two formats when it asked for a conversion we do not have, so we know what to build next. |
search_select | Which search result was opened, and how far down the list it was. |
download_result | That a result was downloaded, which tool produced it and whether it was a compression or a conversion, and in what format. |
copy_result | That a text result, such as minified code, was copied to the clipboard instead of downloaded, its format, and a coarse size band. Never what was copied. |
sample_loaded | That the sample file was used rather than one of your own. |
theme_toggle | That the light or dark theme was switched. |
outbound_click | That a link to another site was followed. |
About search terms. The search box is the one place on this site where words you typed are sent anywhere, and we send them because the whole reason for recording a search is to read what was asked for: when somebody looks for a conversion we do not offer, that search is how we find out it should exist. One event is sent per search, when you have finished typing it, rather than one per keystroke. Before it is sent, anything in the box that looks like a file name, a file path, a web address or an email address is removed, and if nothing is left afterwards no event is sent at all. That filter is part of the code rather than a policy we apply by hand, and it is covered by tests.
Google Analytics also collects the standard information any analytics tag receives: your IP address, which it uses to derive an approximate location and then discards, your browser and device type, the page you are on and the site you arrived from. It sets cookies to recognise a returning browser. Google's Enhanced Measurement can also record some interactions automatically, such as scrolling to the bottom of a page, where it is switched on in the property's settings; those events carry the same standard information and nothing from your files. Google acts as our data processor for this, and its own privacy policy governs what it does with the data. Our measurement ID is G-8S65TEMB97, should you wish to block it specifically.
Lawful basis. We rely on legitimate interests: knowing which tools are used, and where they fail, is how the site is kept working and improved, and the analytics described here are limited to that. In the UK, the cookies involved are used only to produce statistics about this site, which the statistical purposes exemption added to the UK's cookie rules by the Data (Use and Access) Act 2025 allows without asking first, provided you are told clearly, as this page does, and given a simple way to object, which is the switch below.
Retention. Google keeps event-level analytics data for the retention period set in our Google Analytics property, and deletes it after that. The longest period a standard property offers is 14 months. Aggregated reports, which cannot be tied back to a browser, are not affected by it.
Where the data goes. Google may process analytics data outside the UK, including in the United States, under the safeguards set out in its data processing terms.
Turning analytics off
The switch below turns analytics off for this browser. While it is off, the Google tag is not loaded on any page of this site, so no event, page view or cookie reaches Google from it. The choice is kept in your browser's local storage, so it applies until you turn it back on or clear this site's data, and it is per browser: a different browser or device has its own switch.
This switch needs JavaScript. With JavaScript off, the Google tag does not run either, so no analytics are sent.
Any content blocker or tracker blocker will also stop the tag loading. The site is built so that every event call quietly does nothing when the tag is absent, whichever way it was stopped. Turning analytics off does not affect the compressors in any way: they run entirely on your device and do not consult analytics for anything.
Hosting and server logs
The site is served as static files by Cloudflare Pages. As with any web host, Cloudflare records standard request logs, which include IP addresses, for security and abuse prevention. These logs cover requests for the pages, styles, scripts and fonts that make up the site. They cannot contain your files, because your files are never requested from or sent to a server.
What we do not do
- No accounts, so there is nothing to sign up for and no profile to build.
- No advertising, and no advertising or marketing trackers.
- No selling or sharing of data with anyone beyond the processors named above.
- No email collection, and no newsletter.
- No watermarks, paywalls or daily limits that would require identifying you.
Children
This site is a general purpose utility and is not directed at children. We do not knowingly collect personal information from anyone, of any age, beyond the analytics described above.
Your rights
If you are in the UK or the EU, data protection law gives you rights over personal data held about you, including the right to access it, correct it, have it erased, and object to its processing. In practice we hold very little: we have no accounts and no database of users, so for most requests the only relevant data is the analytics record tied to your browser's cookie, which you can clear yourself at any time by clearing your cookies, and which you can stop being added to with the analytics switch above. If you want to exercise any of these rights formally, or complain about how we handle data, email us at hello@convertcase.net. You also have the right to complain to the Information Commissioner's Office, the UK supervisory authority.
Changes
If this policy changes, the date at the top of the page changes with it. We do not keep a mailing list, so there is nobody to notify.
Who we are
nanofile.io is operated by Convert Case Ltd, the data controller for the purposes of this policy.
Questions about this policy, or anything else about the site, go to hello@convertcase.net. Mail sent from the links on this site arrives with "nanofile" as the subject, which is what keeps it out of the pile for the company's other sites.
Registered in England and Wales. Company number: 11614495.
Registered office address: C4DI @TheDock, 31-38 Queen Street, Hull, England, HU1 1UU.