Privacy Lab

How to Verify That a Browser Tool Processes Data Locally

Published September 7, 2026 · Written and maintained by ToolkitBox · About 12 minutes

“Runs locally” is a useful promise, but it should be testable. This guide shows a repeatable inspection workflow using a disposable sample, the browser Network panel, offline mode, storage checks, and source review. It does not prove that every future version is safe, but it gives you evidence about the version you are using now.

Start with the right question

Local processing normally means that the transformation itself runs in JavaScript or WebAssembly on your device. It does not necessarily mean the page makes zero network requests. Fonts, analytics, advertising, error reporting, updates, and remote libraries can all create traffic that is unrelated to the text or file being processed. Your test should answer a narrower question: does the input or a recognizable derivative leave the browser when you use the feature?

For genuinely confidential material, inspection is not a substitute for an approved internal tool, an offline desktop application, or a security review. Use this workflow to compare ordinary utilities and to verify low-risk tasks, not to justify pasting production secrets into an unfamiliar page.

1. Create a disposable canary

Never test with real credentials or customer records. Make a unique string that cannot be confused with normal page traffic, such as LOCAL_TEST_7F3A_NOT_SECRET. Put it inside a small representative payload. If you are testing JSON, keep one nested object and one array. If you are testing a file tool, create a new file containing only synthetic content.

{
  "request_id": "LOCAL_TEST_7F3A_NOT_SECRET",
  "email": "sample.user@example.test",
  "roles": ["viewer"]
}

The reserved .test domain makes the example visibly artificial. The structure should exercise the feature without carrying any value from the real incident you are investigating.

2. Record a clean network trace

  1. Open browser developer tools before entering the canary.
  2. Select the Network panel, enable “Preserve log,” and clear existing requests.
  3. Paste or load the disposable sample, then run every relevant action: format, validate, copy, convert, and download.
  4. Inspect new Fetch/XHR, document, WebSocket, beacon, and worker requests. Check request URLs, query strings, form data, request payloads, and preview bodies.
  5. Search the recorded traffic for the full canary and for shorter distinctive fragments.

A clean result means you did not observe the canary in that trace. It is evidence, not a permanent guarantee: delayed telemetry, encrypted application payloads, browser extensions, and future code changes can alter behavior.

3. Repeat the task offline

After the page has loaded, switch the Network panel to Offline and repeat the transformation. A formatter, encoder, UUID generator, regex tester, diff viewer, or color converter should usually continue to work because the core operation does not require a server. Reloading while offline is a different test; the page assets may not be cached, so a failed reload does not prove that the transformation was remote.

Some tools legitimately need a server. An SSL certificate checker must connect to a public host to inspect the certificate presented over the network. A URL parser can run locally, while a URL availability checker must make a request. Judge the claimed feature, not the product name.

4. Check browser storage and background activity

Use the Application or Storage panel to inspect Local Storage, Session Storage, IndexedDB, Cache Storage, and cookies before and after the task. Preferences such as language or theme are normal; copies of the input deserve closer attention. Then leave the page open briefly and watch for delayed requests. Service workers and Web Workers should also be visible in browser developer tools.

Clear the site's storage after the test if the sample should not remain on the device. Remember that browser history, clipboard managers, extensions, crash reports, and operating-system backups sit outside the web page's own storage model.

5. Inspect the implementation when source is available

Search for calls to fetch, XMLHttpRequest, sendBeacon, WebSocket constructors, form submissions, and third-party SDKs. Trace the input event to the transformation and export code. For a JSON formatter, you would expect parsing and serialization in the browser. For an image export, you may see Canvas, FileReader, Blob, and object URLs.

Minified source is harder to audit, and the absence of an obvious network call is not proof. Still, implementation review can confirm what the network test suggests and reveal which features are deliberate exceptions.

How to document your result

Write down the page URL, test date, browser version, canary, actions performed, observed requests, offline result, and any server-dependent feature. A short record makes the check reproducible for a teammate and prevents a vague “it looked local” conclusion.

Example conclusion: Formatting, validation, and copy actions completed offline. No request payload contained the canary. The page loaded analytics and advertising scripts, but the test input was not observed in their requests. This conclusion applies to the tested page version and actions on the recorded date.

Decision checklist

References and related tools

The browser inspection steps use the standard tooling described in the Chrome DevTools Network documentation and MDN Fetch API reference. Try the method with the JSON Toolbox, Base64 Tool, or Diff Checker, using only disposable data.