What is the JSON Reader?
Reading JSON in its raw form is like reading a grocery list written in shorthand — you CAN do it, but your brain has to spend energy parsing syntax before it gets to the data. The JSON Reader takes the syntax out of the way. Paste in any JSON, and you get a readable, table-style layout where the keys are labeled and the values stand on their own.
This is the tool for the moment when someone hands you a JSON file and says "can you tell me what's in here?" Instead of piping it through a formatter and then scrolling through 300 indented lines, you paste it here and read the fields one at a time. The reader flattens arrays into rows, makes nested objects clickable tables, and gives you an inline filter so you can jump to the field you care about. JSON is a text format optimized for machines; this reader is optimized for the human reading over its shoulder.
No sign-up, no file upload, no data sent anywhere. The parsing happens locally in your browser. Paste, read, close the tab — done.
How to Read JSON With This Tool
A short walkthrough. Every button you'll see is on the page above these instructions.
Paste the JSON
Drop your JSON into the left editor. It can come from anywhere — a curl response saved to a file, a webhook payload, a Kafka message body, an export from a NoSQL database. If you don't have JSON handy and just want to try the reader, click Sample.
{"invoice": {"number": "INV-2025-0417", "issuedOn": "2025-04-17", "payer": {"name": "Acme Logistics GmbH", "country": "DE"}, "lineItems": [{"description": "Freight — Hamburg to Rotterdam", "amount": 1250.00}, {"description": "Customs handling", "amount": 180.00}], "totalEUR": 1430.00}}If the JSON has a syntax problem, you'll see an error message below the editor pointing at the line.
Read the Parsed View
As you paste, the right panel redraws with every key labeled and every value in its own cell. For a single object like an invoice, you'll see keys as rows: number, issuedOn, payer, etc. For an array of records, each record becomes a row and keys are the columns. Nested structures (like payer or lineItems) expand inline into their own mini-tables — click through them the way you'd scroll through a nested email thread. The parser follows the rules in RFC 8259, so anything that's valid JSON renders correctly.
Find a Specific Field Fast
Each column has a filter input below the header. Type DE in a country column to filter to German invoices, Customs in a description column to find fees, 2025 in a date column to filter by year. Filters work across columns at once — if you type in two boxes, only rows matching both show up. Pretty useful when you're reading through a few hundred records looking for one specific entry.
Flip Orientation When It Helps
Sometimes reading keys top-to-bottom is easier than left-to-right — especially for records with 15+ fields. Click Main to transpose the outer table (keys as rows, values across columns). Click Nested to do the same for inner tables. It's the same data, just laid out the way your eyes want it for that moment.
Copy, Share, or Export
To grab a single value, double-click the cell (after hitting Edit) and copy it straight out. To hand the view to a teammate, click Share — you'll get a short link that expires on your choice of schedule (1 hour, 1 day, 1 week). Want it in a spreadsheet? Click Excel to download .xls and open it in Excel, Google Sheets, or LibreOffice Calc.
Places the Reader Comes in Handy
Making Sense of Webhook Payloads
Services like Stripe, GitHub, or Shopify send webhooks full of nested JSON. You grab one from your logs and need to read it end-to-end — what did the event say, was there a refund flag, which customer ID fired it? Paste, read, get your answer.
Reading Config or Settings Files
A 400-line <code>.json</code> config for a build tool, linter, or deployment script can be intimidating. Reading it as a table tells you which sections exist, which are populated, and which inherit defaults — way less cognitive load than counting indentation levels in a text editor.
Debugging Serialized State
Frontend apps often dump serialized state into <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage" target="_blank" rel="noopener">localStorage</a> or session storage as JSON. When something is off — a user's cart is empty after a refresh, a feature flag isn't flipping — copy the stored JSON here and read it directly instead of writing console expressions.
Reviewing Exports Before Ingesting
Before you load a JSON export into a database, data warehouse, or <a href="https://pandas.pydata.org/" target="_blank" rel="noopener">pandas</a> DataFrame, read through a sample. Are the keys consistent across records? Are dates formatted the way you expect? The reader turns this from a 15-minute chore into a 30-second glance.
Frequently Asked
Is this different from a JSON formatter or viewer?
A formatter reformats JSON text with indentation and colors, but it's still text. A viewer/reader turns it into structured UI you can browse. A "reader" angle specifically means the rendering is tuned for reading comprehension — labeled fields, filter boxes, readable values in cells — rather than for writing or validating. You can use a formatter as a first pass, then paste the result here to actually read it.
Does it handle JSON with comments, trailing commas, or other non-standard stuff?
No. The reader parses with the browser's built-in JSON.parse(), which strictly follows the spec — no comments, no trailing commas, keys must be double-quoted. If your input has those, strip them first (or drop it into the JSON Fixer tool), then paste the cleaned-up version here.
Can I read JSON from a URL directly?
Not yet — you need to fetch the JSON yourself and paste it. This is deliberate: a lot of JSON contains auth tokens or PII, and routing it through a third-party proxy would be a privacy regression. If you're using a browser, DevTools Network tab has "Copy Response" which gives you the JSON to paste in one click.
What happens with huge arrays — say 10,000 records?
It will render, but scrolling through 10,000 rows in a browser isn't a great experience. A better workflow: use a tool like jq to slice out the subset you want to read (first 100 records, only failed transactions, whatever), then paste that subset here. Optimize for reading the things you actually care about.
Is my JSON going to show up in Google or logs?
No. All parsing happens in your browser. We don't receive the JSON on any server unless you click Share, and shared links are keyed to random GUIDs with an expiry you control. Sensitive data? Skip Share entirely and close the tab when you're done.
I see a bunch of tables inside tables. How do I collapse those?
Tables-inside-tables are how the reader represents nesting — payer.country gets its own mini-table inside the payer cell. If you don't need to see a branch, flip to transposed nested orientation (Nested button) for a denser view, or use Filter to restrict which rows render in the first place. Full collapse/expand is on the roadmap.
Related JSON Tools
Reading is just one thing you might want to do with JSON. Here's what pairs well: