JSONPath Query
Query JSON with a JSONPath subset: child paths, descent, indexing and comparison filters.
Supported subset: $.a.b, $..key, [0], [*], .* and [?(@.price<10)] filters (==, !=, <, <=, >, >=).
How to use it
- Paste your JSON into the JSON panel — a sample store catalog loads on start.
- Type a query in the JSONPath field, for example
$.store.book[?(@.price<40)].title. - Matching values appear as a list, each labeled with the exact path where it was found.
- Invalid queries and unsupported syntax produce a clear error instead of silent wrong results.
- Try
$..priceto see recursive descent collect a key from every depth.
Common use cases
- API response checks — pull one field out of a big payload during debugging.
- Data spot checks — count or inspect records matching a price, status or type.
- Learning JSONPath — see how child steps,
..and filters compose, with visible path labels. - Test assertions — find the exact path your test should assert on before writing it.
Why it stays private
The evaluator is a local walker over your parsed JSON. Nothing is uploaded, so payloads with internal or personal data can be inspected safely offline.
FAQ
Q: Which JSONPath features are actually supported?
A: $ root, .name and .* child steps, $..name recursive descent, [n] indexes (negative counts from the end), [*], and [?(@.key op value)] filters with == != < <= > >=. Union lists, slices and script expressions are not supported and will raise an error.
Q: How do filters compare values?
A: If the field is a number and the literal looks numeric, the comparison is numeric; otherwise both sides are compared as strings. Filtering on @.name == "Refactoring" uses exact string equality.
Q: Does $..key search inside arrays?
A: Yes. Recursive descent visits array elements and object values at every level, so $..price finds prices inside arrays of objects as well as directly nested objects.
Your data stays on this device
JSONPath Query runs 100% locally. Everything you paste or drop is processed by your own browser and never transmitted. Nothing is stored on our servers — close the tab and it is gone.
Nothing you type is sent to a server, logged, or used for analytics. The page works even with your network disconnected after first load.