How to use the JSON key extractor
- Paste your JSON into JSON.
- Pick what to Show: Every path, Leaf values only or Unique key names.
- Read the table: Path, Type and Value, or Key and Occurrences for unique names.
- Press CSV to download the table, or copy the plain list of paths or names under it.
What it does and when to use it
When you meet a large, unfamiliar JSON document, such as a webhook payload, a third-party API response or a settings export, the first question is what is in it and where. Scrolling through braces does not answer that well. This tool gives you a list you can search, sort in a spreadsheet, or paste into a mapping document.
Typical jobs: writing a field mapping between two systems, finding the path to a value you need in a test, checking which records miss a field, or spotting a key that is spelled two ways (userId and user_id) in the unique-names view.
Once you know the path, extract matching values with the JSONPath tester. If you prefer dot-notation keys in a new object, use the JSON flattener. To put the keys in a fixed order before comparing files, use the JSON key sorter.
How it works
The document is parsed in your browser and walked depth-first in document order. Each step adds .name for a key that is a valid JavaScript identifier, ["name"] for any other key, and [n] for an array position. The type is one of object, array, string, number, boolean or null. For objects the value column shows the number of keys, for arrays the number of items, and for everything else a JSON preview.
In Unique key names mode, the tool counts every object key wherever it appears, including inside arrays, and lists the names in first-seen order. Array positions are not counted as keys.
Worked examples
{"id":7,"user":{"first-name":"Asha","roles":["admin"]},"tags":[]}
Every path:
id | number | 7
user | object | 2 keys
user["first-name"] | string | "Asha"
user.roles | array | 1 item
user.roles[0] | string | "admin"
tags | array | 0 items
Leaf values only keeps three rows: id, user["first-name"] and user.roles[0]. The empty tags array is dropped.
Unique key names for [{"id":1,"name":"a"},{"id":2,"name":"b","email":"x@y.z"},{"id":3}]:
id | 3
name | 2
email | 1
Limits and tips
- Every array item gets its own rows, so a list of 5,000 records gives tens of thousands of paths. Use Unique key names first on big arrays.
- Paths are shown without a leading
$or variable name; add your own.
Frequently asked questions
Can I paste a path straight into my code?
What is the difference between Every path and Leaf values only?
How do I find fields that only some records have?
Why are some values cut short?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.