How it works

Every tool on this site is an ordinary web page plus an open-source neural network that runs inside your browser. This page explains what happens from the moment you open a tool, how fast it is on real hardware, and how to check for yourself that your files aren't uploaded.

What happens when you open a tool

  1. The page loads. It's plain static HTML, CSS and JavaScript, with no server-side code and no login.
  2. The model downloads, once. The page fetches the model weights, an ONNX file of roughly 5 MB to 600 MB depending on the tool, from models.swordfishsoft.org. A progress bar shows real bytes received. The browser saves the file in its Cache Storage.
  3. An engine is picked. If your browser supports WebGPU and the tool has been validated on it, the model runs on your graphics card. Otherwise it runs on the CPU through WebAssembly, on a single thread. The tool shows which one it's using.
  4. Your file is read locally. When you drop in an image, recording or document, the browser reads it straight from disk into the page's memory. The model runs in a background thread (a Web Worker) so the page stays responsive.
  5. The result is built in the page. The PNG, audio file or text you download is created in the browser and saved as a local download. It never passes through a server.

On your next visit the model comes out of the browser cache instead of the network, so the tool is usually ready in one to three seconds.

Check it yourself

You don't have to take our word for it. In Chrome, Edge or Firefox:

  1. Open a tool and wait until the model has finished loading.
  2. Open the developer tools (F12, or ⌥ ⌘ I on a Mac) and switch to the Network tab. Click the clear button so the list is empty.
  3. Process a file.
  4. Look at the list. You'll see no request carrying your file. Your data never appears in a request body, and nothing is sent that's anywhere near the size of your file.

A stricter test: once the model has loaded, turn off Wi-Fi or unplug the network cable, then process another file in the same tab. It still works, because nothing in the processing needs the network.

WebGPU or WebAssembly: measured speeds

Every tool has to pass the same test before release. Its built-in sample goes through the WebGPU path and the WebAssembly (CPU) path in an automated Chrome session, and we check the output as well as the timing. These are the processing times from those runs, on an Apple M2 Max, with the model already loaded. The CPU column was re-measured on 2026-09-25 after the change described below, so it is single-threaded:

ToolSample inputWebGPUCPU (WASM)Download
Transcribe audio30-second podcast clip2.0 s12.9 s291 / 206 MB
Text to speech207 characters → 13 s of speech1.3 s19.2 s326 / 305 MB
Remove background1024 × 683 photo1.2 s5.3 s98 / 192 MB
Remove objects1024 × 683 photo0.34 s11.2 s107 / 62 MB
Depth map1280 × 855 photo0.28 s5.5 s99 / 27 MB
Upscale 4×512 × 384 → 2048 × 15361.0 s11.8 s5 MB
Unblur image1024 × 768 photo2.0 s39.3 s275 MB
Vocal remover20-second song2.1 s74.2 s67 MB
Image to text (OCR)Receipt, 20 lines0.42 s3.0 s17 MB
Redact personal info209-word support email0.32 s2.8 s596 MB
Colorize photo923 × 737 photo—5.8 s135 MB
Passport photo maker960 × 1150 portrait → 600 × 6000.19 s1.5 s26 / 13 MB
Describe an image1024 × 635 photo → 3 pieces of text6.8 s14.1 s194 / 251 MB
AI music detector3-minute song (MP3)—0.48 s15 KB

Where two download sizes are listed, the WebGPU and CPU paths use different versions of the model. Precision that suits a graphics card isn't always the best choice for a CPU, so each path gets whichever version we measured as better on it. A slower laptop will take longer than the numbers above, and a phone longer still. Tools marked Desktop recommended on the home page use models too large to count on a phone handling.

Why the colorizer has no WebGPU column

Some models run correctly on one engine and not on the other. The colorizer we use fails to start on WebGPU in current browsers, so it's declared CPU-only and never tries the GPU. We've also seen models on WebGPU that return a plain black image with no error at all. That's why every tool's output is checked, not just its speed, and why some tools check their own output while running and retry on a safer setting.

Why the first load is the slow part

Processing takes seconds, but the model is the largest download on the page. On a typical home connection, a 100 MB model takes somewhere between a few seconds and half a minute. After that it's cached, so the wait only happens once per browser. Clearing your browser's site data for swordfishsoft.org removes the cached models if you want the disk space back.

Why the CPU path uses one thread

WebAssembly can only spread work across several CPU cores when a page is "cross-origin isolated", which a site turns on with two HTTP headers (Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy). Those headers also stop the page from embedding frames from other sites, and that includes the ad frames that pay for keeping these tools free. We chose the ads, so since 25 September 2026 the pages no longer send the headers. The WebGPU path is unaffected. The CPU path now runs on one thread, which on our test machine made it about three times slower than before. The table above shows the new numbers.

What does leave your browser

To be complete, these are the network requests that do happen:

None of these include your files, the text you type into a tool, or the results.