Plain JSON

A fast, collapsible JSON viewer and formatter for Chrome — built for the responses that make other viewers freeze.

No account. No cloud. No telemetry. Zero network requests.

▾ {
"meta": {
"generated": "2026-08-30T04:12:00Z"
"count": 45523
}
"data": [ … 45,523 items ]
▾ [0 … 999]
0: {
"email": "[email protected]"
"active": true
"note": null
}
▸ [1,000 … 1,999]
▸ [2,000 … 2,999]
A 12 MB response. Containers past 2,000 entries are grouped, and only the rows on screen exist in the DOM.

What you get

Two tools that share one renderer, one set of preferences, and one promise.

Viewer

  • Opens automatically on any JSON document
  • Search keys and values, including inside collapsed branches
  • Copy a JSONPath like data.items[3].name, or any subtree
  • Raw / Parsed toggle — the original text is one click away
  • Download the original file. Because the extension replaces the document, the browser's own “Save page as” would otherwise save the rendered view

Formatter

  • Paste, or drop a .json file
  • Format with 2-space indent, or minify
  • Live validation with the exact line and column on error
  • Character and line counts
  • An invalid edit keeps the last good tree on screen

Yours to set

  • Theme: auto, light, or dark
  • Only fonts you actually have are listed, so every option visibly changes something
  • Font size, with row height following it
  • 21 interface languages

Built for large payloads

Most viewers build one DOM node per value, which is why a big response locks the tab. This one does three things differently.

Virtualised rendering

  • Only the rows inside the viewport exist in the DOM. The node count stays constant no matter how large the document is.

Lazy materialisation

  • Child nodes are created the first time you expand a container, not when the file loads.

Chunking

  • Containers over 2,000 entries are split into [0 … 999] groups, so a 50,000-item array is navigable instead of a wall.

Privacy is the product

Plain JSON makes no network requests. There is no fetch, no XMLHttpRequest, no remote script, no analytics, no telemetry, no advertising, no affiliate code, and no third-party library anywhere in it.

Your JSON is parsed and rendered in the tab and never leaves it. Your preferences are stored on your device only.

This is enforced, not just promised: an automated check fails the build if any URL appears in the source outside a two-entry allowlist — the link to this website in the settings panel, and the SVG namespace identifier, which is never fetched.

Read the full privacy policy →

Why it exists

In 2026 the most-installed viewer in this category started injecting tracking and donation interstitials into its users' pages. This extension is the boring, auditable alternative — open source, so every claim above can be checked by reading the code.