✳designbench
/ Check it yourself

How to check that an image tool doesn't upload your photos

Photos carry more than pixels: faces, places, and often GPS coordinates in their metadata. Don't take any site's "no upload" promise on trust, ours included. This guide explains how Design Bench handles your images, lists every network request it makes, and shows you how to check any web tool yourself in Chrome, Firefox or Safari.

01 / The problem

Why "we don't upload your photos" isn't enough

A sentence on a web page can't tell you what the page's code does. Even an honest claim can miss the details that matter:

  • Some formats are hard to handle in a browser. Services often process simple formats locally and send harder ones, such as iPhone HEIC photos or very large images, to a server.
  • "Processed locally" can still leak. A tool can resize your photo on your device and still report the file name, camera model or location to an analytics service.
  • Sites change. The code you get today may not be the code the privacy page described.
  • Anything you type counts too. A QR code for a Wi-Fi network contains the password, and a contact card contains a phone number.

What you can check is what your browser actually sends. Every request a page makes passes through the browser, and every desktop browser will show you the full list.

Know the limits. The Network panel shows what the tab you are watching sends while you watch. It says nothing about future versions of a site, and it can't see other apps on your device. Test with a harmless image before you trust any tool with a sensitive one.
02 / Design Bench, specifically

How Design Bench handles your images

We checked this against our own page code and then tested every tool (results below). Design Bench has no upload endpoint. When you choose an image, the browser reads it into the tab's memory. From there:

  • Resize, Compress, WebP → PNG and Remove EXIF draw the image onto an HTML canvas and export a new file with the browser's own image encoder. Re-encoding is what strips the metadata. The EXIF tool then scans the new file for EXIF and XMP blocks before it lets you download.
  • HEIC → JPG uses the open-source heic2any decoder, which is downloaded from our own domain when the page opens (about 1.35 MB) and runs in the tab.
  • QR codes, palettes and gradients are generated in the page from what you type or pick. Wi-Fi passwords and contact details stay in the page.
  • Previews and downloads use blob: links, which point to memory inside your browser. You will see them in the Network panel; they are not network traffic.

Every request a Design Bench tool page makes

WhenWhatSent toYour image in it?
Page opensThe page, style.css, the tool script (app.js, exif.js or the QR scripts), and the icon. The HEIC page also loads heic2any.pixdesk.ccNo
Page opensFonts. The pages use system fonts already installed on your device, so no font files are downloaded. The Resize and Compress pages draw their sample photo in the browser; it is not downloaded either.(nothing)No Until 19 October 2026 the tool pages loaded Outfit, DM Mono and Fraunces from Google Fonts; that request is gone.
Page opensanalytics.js, a consent-based analytics script shared across Toolwoven sitespixdesk.ccNo It only runs on toolwoven.com addresses. On pixdesk.cc it stops on its first line, so Google Analytics is not loaded and no consent banner appears.
Page opensaccount.js, the optional "Sign in" buttonpixdesk.ccNo When you're not signed in it makes no further requests (confirmed in our test).
While you use a toolNothing over the network. Only blob: reads of images already in memory.(your browser)Stays local
Only if you choose to sign inSign-in link, session refresh, subscription statusrmwncsegjusfzlyefbct.supabase.coNo These requests carry your email address, a session token and the site name. They contain no images, file names or typed tool content. (We read this from the code but did not test a signed-in session.)
What changed: no more Google Fonts. Until 19 October 2026 our tool pages loaded their typefaces from Google's font service, which let Google see that a browser at your IP address opened a Design Bench page (never your images). The pages now use the fonts already on your device. You can confirm it the same way as everything else on this page: in the Network panel, the only host should be pixdesk.cc. This guide page has always loaded nothing from third parties.
03 / Check it yourself

Check with your browser's Network panel

