Nothing you drop into Anizel is uploaded. Here's how you can prove it.
Every one of the 40 tools on this site runs on your own computer or phone — inside your web browser, using JavaScript. There is no upload step and no server doing the work on your files. You don't have to trust that: you can watch.
The 60-second test
- Open a tool. Any of them — Merge PDF, Compress Image, Protect PDF, whatever you use.
- Open your browser's DevTools. Press F12 (or ⌘⌥I on Mac) and click the Network tab. Tick Preserve log if you see it. This tab lists every single byte your browser sends anywhere.
- Clear the log, then drop your file onto the tool. Sensitive contracts, ID scans, photos — whatever you were about to use it for.
- Click the button to run the tool. Merge, compress, convert, whatever.
- Look at the Network tab. You'll see no request carrying your file. No POST to a server, no upload progress, no data going out. The file is opened by the JavaScript in the page you're already on and the result is saved straight back to your device.
If we were secretly uploading your file, it would show up in that Network tab. It doesn't — because we aren't.
How it actually works
Modern browsers can do everything a server used to do. When you drop a file onto one of our tools, it's read into memory by JavaScript (using the browser's built-in File API), processed by an open-source library also running in your browser (pdf-lib, PDF.js, Tesseract's WebAssembly, and so on), and the result is handed straight back to a download link. Your computer is doing the work. Ours isn't even involved.
The whole site is static HTML, CSS and JavaScript — the same kind of files you'd get from opening a plain document. We couldn't process your files on a server even if we wanted to: there isn't one behind these tools.
The libraries doing the work
None of this is our invention — we're standing on years of excellent open-source work. Every library that touches your files ships with source code you can inspect:
- pdf-lib and @pdf-lib/fontkit — editing and creating PDFs, embedding Unicode fonts.
- PDF.js (by Mozilla) — reading and rendering PDFs.
- Tesseract.js — OCR, running the classic Tesseract engine as WebAssembly.
- qpdf-wasm — AES-256 encryption/decryption for password protection.
- Ghostscript (via ghostscript-wasm, AGPL — served as a separate, replaceable file) — the "Strong" PDF compression engine.
- JSZip — reading and writing ZIP archives (also EPUB, DOCX and other zip-based formats).
- SheetJS — reading Excel spreadsheets.
- docx, docx-preview and mammoth.js — reading and writing Word documents.
- PptxGenJS — writing PowerPoint files.
- UTIF.js and libheif (via libheif-js, LGPL — served as a separate, replaceable file) — decoding TIFF and iPhone HEIC images.
- transformers.js and onnxruntime-web — running the AI models below on your device.
- OpenAI Whisper (MIT) — speech-to-text for the Transcribe tool; the fast model is bundled with the site.
- MODNet and U²-Net (both Apache-2) — background removal, bundled.
- Real-ESRGAN (BSD-3) and 4xSPANkendata by Philip Hofmann (CC-BY-SA-4.0, redistributed unmodified) — image upscaling, bundled. Full model provenance:
assets/models/NOTICE.mdin the source repo. - html2canvas — pixel-exact rendering for the Word→PDF preserve-layout mode.
- qrcodejs — QR code generation.
All of these are copied straight into /assets/vendor/ on this site and served from anizel.com itself — not fetched from a third-party CDN at runtime. That was a deliberate choice, so that a compromised CDN can never inject malicious code onto a page while you're using it.
What actually crosses the network
To be honest and specific, here is every network request Anizel can make, and none of them involve your file bytes:
- The page you're on. HTML, CSS, JavaScript, fonts and library files, all from anizel.com. Your browser needs these to render and run the tool. Once loaded, the tool works offline.
- One anonymous analytics ping. A single "somebody viewed this page" beacon goes to GoatCounter (an open-source, cookieless counter) — no cookies, no fingerprinting, no personal data, and zero bytes of your file. It fires when the page loads, before you've picked any file, and you can watch it in the same Network tab (
gc.zgo.at/anizel.goatcounter.com, disclosed in the policy below alongside the OCR models and the ad hosts). An ad-blocker blocks it and nothing breaks. - Optional model downloads, only if you ask for them. The English OCR model and all the AI models (speech-to-text, background removal, upscaling) are bundled with the site itself. Two exceptions stream once and then cache on your device: non-English OCR languages from the Tesseract project's CDN (
tessdata.projectnaptha.com), and the opt-in higher-accuracy speech model from the Hugging Face CDN (huggingface.cohosts). Both are plain GET downloads — data flows to you; your files are never in them. - Google ads. Anizel is free because pages carry ordinary display ads. Google's ad script (
pagead2.googlesyndication.comand related Google hosts — every one listed in the policy below) loads with the page and renders ads in sandboxed frames. Those requests carry normal web-page context, never your files: the ad code has no access to what you drop into a tool, it fires before you've picked any file, and the same Network-tab test shows you exactly what it sends. Run an ad-blocker and every tool keeps working perfectly.
That's it. There is no other outbound traffic. There is no place we could put a "silent upload" — the Network tab would give it away instantly.
Don't take our word for it — your browser enforces it
Every page on anizel.com ships with a Content-Security-Policy header. That's not a promise from us — it's an instruction to your browser: refuse to let this page talk to anything except the short list below. Even if our code were somehow compromised, the browser would block an upload before a single byte left your machine. This is the actual policy, verbatim (line-wrapped for readability):
Content-Security-Policy:
default-src 'self';
script-src 'self' 'wasm-unsafe-eval' https://gc.zgo.at
https://*.googlesyndication.com https://*.doubleclick.net
https://*.googletagservices.com https://adservice.google.com
https://*.adtrafficquality.google
https://fundingchoicesmessages.google.com;
style-src 'self' 'unsafe-inline';
img-src 'self' blob: data: https://anizel.goatcounter.com
https://*.googlesyndication.com https://*.doubleclick.net
https://*.google.com https://*.gstatic.com
https://*.googleadservices.com;
font-src 'self' data:;
connect-src 'self' blob: data: https://anizel.goatcounter.com
https://tessdata.projectnaptha.com
https://huggingface.co https://*.huggingface.co https://*.hf.co
https://pagead2.googlesyndication.com
https://googleads.g.doubleclick.net
https://ep1.adtrafficquality.google https://csi.gstatic.com
https://fundingchoicesmessages.google.com;
media-src 'self' blob: data:;
worker-src 'self' blob:;
frame-src 'self' https://*.googlesyndication.com https://*.doubleclick.net
https://*.adtrafficquality.google
https://fundingchoicesmessages.google.com https://www.google.com;
manifest-src 'self'; object-src 'none';
base-uri 'self'; form-action 'self'; frame-ancestors 'self'
Translated: pages on this site may talk to anizel.com itself, to the anonymous analytics ping, to the OCR language-model CDN, and to Google's disclosed ad hosts — and to nothing else. The hosts that pay the bills are pinned to the same short list as everything else: nothing that touches your files ever sends them anywhere, and an undisclosed server simply isn't reachable. No inline scripts are allowed either. To see the header yourself: DevTools → Network → click the first request → Headers → content-security-policy.
The little "0 uploads" badge in the corner of every tool page is watching this live: it counts every network request the page makes and turns red if anything undisclosed is ever contacted. It never has been.
And the entire site is open source, so you can read every line of code that touches your files: github.com/anissmail-2/SITE_CODE.
Install it — work offline forever
Anizel is a Progressive Web App. Click the install icon in your browser's address bar (or "Add to Home Screen" on mobile) and it becomes a real app on your device. After that, the whole site — every tool, every library — works with no internet at all. Try it: install, turn on airplane mode, merge two PDFs.
That's the ultimate demonstration that nothing is uploaded. It couldn't be, because there's nowhere for it to go.
Who's behind this
Anizel is a small project built to make the everyday file jobs — merging PDFs, compressing photos, zipping folders — take five seconds instead of five clicks on a paywalled competitor. It's free, it always will be, and it has no premium tier hiding the useful features. If you find something we should add, get in touch.
