Where Your Files Go

Last updated: 29 September 2026.

The short answer

Every tool on this site processes your file inside your own browser. Filewhisk has no server that could receive a file: the site is a set of static pages and scripts served from Cloudflare, with no server-side code behind them, so there is no upload endpoint for a file to be sent to. The file is read into your browser's memory and the result is built on your device. The few things that are kept, all of them in your own browser, are listed under what stays in your browser.

That is a claim you should not have to take on trust, so this page lists what the page itself downloads, what our analytics can and cannot see, how we tested the offline behaviour, and how you can check all of it yourself in under a minute.

What the page downloads

A tool page makes three kinds of requests. None of them carries your file.

What analytics can see

When you use a tool, the page sends Google Analytics a short event. Its entire content is listed here:

EventFields sent
File selectedTool name, number of files, extension of the first file (for example pdf), number of files the tool refused, and whether you picked, dropped or pasted
DownloadTool name, extension of the downloaded file, and whether it came from a link or a button
CopyTool name
ErrorTool name and one of three categories: protected, wrong_type or failed

Never sent: file names, file contents, passwords, text you type, or the status messages the tools show, because those can contain a file name. Error events are reduced to a category before they leave the page. The privacy policy covers cookies and advertising.

Does it keep working with the internet off?

Yes, once the page has loaded. A service worker keeps a copy of each page and its scripts, and the background fetch described above stores the processing engine the same way. After that, the tool no longer needs the network at all.

How we tested it (29 September 2026). Each tool below was opened in Chrome in a fresh profile, from a local copy of the site served by our own test server. Once the page and its engine had loaded, we shut the server down and only then gave the tool a file:

We shut the server down instead of using Chrome's built-in "offline" switch, because that switch does not stop requests made by the service worker. With the switch alone, the control request still succeeded, so the switch cannot prove a tool is working offline.

Tools tested this way: remove EXIF data, view image metadata, hash generator, text diff, protect PDF, unlock PDF, sign PDF, JPG to AVIF, compress GIF, compress video, CSV to Excel, Excel to CSV, PDF to JPG, and add watermark to PDF (with non-Latin text). All fourteen produced their result with the server off. Together they cover every engine in the table except jsQR, which the QR code generator only uses to read its own code back as a check; it is fetched the same way but was not part of this test. Tools that fetch nothing extra work offline for a simpler reason: everything they use arrives with the page.

What went wrong first. The first run of this test failed for protect PDF, unlock PDF and sign PDF: they only downloaded their engine when a file was dropped, so with the connection gone there was nothing to run. The background fetch was added the same day. We mention it because it is the kind of gap a "no upload" claim can hide.

Exceptions, stated plainly

What stays in your browser

Nothing is sent anywhere, but three things are kept in your own browser's storage. You can remove them at any time by clearing this site's data in your browser settings.

Check it yourself

  1. The offline test. Open any tool and wait a few seconds after the page finishes loading. Turn off Wi-Fi (or unplug the cable), then drop a file in. The tool works.
  2. The network log. Press F12 (on a Mac, Option + Command + I), open the Network tab, and use a tool. The requests you see are our own static files and Google's analytics and ad requests. None of them sends anything close to the size of your file. Type method:POST into the filter box: nothing goes to filewhisk.com, because there is nothing on our side to receive it.

Every tool

This table is generated from the site's own configuration when the site is built, so a new tool appears here the day it is published.

