How to format and validate JSON: a practical guide
Understand valid JSON, track down syntax errors and choose readable formatting for APIs, config files and logs.
Research
A fake canary document went through twelve online JSON viewers and formatters on October 14, 2026. We recorded network requests, third-party hosts, transfer size, save or share controls and an offline reload. The test is a snapshot of what a browser observed from one location; it is not a claim about a service’s intentions or every version of its software.
JSON Hero sent the canary marker in a POST request to its own jsonhero.io host while creating a document. We did not observe the marker in captured requests from the other tested, confirmed actions. Three tools were blocked by browser challenges, and three tools did not produce enough DOM evidence to confirm that their action ran. Tool Kumar made no request to a third-party host and reloaded while the network was disabled after its first visit.
| Tool | Canary request | Third-party hosts | Transfer | Save/share UI | Offline reload |
|---|---|---|---|---|---|
| JSONFormatter | Not tested (browser challenge) | — | — | — | — |
| Code Beautify JSON Viewer | No marker observed | 203 | 2.84 MB | Yes | No |
| JSONLint | Action not confirmed | 194 | 1.39 MB | No | No |
| JSON Editor Online | Not tested (browser challenge) | — | — | — | — |
| JSON Beautifier | No marker observed | 10 | 1.79 MB | Yes | No |
| JSON Viewer Stack | No marker observed | 8 | 0.67 MB | Yes | No |
| JSON Formatter Online | Action not confirmed | 2 | 0.28 MB | No | No |
| JSON Hero | Marker sent | 5 | 1.64 MB | Yes | No |
| JSON Compare | No marker observed | 12 | 1.31 MB | No | No |
| Curious Concept JSON Formatter | Not tested (browser challenge) | — | — | — | — |
| FreeFormatter JSON Formatter | Action not confirmed | 8 | 0.33 MB | No | No |
| Tool Kumar | No marker observed | 0 | 0.28 MB | No | Yes |
“No marker observed” means the action was confirmed with DOM evidence and our capture found no raw, URL-encoded or base64 marker in request URLs, fetched POST bodies or sent WebSocket frames. “Action not confirmed” means the page accepted or displayed input but the captured evidence did not prove that the requested action completed. A dash means a browser challenge prevented a fair test.
On November 25, 2025, watchTowr Labs published a report about public saved links on JSONFormatter and CodeBeautify. It says the researchers downloaded more than 80,000 saved submissions, covering five years of JSONFormatter and one year of CodeBeautify, and identified thousands of secrets. The report lists examples such as Active Directory credentials, cloud keys, CI/CD credentials, private keys, JWTs and personal information. It also describes a Save control, predictable saved-link formats and a Recent Links page.
The Hacker News and Security Affairs covered the same report. Their articles are useful context for the risk of treating a public save or share feature like a private scratchpad. Our experiment asks a narrower question: when a user pastes a new document and formats it, can a unique fake marker be seen leaving the page during that interaction?
TK-PRIVACY-CANARY-1791949677021-W5. We captured Chrome DevTools Protocol request events, fetched post data for requests that declared a body, recorded sent WebSocket frames and searched raw, URL-encoded, base64 and base64url forms. Transfer size is the sum of every Network.loadingFinished.encodedDataLength event, including the document, cross-checked against Performance API resource and navigation entries.{
"study": "json-formatter-privacy",
"marker": "TK-PRIVACY-CANARY-...",
"fake": {
"email": "nobody@example.invalid",
"token": "not-a-secret"
}
}The raw capture is available as JSON. It includes timestamps, browser version, request counts, host lists, transfer bytes and the exact status recorded for each site. The no-dependency runner script, screenshots and notes are kept with the research files for reproducibility.
A request to the site’s own host can be part of normal server processing. This run did not classify a site as “safe” or “unsafe”, inspect server logs, audit source code or test every button. Third-party host counts are a network observation, not a tracker verdict. A Save or Share label is a product feature; it does not by itself show whether a document is public, private, encrypted or retained for a particular period.
Tool Kumar is published by the same team that produced this study, so it is included under the same canary procedure. Its result is a measured observation from this run, not a request that readers take our word for it. You can repeat the test yourself and compare the downloaded data with your own DevTools capture.
TEST-CANARY-2026-XYZ. Never use a real password, API key or customer data.This was one run per site, from one automated browser and one network location. Challenges blocked JSONFormatter, JSON Editor Online and Curious Concept JSON Formatter, and we did not bypass them. Three loaded pages did not provide enough evidence to confirm the requested action. We did not create accounts, click a Save control, crawl saved links, inspect server-side retention or test mobile browsers. Ad auctions and third-party hosts can change between runs. The results describe this dated interaction, not a permanent property of any service.
If you need to format a document now, Tool Kumar runs the parser in your browser and is designed to keep the input on your device. You can still verify that claim with the DevTools steps above.