JSON ALL-IN-ONE / QUERY TOOL
Free JSONPath online for nested JSON files
Open a local JSON file or paste a document, then select the nodes you need with RFC 9535 JSONPath. The workbench offers source-aware suggestions, local query history, and a lazy document view without uploading your JSON.
JSON · JSONC · NDJSON · NDJSONC | Privacy-first local JSONPath
FIVE CHECKABLE CASES
See exactly what matches
Nested selection
Source:
{"store":{"books":[{"title":"Tidal Maps"},{"title":"Glass City"}]}}Path: $.store.books[*].title
Settings: RFC 9535 JSONPath; result mode: values; document order: preserved.
Expected values:
[
"Tidal Maps",
"Glass City"
]Expected canonical paths:
[
"$.store.books[0].title",
"$.store.books[1].title"
]Select the title node in every book without opening each record by hand.
Caveat: This selects existing nodes. It does not reshape the document like JQ.
Every array item
Source:
{"items":[1,2]}Path: $.items[*]
Settings: RFC 9535 JSONPath; wildcard selector; result mode: values.
Expected values:
[
1,
2
]Expected canonical paths:
[
"$.items[0]",
"$.items[1]"
]The wildcard selects both child nodes, not the array as one node.
Caveat: The array itself would be selected by $.items; $.items[*] selects its children.
Filter by price
Source:
{"items":[{"name":"A","price":8},{"name":"B","price":12}]}Path: $.items[?@.price > 10].name
Settings: RFC 9535 JSONPath; filter comparison: @.price > 10; result mode: values.
Expected values:
[
"B"
]Expected canonical paths:
[
"$.items[1].name"
]A filter narrows the candidate nodes before selecting a member.
Caveat: The comparison only matches numeric price values; strings such as "12" are a different JSON type.
Missing versus null
Source:
{"present":null}Path: $.present
Settings: RFC 9535 JSONPath; result mode: values; null nodes are returned.
Expected values:
[
null
]Expected canonical paths:
[
"$.present"
]A null value is a matched node. A missing member is not.
Caveat: $.missing would return no matches, which is different from matching null.
Member with spaces
Source:
{"sp ace":"a\"b"}Path: $["sp ace"]
Settings: RFC 9535 JSONPath; bracket member selector; result mode: values.
Expected values:
[
"a\"b"
]Expected canonical paths:
[
"$[\"sp ace\"]"
]Bracket notation addresses keys that cannot use dot shorthand.
Caveat: Canonical paths keep bracket notation because the key contains a space.
Selection is not transformation
$.store.books[*].title selects two title nodes in document order. JSONPath helps you find and highlight values in their original context; use JQ when you want to build a new document from those values.
Press Enter in the JSONPath field to highlight matches. Use Ctrl/Cmd+Enter when you want to turn the selection into a result document. A missing member produces no match, while a member containing null is a match.
Large files and precise queries
Opening a large file uses streamed reading and a lazy view. Building a structural index or running a broad recursive path is a separate operation and can still be expensive. Test the source shape and path that matter to you rather than assuming every operation has the same limit.
Your pasted or selected JSON stays in this browser. The workbench may keep temporary data and a local query history in browser storage; it does not synchronize them with the extension or an account.