The routine is the same everywhere. Open the tool, open the Network panel, keep the log, clear it, then process a test image and read what appeared.

  1. Pick a harmless test photo and note its size, for example 2.4 MB. A photo of a wall is fine.
  2. Open the tool page, then the Network panel (shortcuts below).
  3. Turn on log preservation and clear the list.
  4. Use the tool: choose the photo, convert or clean it, and download the result.
  5. Filter to Fetch/XHR, the channel pages use to send data in the background. Then switch back to All.
  6. Hunt for anything that sends data. Show the Method column and look for POST or PUT. An upload is a request whose sent size is close to your photo's size, often multipart/form-data.
Two things that look alarming but aren't. Rows starting with blob: or data: are the browser reading memory it already holds, such as your preview image. And Chrome's Size column is the size of the response, what came back. To see what was sent, open the request and check its payload or the content-length request header.
Practice target

Try it on this page first

This guide loads only itself and its icon. Open your Network panel, clear it, and try both buttons. The first reads a file locally, so no row should appear. The second deliberately sends a short piece of dummy text to our server, so you can see what a real upload looks like.

Nothing yet. The first button never sends your file anywhere.

Google Chrome

also Edge, Brave, Opera · DevTools
  1. Open DevTools: Cmd+Option+I on Mac, Ctrl+Shift+I or F12 on Windows and Linux. You can also use the ⋮ menu, then More Tools › Developer Tools. Select the Network tab.
  2. Tick Preserve log, then clear the list with ⊘.
  3. Click Fetch/XHR in the filter bar. Check WS as well, because WebSockets can stream data. Then go back to All.
  4. Right-click a column header and enable Method.
  5. Click a request. Under Headers › Request Headers, look for content-length. The Payload tab appears only when something was sent, and shows exactly what.
  6. Offline test: choose Offline in the Network throttling drop-down next to Disable cache. It normally reads No throttling.

Official docs: Open Chrome DevTools · Network features reference. Labels checked on 19 Oct 2026. If Chrome has moved a control since then, the reference page names its new place.

Mozilla Firefox

Network Monitor
  1. Open the Network Monitor: Cmd+Option+E on Mac, Ctrl+Shift+E on Windows and Linux. You can also use Tools › Browser Tools › Web Developer Tools, then the Network tab.
  2. Open the menu of other actions (the gear icon at the right of the toolbar) and turn on Persist Logs. Clear the list with the bin icon.
  3. Filter with XHR for background requests and WS for WebSockets, then go back to All.
  4. Watch the Method, Transferred and Size columns. Right-click a header to add columns.
  5. Click a request. The Request tab shows the body that was sent, and Headers shows Content-Length.
  6. Offline test: choose Offline in the Throttling menu on the toolbar.

Official docs: Network Monitor · Toolbar · Request details · Throttling. Checked 19 Oct 2026.

Apple Safari

Mac · Web Inspector
  1. One-time setup: Safari › Settings… › Advanced, then tick Show features for web developers.
  2. Press Option+Cmd+I (or choose Develop › Show Web Inspector), then open the Network tab.
  3. Tick Preserve Log and clear the list.
  4. Use the type buttons above the table: XHR/Fetch, then All.
  5. Right-click the table header and tick Method.
  6. Select a request. In Headers, a Request Data section appears only when something was sent. The Sizes panel shows Bytes Sent separately from Bytes Received.
  7. Offline test: Web Inspector has no offline switch, so turn off Wi-Fi or unplug the cable.

Official docs: Enabling Developer Features (Apple) · Enabling Web Inspector · Network Tab. XHR/Fetch, Request Data and Bytes Sent were checked in WebKit's Web Inspector source on 19 Oct 2026.

04 / Pull the plug

The offline test

If a tool still converts your photo with the network switched off, the conversion can't be happening on a server. It is the easiest test to show a colleague.

  1. Open the tool page while you're online and wait for it to finish loading.
  2. Go offline: use the browser's Offline setting (above), or turn off Wi-Fi.
  3. Without reloading, choose a photo and run the tool. If you get a download, the work happened on your device.
  4. Leave the Network panel open, with the log kept, while you reconnect. A tool could store data and send it later, and this is how you'd see it.

