Formatter Validator Minifier Escape / Unescape JSON ↔ String JSON ↔ YAML JSON → CSV NDJSON / JSON Lines JSON → Types JSON ↔ XML JSON Diff JSON Patch Canonicalize (RFC 8785) Schema Validator Schema Generator JSONPath Tester JWT Decoder JSON Errors Schemas More Tools
Transparency · Open about how it works

How JSONTools Works

Every JSON tool on this site runs entirely in your browser. Here's exactly how that works, why it matters, and how you can verify it yourself.

The short version

You paste JSON into a page. Your browser's JavaScript engine parses and processes it on your device. The result appears on the same page. Your data never reaches our server because there is no server-side processing — the website is a static collection of HTML, CSS, and JavaScript files. This is fundamentally different from most online JSON tools, which send your data to their server and process it remotely.

What happens when you paste JSON

Step by step, when you paste a JSON document and click Format:

  1. Your browser already has the page's HTML, CSS, and JavaScript loaded — these were sent by our server when the page first loaded, but they're now cached locally.
  2. The JavaScript event listener for the Format button fires inside your browser tab.
  3. It reads the value of the input <textarea> — also entirely local.
  4. It calls the browser's native JSON.parse(value), which runs inside the JavaScript engine (V8 in Chrome, JavaScriptCore in Safari, SpiderMonkey in Firefox).
  5. It calls JSON.stringify(parsed, null, 2) to produce the formatted output.
  6. It writes the result back to the DOM, where you see it.

At no point does any of this involve a network request. The processing is identical to what would happen if you wrote a Node.js script and ran it on your own machine — except it's running in the browser tab instead of a terminal.

How you can verify this yourself

You don't have to trust our word. Anyone can verify the no-upload claim with their browser's built-in tools:

  1. Open the JSON Formatter (or any tool).
  2. Press F12 (or Cmd+Option+I on Mac) to open Developer Tools.
  3. Click the Network tab.
  4. Click the clear button (🚫) to remove existing log entries.
  5. Now paste your JSON and click Format.

You'll see zero new entries in the Network tab. The Format operation runs entirely locally. Compare this to any tool where pasting JSON triggers an HTTP request — those tools are sending your data to their server.

(You may see a few network requests for ads and analytics. Those don't contain your JSON. You can inspect the request payloads to confirm.)

Why we built it this way

Browser-side processing has real costs — larger initial page load, more complex JavaScript, less ability to share results via URL — but the benefits matter:

  • Privacy. JSON often contains sensitive data: API keys, customer records, internal company information, personal identifiers. Sending this to a third-party server is a meaningful security risk. Our model eliminates that risk.
  • Speed. No network round-trip means instant results. Server-based tools have to upload your data, process it, and download the result — typically 100-500ms even on fast connections. Ours is 1-2ms for typical inputs.
  • Offline capability. Once the page is loaded, no internet connection is needed. You can use the tools on a plane, in a SCIF, or anywhere else without network access.
  • Compliance. If you work with regulated data (HIPAA, PCI-DSS, GDPR), using a server-based JSON tool may be a compliance violation. Browser-side processing keeps data on your device, where it's already approved to be.
  • No vendor lock-in. You can save the page (Ctrl+S / Cmd+S) and the tool continues working offline indefinitely. We could disappear tomorrow and your archived copy still works.

The technical stack

For the curious, here's what powers the site:

  • HTML. Plain static HTML files — no server-side templating, no SSR framework. What you load is what you see.
  • CSS. Hand-written CSS with custom properties for theming. No Tailwind, no CSS-in-JS, no preprocessor.
  • JavaScript. Vanilla JavaScript with no frameworks. We use the browser's built-in APIs (JSON.parse, fetch, DOM APIs) and a few small focused libraries written for this site (YAML parser, CSV writer, JSONPath evaluator).
  • Hosting. Static file hosting on a CDN. The server's only job is to serve the same HTML/CSS/JS files to every user. It has no logic, no database, no awareness of your data.
  • Third-party services. Google Analytics, for anonymous pageview metrics only. It has no access to your tool inputs. This site carries no advertising. Fonts are self-hosted on this domain, so no request is made to self-hosted fonts (no third-party request).

What about the "limits" of this approach?

Browser-side processing has tradeoffs. Here's where it falls short and what to do instead:

  • Very large files (> 100 MB). Browser memory becomes a bottleneck. Use a CLI tool like jq for streaming.
  • External schema references. Our JSON Schema validator doesn't fetch external $ref URLs because that would mean network requests with your data. Inline the schema first.
  • JWT signature verification. Verifying a JWT signature requires the secret key. We deliberately don't ask for that because typing your production secret into a website is a bad idea.
  • Shareable URLs with embedded data. Some tools generate a link like tool.com/r/abc123 that includes your JSON. We can't do that without storing your data server-side, so we don't.

For most JSON tasks — which involve formatting, validating, converting, or inspecting data smaller than 50 MB — the browser is more than enough.

Where to go next