File Handling Policy
This page is for the technically curious, and for anyone who wants to verify our privacy claims rather than take them on faith. Here is exactly what happens to your file, step by step, with the web APIs involved.
The pipeline in one look
createImageBitmap() → <canvas> → canvas.toBlob() → download. Every step runs in your browser tab. No step has a network component.Step by step
- You select a file. The browser opens it via the File API (
<input type="file">or drag-and-drop). The file object lives in your browser's memory. It is never serialized into a network request. - Decoding.
createImageBitmap()decodes the JPEG/PNG/WebP into raw pixels, again entirely locally. This is also where unsupported formats (HEIC, animated GIF) fail cleanly: we surface that instead of guessing. - Optional resize. If you set a maximum width, the pixels are drawn onto a smaller canvas. This is pure math in memory.
- Re-encoding.
canvas.toBlob(callback, mimeType, quality)encodes the canvas into JPEG, PNG or WebP at your chosen quality. The encoder ships with your browser (Chrome, Firefox, Safari, Edge all include one). - Metadata note. Because the image is re-drawn pixel-by-pixel, EXIF metadata (GPS location, camera serial, timestamps) is not carried into the output. The compressed file is clean of metadata by construction.
- Comparison & download. We compare the encoded blob's size with the original file's size. If compression didn't help, we keep the original instead. Downloading uses a temporary
blob:URL pointing at data already in your memory. The browser writes it straight to your downloads folder. - Cleanup. Object URLs are revoked and references released when you remove a file, clear the list, or close the tab. Nothing persists afterwards. There is no server-side copy because there was no server-side step.
What we can and cannot see
Our host (Cloudflare) serves the static HTML/CSS/JS like any website. It sees normal web requests (page loads, asset requests). It never sees your files, because the compression flow makes no network requests at all. You can verify this yourself: open your browser's DevTools Network tab, compress an image, and watch nothing new be sent.
Format support and honest limits
- JPEG / PNG / WebP: fully supported for input and output (AVIF output is offered only where the browser supports encoding it).
- Animated GIF: browsers decode only the first frame for canvas work: re-encoding would silently destroy the animation, so we refuse with a clear message.
- HEIC (iPhone default): no browser can decode HEIC into canvas yet. We report this plainly. (Workaround: export as JPEG from your Photos app first.)
- PNG "compression": PNG is lossless; quality settings don't apply. Only resizing or format conversion genuinely shrinks PNGs. We say so rather than pretending the slider does something.
Verify it yourself
Three easy checks: (1) DevTools → Network tab while compressing (no uploads); (2) turn off your internet after the page loads (the tool keeps working); (3) check the compressed file's EXIF (it's empty). The how-it-works page walks through each check step by step. If any of these ever fail to hold, that's a bug worth reporting to support@beetoolify.com.
The first check takes under a minute. Here is a six-step DevTools walkthrough you can do right now:
- Open any tool on BeeToolify, then open DevTools (right-click the page → Inspect, or press F12; Ctrl+Shift+I on Windows and Linux, Cmd+Option+I on macOS).
- Switch to the Network tab, then clear the list (the circle-slash icon) so you start from a clean slate.
- Pick a file — an image under 20 MB works well — and drop it into the tool.
- Watch the Network tab while the tool runs. You will see zero requests carrying your file: no POST, no PUT, no upload endpoint, no request with your file's name or bytes in it.
- Close the tab when you're done. The selected file, the decoded pixels and the output blob all disappear with it; nothing is written to your disk by the page except the download you explicitly asked for.
- Reopen DevTools → Application (Storage in Firefox). Under Local Storage you will find at most the
cb-consententry from the consent bar — your file, its name and its contents are nowhere, and nothing in IndexedDB, Cache Storage or cookies holds them either.
What you will not see: no upload requests of any kind — no POST with your file, no presigned URL to a bucket, no chunked transfer. The one allowed network request on the whole site is the one-time download of the ~55 MB AI model used by the background-removal tool; it happens on first use only, it carries no data about you or your files, and it is cached locally in your browser so later visits make no network request for it at all.
Last reviewed: November 2026 · Maintained by Syed Arbaz Ali Rizvi · Questions? Contact us