DevTool Desk

JSON Grid Viewer

4 of 4 rows · 7 columns

#
11AliceEngineertrueNew York10001["ts","react"]
22BobDesignerfalseChicago60601["figma"]
33CarolEngineertrueSeattle98101[]
410DaveManagertrueAustin73301["ops","hiring"]

Paste a JSON array and see it as a spreadsheet-style grid — one row per object, one column per key. Click a column header to sort, type in the filter box to search across every cell, flatten nested objects into dotted columns, and export whatever is on screen as CSV. It's the quickest way to make sense of an API response or a data dump that's unreadable as raw JSON. Everything runs in your browser.

Frequently asked questions

What JSON shapes does the grid understand?

An array of objects is the ideal input — each object becomes a row. It also handles an object that wraps an array (like { "data": [...] }, where it shows that array), an object of objects (the keys appear in an id column), an array of plain values, and a single object.

What does 'Flatten nested objects' do?

It turns nested objects into dotted column names, so { "address": { "city": "Austin" } } becomes an address.city column. Arrays stay in a single cell as JSON text. Turn it off to see nested objects as raw JSON in one cell.

How do the column filters work?

Every column header has a filter icon. For columns with a small set of repeating values (like a role, status, or true/false flag), it opens a checklist — tick the values you want to see. For every other column, such as ids, names, or free text, it opens a text box that keeps rows whose cell contains what you type. Filters on several columns combine, and they also combine with the search box above the grid.

How does sorting work?

Click a header once for ascending, again for descending, and a third time to clear it. Numbers sort numerically, everything else sorts as text with natural number ordering, and empty cells always go last.

Does the CSV export include my filter and sort?

Yes — the CSV contains exactly the rows currently shown, in their current order, across all pages. Clear the filter first if you want the full dataset.