Zero Signup ToolsFree browser tools

Developer Tools

JSON Key Extractor

Extract every key path from a JSON document in your browser. Get a flat, deduplicated list with value types and occurrence counts.

648 characters

Path notation

Choose how each path is written. Example for this notation:store.books[*].title

Array-folded keys

19 of 19 distinct paths. Repeating array elements collapse to one row.

  • store

    depth 11xobject

    e.g. object(6)

  • store.address

    depth 21xobject

    e.g. object(3)

  • store.books

    depth 21xarray

    e.g. array(2)

  • store.name

    depth 21xstring

    e.g. "Corner Bookshop"

  • store.open

    depth 21xboolean

    e.g. true

  • store.openYear

    depth 21xnumber

    e.g. 1998

  • store.staff

    depth 21xarray []

    e.g. []

  • store.address.city

    depth 31xstring

    e.g. "Boulder"

  • store.address.street

    depth 31xstring

    e.g. "12 Main St"

  • store.address.zip

    depth 31xstring

    e.g. "80302"

  • store.books[*]

    depth 32xobject

    e.g. object(6)

  • store.books[*].authors

    depth 42xarray

    e.g. array(2), array(1)

  • store.books[*].id

    depth 42xstring

    e.g. "B-001", "B-002"

  • store.books[*].inStock

    depth 42xboolean

    e.g. true, false

  • store.books[*].price

    depth 42xnumber

    e.g. 32.5, 47.99

  • store.books[*].tags

    depth 42xarray

    e.g. array(2)

  • store.books[*].title

    depth 42xstring

    e.g. "The Pragmatic Programmer", "Refactoring"

  • store.books[*].authors[*]

    depth 53xstring

    e.g. "Andy Hunt", "Dave Thomas", "Martin Fowler"

  • store.books[*].tags[*]

    depth 54xstring

    e.g. "software", "career", "design"

Plain text output

One key per line. Drop this into code, docs, or a spec.

store
store.address
store.books
store.name
store.open
store.openYear
store.staff
store.address.city
store.address.street
store.address.zip
store.books[*]
store.books[*].authors
store.books[*].id
store.books[*].inStock
store.books[*].price
store.books[*].tags
store.books[*].title
store.books[*].authors[*]
store.books[*].tags[*]

What this gives you

Array-folded vs indexed

The default view collapses every array element to a single canonical path with [*] in place of indices. Toggle Show indexed paths to instead see every real index, so items[0].sku and items[1].sku appear separately instead of as one items[*].sku row with a count of 2.

Three notations

Switch between dot notation (store.books[*].title), bracket notation (store['books'][*]['title']), and JSONPath ($.store.books[*].title). Bracket form is used automatically for any field name that is not a valid identifier.

How to use

  1. Paste a JSON object or array into the input on the left, or click Load sample to try the tool.
  2. Pick the path notation: Dot, Bracket (quoted keys), or JSONPath ($.a.b[*].c).
  3. Use the filter box to narrow by substring, the type select to keep only paths whose value is of a given type, and Leaves only to hide object and array containers.
  4. Toggle Show indexed paths if you want every array index expanded instead of folded to [*].
  5. Click Copy on any row to grab that single path, or Copy all to send the entire filtered list to the clipboard. Turn on Include types to append the value type to each copied line.

About this tool

JSON Key Extractor walks any JSON document you paste in and produces a flat, deduplicated list of every key path that appears in it, with the value type and occurrence count at each path. The default array-folded view collapses every array element to a single canonical path with [*] in place of indices, so items[0].sku and items[7].sku appear as one row, items[*].sku, with the total number of occurrences. Toggle Show indexed paths to expand every concrete index instead. Paths can be rendered in dot notation (store.books[*].title), bracket notation with quoted keys (store['books'][*]['title']), or JSONPath ($.store.books[*].title), with bracket form used automatically for any field name that is not a valid identifier. Filters narrow the list to a substring of the path or to a specific value type (string, number, boolean, null, object, or array). A Leaves only toggle hides container rows so you see only primitive paths. Every row includes the depth, the count, the set of value types observed (so a heterogenous field shows up as string|number rather than hiding it), and up to three sample values for quick inspection. A copy button on every row grabs that single path; Copy all sends the full filtered list to the clipboard as plain text, one path per line, with optional (type) annotation per line. Useful for inspecting an unfamiliar API response, building a list of JSONPath selectors for a downstream tool, sketching a JSON Schema or TypeScript interface from a sample document, generating jq queries, drafting a CSV column list to map a JSON file into, auditing which fields appear (or do not appear) across an array of records, and any moment you find yourself scrolling a long JSON file asking what fields it actually contains. Parsing and walking run entirely in your browser, so the JSON is never uploaded.

Free to use. Works in your browser. No signup, no login.

Related tools

You may also like

All tools
All toolsDeveloper Tools