Design Bench offline results

ToolTest inputOffline straight after the page loadsOutput while offline
Image Resizer800 × 600 JPG → 400 px wideWorks400 × 300 WebP
Image Compressor800 × 600 JPGWorksWebP, about 5 KB
HEIC → JPG800 × 600 HEICWorks800 × 600 JPG
WebP → PNG800 × 600 WebPWorks800 × 600 PNG
Remove EXIF dataJPG with camera make, model, date and GPS tagsWorksJPG with no EXIF block
QR Code Generatora URLWorks1024 × 1024 PNG
Color PaletteGenerateWorksCSS file
CSS Gradient45° gradientWorks1200 × 800 PNG

Every tool downloads all of its code when the page opens, so nothing has to be fetched later. Design Bench doesn't install a service worker, so reloading a page while offline won't work. Keep the tab open.

05 / Any site, any tool

How to check any online photo or file tool

This routine works on any converter, compressor or metadata remover, and on Design Bench after future updates. In a workshop, give everyone the same dummy photo and have them work through this list.

  • Start clean. Use a private window or a profile with no extensions. Extensions send their own requests, and those show up as noise.
  • Use a recognisable test image. Give it an odd name and size, such as canary-test-7Q2.jpg at 2.4 MB, so an upload of that size stands out.
  • Watch from the first click. Some services upload as soon as you drop the file in, before you press any button.
  • Look for POST, PUT and WebSocket traffic whose sent size is close to your image's size. Also look for large requests to storage hosts: names containing storage, upload, s3 or blob.core are common.
  • Keep two lists. Uploads move your file. Third-party loads, such as fonts, analytics and ads, tell another company you visited. Both matter, but in different ways.
  • Run the offline test. If the tool works offline, the processing was local. If it fails, check the Network panel: it may have needed to fetch code, or it may need a server.
  • For metadata removers, check the output too. Open the cleaned file in a metadata viewer you trust. Design Bench's own result screen shows what it checked, but verifying it with a second tool is good practice.
  • Write down what you saw: the browser, the date and the result. A test only applies to the version of the site you tested, so repeat it before you use the tool with something sensitive.
06 / Our measurements

Our test results, tool by tool

We tested the published version of each tool with Google Chrome 155 in headless mode, driven through the Chrome DevTools Protocol, which feeds the Network panel. We used synthetic images: an 800 × 600 test card as JPG, PNG, WebP and HEIC, and a JPG with fake camera and GPS tags. We ran each tool, downloaded each result and recorded every request. The test web server also logged the size of every request body it received.

ToolNetwork requests while processingRequests with a bodyResult
Image Resizer0 (2 local blob: previews)0400 × 300 WebP
Image Compressor0 (2 local blob: previews)0WebP, about 5 KB
HEIC → JPG0 (1 local blob: preview)0800 × 600 JPG
WebP → PNG0 (2 local blob: reads)0800 × 600 PNG
Remove EXIF data0 (2 local blob: previews)0Camera and GPS tags gone
QR Code Generator00PNG
Color Palette00CSS file
CSS Gradient00PNG

Totals across all 24 runs (online, offline straight after loading, and offline after one online run): 0 requests with a body and 0 POST/PUT requests. The only hosts contacted were pixdesk.cc and, at that time, fonts.googleapis.com and fonts.gstatic.com, all while the page was loading. After we switched to system fonts we re-checked page loads on 19 October 2026: the home page and all 8 tool pages contacted only pixdesk.cc. Every request our test server received during the tool runs was a GET, with 0 bytes of request body. Nothing went to Google Analytics or Supabase.

Last tested: 19 October 2026. If we change how images are processed, we'll update this page and its date.

07 / References

Sources

You're welcome to link to or quote this guide. Sections 3 and 5 apply to any website. See also our EXIF remover, the privacy notice and about Design Bench.