Why nested JSON needs a path rather than a search
Real JSON is not flat. An API response is typically an object containing an array of records, each of which contains further objects. The email addresses in it are not at one place — they are at one place per record, and there may be a thousand records.
A path describes that shape once and applies it everywhere. In
data.users[].contact.email, the dots step into keys and the [] means "for every
item in this array". The extractor walks the structure, fanning out at each array, and returns the value
from every branch that matches. Nested arrays work too — orders[].items[].sku collects every
SKU across every order.
How to extract a field from JSON
- Load your JSON. Drop a .json file or paste the text, then click Read the JSON. Invalid JSON is reported with the exact position of the problem.
- Pick a field path. Every path present in your data is listed as a clickable chip. Click one, or type your own.
- Understand the [] notation. A dot moves into a key; [] means every item in an array. So users[].email walks the users array and collects the email from each object inside it.
- Export the values. Results appear as one value per line, optionally deduplicated and sorted. Copy them or download as .txt or .csv.
What comes out
- Every value at the path, one per line, in document order or sorted.
- Discovered paths — the tool walks your data and lists the paths that actually exist, so you can click one instead of guessing at the structure.
- Deduplicated results, which turns "every email in this export" into a clean address list in one step.
- Objects and arrays as JSON when the path lands on one, rather than the useless
[object Object]. - TXT and CSV export, with the CSV carrying the path as its column header.
What it accepts
Any valid JSON adhering to the IETF RFC 8259 specification: an object, an array at the top level, or a bare value. GeoJSON, API responses, export files and configuration files all work. Pasted text is limited only by your device; dropped files are read up to 800,000 characters.
Path discovery samples the first item of each array, since arrays in practice hold uniform records, and stops at 400 paths and 12 levels deep so that a very large document still lists instantly. If your array is not uniform, type the path directly — extraction itself checks every item.
JSON Lines, where each line is a separate JSON document, is not valid JSON as a whole and will be
reported as invalid. Wrap the lines in [ and ] with commas between them
first.
Why the data never leaves your browser
Parsing and extraction run locally. Nothing you paste or drop is transmitted.
This matters more for JSON than for most formats, because the JSON people need to inspect is almost always a live API response — and those routinely carry access tokens, internal identifiers, customer records and system details in the same payload as the field you actually wanted. Pasting one into an online formatter hands all of it over.
What the path syntax does not do
The syntax is deliberately small — dots for keys, [] for arrays. It does not support:
- Filtering by value. There is no
users[?active==true].email. Extract the field, then filter the result. - Specific array indexes.
users[0]is not supported;[]returns every item. - Wildcards across keys. Each key must be named.
- Combining fields. One path at a time, so building a two-column CSV means two passes.
For anything beyond this, jq on the command line is the right tool. This covers the
common case without an install.
Who extracts fields from JSON
- Developers — pulling every id or URL out of an API response while debugging, without writing a throwaway script.
- QA and support — checking which records in a payload carry a particular field.
- Data work — turning a nested export into a flat list a spreadsheet accepts.
- Migration — extracting identifiers from one system's export to feed another.
- Anyone handed a JSON file who needs three values out of three thousand lines.
JSON compared with tabular data
JSON nests; CSV does not. That is the whole difference. A CSV column is a straight selection, which is what the CSV column extractor does. A JSON field may sit three levels down inside an array of arrays, which is why a path is needed at all.
If your JSON is genuinely flat — an array of objects with no nesting — extracting each field and pasting the columns side by side reproduces a CSV. For data that arrived as a spreadsheet, the Excel data extractor is the direct route.
To understand the structural difference between hierarchical formats and tabular records, read our guide on structured vs unstructured data.
JSON format standards and precision edge cases
RFC 8259 defines JSON. A key constraint: JSON numbers have no specified precision in the standard, but browser JavaScript engines parse them as IEEE 754 double-precision floats. Integers above 253 − 1 (9,007,199,254,740,991) are therefore not reliably round-trippable, and the last few digits of very large IDs may differ from the original source system.
Three parsing edge cases: (a) duplicate keys — {"a":1,"a":2} — are valid
JSON by the standard but parser-defined in outcome; this tool uses V8's default and returns
the last value for each duplicate key; (b) trailing commas ({"a":1,}) are
common in JavaScript source files but not valid JSON — they are reported as a parse error
with the byte position of the offending comma; (c) JSON Lines format, where each line is a
separate JSON document, is not valid JSON as a whole — wrap the lines in [ and
] with commas between them before loading.
Frequently asked questions
How do I get every email address out of a JSON file?
Load the file, then use a path like users[].email. The [] means every item in the array, so one path collects the field from every record.
What does [] mean in the path?
Every item in that array. users[].email walks the whole users array; without the brackets the path would look for a key literally called users containing an email.
Is my JSON uploaded anywhere?
No. Parsing happens in your browser — which matters, because API responses often contain tokens and customer data alongside the field you wanted.
How do I know what paths exist?
The tool walks your data and lists every path it finds as a clickable chip. Click one to use it.
Can I filter records by value?
No. The path syntax selects, it does not filter. Extract the field and filter the result afterwards, or use jq for complex queries.
Why does my file say it is invalid JSON?
Most often it is JSON Lines — one JSON object per line — which is not a single valid document. Wrap the lines in square brackets with commas between them.
What happens if the path points at an object?
The object is returned as JSON text rather than as [object Object], so it stays useful.
Is there a size limit?
Pasted text is limited only by your device. Dropped files are read up to 800,000 characters.