ToolWhere the file is processedExtra engine fetched after the page opens
Add Border to ImageYour browserNothing — everything arrives with the page
Add Page Numbers to PDFYour browserpdf.js (PDF renderer), 1.8 MB; fontkit + Roboto (only for text outside Latin-1), 1.1 MB
Add Watermark to ImageYour browserNothing — everything arrives with the page
Add Watermark to PDFYour browserpdf.js (PDF renderer), 1.8 MB; fontkit + Roboto (only for text outside Latin-1), 1.1 MB
Android App Icon GeneratorYour browserNothing — everything arrives with the page
App Icon GeneratorYour browserNothing — everything arrives with the page
App Store Screenshot GeneratorYour browserNothing — everything arrives with the page
ASCII Art GeneratorYour browserthree FIGlet fonts (text banners), 0.1 MB
Barcode GeneratorYour browserNothing — everything arrives with the page
Base64 Encoder and DecoderYour browserNothing — everything arrives with the page
Case ConverterYour browserNothing — everything arrives with the page
Circle Crop ImageYour browserNothing — everything arrives with the page
Color Picker From ImageYour browserNothing — everything arrives with the page
Combine ImagesYour browserNothing — everything arrives with the page
Compress GIFYour browsergifsicle, WebAssembly, 0.3 MB
Compress Image for DiscordYour browserNothing — everything arrives with the page
Compress Image for WhatsAppYour browserNothing — everything arrives with the page
Compress Image to 100KBYour browserNothing — everything arrives with the page
Compress Image to 1MBYour browserNothing — everything arrives with the page
Compress Image to 200KBYour browserNothing — everything arrives with the page
Compress Image to 20KBYour browserNothing — everything arrives with the page
Compress Image to 500KBYour browserNothing — everything arrives with the page
Compress Image to 50KBYour browserNothing — everything arrives with the page
Compress Image to Target SizeYour browserNothing — everything arrives with the page
Compress PDFYour browserpdf.js (PDF renderer), 1.8 MB
Compress VideoYour browserMediabunny (video muxer), 0.7 MB
Convert Image FormatYour browserAVIF encoder, WebAssembly, 3.5 MB
Create ZIP FileYour browserNothing — everything arrives with the page
Crop ImageYour browserNothing — everything arrives with the page
CSV to ExcelYour browserSheetJS (spreadsheet writer), 0.3 MB
CSV to JSONYour browserNothing — everything arrives with the page
CSV to XMLYour browserNothing — everything arrives with the page
Delete PDF PagesYour browserpdf.js (PDF renderer), 1.8 MB
Excel to CSVYour browserSheetJS (spreadsheet reader), 1.0 MB
Excel to JSONYour browserSheetJS (spreadsheet reader), 1.0 MB
Extract Audio from VideoYour browserNothing — everything arrives with the page
Extract Images from PDFYour browserpdf.js (PDF renderer), 1.8 MB
Extract Text from PDFYour browserpdf.js (PDF renderer), 1.8 MB
Facebook Cover Photo SizeYour browserNothing — everything arrives with the page
Favicon GeneratorYour browserNothing — everything arrives with the page
Fill PDF FormYour browserpdf.js (PDF renderer), 1.8 MB; fontkit + Roboto (only for text outside Latin-1), 1.1 MB
GIF to JPGYour browserNothing — everything arrives with the page
GIF to PNGYour browserNothing — everything arrives with the page
Hash GeneratorYour browserNothing — everything arrives with the page
HEIC to JPGYour browserNothing — everything arrives with the page
Image to Base64Your browserNothing — everything arrives with the page
Indian Passport Photo MakerYour browserNothing — everything arrives with the page
Instagram Post SizeYour browserNothing — everything arrives with the page
Invoice GeneratorYour browserpdf.js (PDF renderer), 1.8 MB; fontkit + Roboto (only for text outside Latin-1), 1.1 MB
JPG to AVIFYour browserAVIF encoder, WebAssembly, 3.5 MB
JPG to PDFYour browserNothing — everything arrives with the page
JPG to WebPYour browserNothing — everything arrives with the page
JSON Formatter and ValidatorYour browserNothing — everything arrives with the page
JSON to CSVYour browserNothing — everything arrives with the page
JSON to XMLYour browserNothing — everything arrives with the page
Meme MakerYour browserNothing — everything arrives with the page
Merge PDFYour browserNothing — everything arrives with the page
Mute VideoYour browserMediabunny (video muxer), 0.7 MB
Passport Photo MakerYour browserNothing — everything arrives with the page
PDF to GrayscaleYour browserpdf.js (PDF renderer), 1.8 MB
PDF to JPGYour browserpdf.js (PDF renderer), 1.8 MB
Pixelate ImageYour browserNothing — everything arrives with the page
PNG to AVIFYour browserAVIF encoder, WebAssembly, 3.5 MB
PNG to JPGYour browserAVIF encoder, WebAssembly, 3.5 MB
PNG to WebPYour browserNothing — everything arrives with the page
Protect PDFYour browserpdf.js (PDF renderer), 1.8 MB; qpdf, compiled to WebAssembly (PDF encryption), 1.4 MB
QR Code GeneratorYour browserjsQR (reads the code back to check it), 0.3 MB
Remove EXIF DataYour browserNothing — everything arrives with the page
Reorder PDF PagesYour browserpdf.js (PDF renderer), 1.8 MB
Resize ImageYour browserNothing — everything arrives with the page
Resize Image for LinkedInYour browserNothing — everything arrives with the page
Rotate ImageYour browserNothing — everything arrives with the page
Rotate PDFYour browserpdf.js (PDF renderer), 1.8 MB
Schengen Visa Photo MakerYour browserNothing — everything arrives with the page
Sign PDFYour browserpdf.js (PDF renderer), 1.8 MB; six handwriting fonts, 0.5 MB
Signature GeneratorYour browsersix handwriting fonts, 0.5 MB
Social Media Image ResizerYour browserNothing — everything arrives with the page
Split CSVYour browserNothing — everything arrives with the page
Split Image Into GridYour browserNothing — everything arrives with the page
Split PDFYour browserpdf.js (PDF renderer), 1.8 MB
SVG to PNGYour browserNothing — everything arrives with the page
Text DiffYour browserNothing — everything arrives with the page
TIFF to JPGYour browserNothing — everything arrives with the page
TIFF to PNGYour browserNothing — everything arrives with the page
Trim VideoYour browserMediabunny (video muxer), 0.7 MB
Twitter Header SizeYour browserNothing — everything arrives with the page
UK Passport Photo MakerYour browserNothing — everything arrives with the page
Unix Timestamp ConverterYour browserNothing — everything arrives with the page
Unlock PDFYour browserqpdf, compiled to WebAssembly (PDF encryption), 1.4 MB
US Passport Photo MakerYour browserNothing — everything arrives with the page
Video to FramesYour browserNothing — everything arrives with the page
Video to GIFYour browsergifsicle, WebAssembly, 0.3 MB
View Image MetadataYour browserNothing — everything arrives with the page
WebP to AVIFYour browserAVIF encoder, WebAssembly, 3.5 MB
WebP to JPGYour browserNothing — everything arrives with the page
WebP to PNGYour browserNothing — everything arrives with the page
Word CounterYour browserNothing — everything arrives with the page
XML to CSVYour browserNothing — everything arrives with the page
XML to JSONYour browserNothing — everything arrives with the page
YouTube Thumbnail SizeYour browserNothing — everything arrives with the page

Found something that doesn't match?

If any request, any tool or any sentence on this page doesn't match what you see, write to hello@filewhisk.com. We will correct the tool or the page, and say here what changed.