JSONPath Evaluator Online
Test a JSONPath expression against your JSON and see the matches live, right in your browser. Your data stays on your device.
Your JSON is parsed and queried locally in your browser and is never uploaded, but avoid pasting sensitive production data into any online tool.
Need to read the whole tree first? Try the JSON Viewer.
About JSONPath Evaluator
This JSONPath evaluator lets you query a JSON document with a JSONPath expression and watch the matches update as you type. Paste any JSON object or array, enter a path such as $.store.book[*].author, $..price, or $.items[?(@.active)], and the tool shows how many nodes matched, the matched values as pretty-printed JSON, and a toggle to see the JSON Pointers instead. As a JSONPath tester it supports the full syntax: the $ root, dot and bracket child access, the .. recursive descent operator, [*] wildcards, array slices, unions, and filter expressions with @ and comparisons. Click any of the example expressions to drop it into the query box. Invalid JSON and broken paths produce a clear error rather than a blank screen. Everything runs in your browser, so the JSON you evaluate stays on your device.
Features
- Live results: matched count, values, and paths update as you edit the JSON or the expression
- Toggle between matched values (pretty JSON) and the JSON Pointer path for each match
- Supports recursive descent ($..), wildcards ([*]), array slices, unions, and filter expressions
- Filter on node contents with [?(@.price < 10)] or [?(@.active)] style predicates
- Clickable example expressions that fill the query box in one tap
- Distinct errors for invalid JSON versus an invalid JSONPath expression
- Copy the matched values or the list of paths with one click
- Handles deeply nested objects and large arrays without leaving the page
How to use the JSONPath Evaluator
- Paste or type your JSON into the JSON panel on the left.
- Enter a JSONPath expression in the query box, or click one of the examples.
- Read the matched values on the right and check the match count above them.
- Switch to Paths to see the JSON Pointer for each match, then Copy the results.
Example
Input
$.store.book[?(@.price < 10)].title
Output
[
"Sayings of the Century",
"Moby Dick"
]
A filter expression keeps only books cheaper than 10, then projects each title.
Common errors & troubleshooting
- The results panel shows "Invalid JSON" before you have written any path. — Fix the JSON in the left panel first — a trailing comma, single quotes, or an unquoted key will stop it parsing. Run it through a JSON formatter if you are unsure.
- A filter like [?(@.price < 10)] returns no matches even though the field exists. — Filters compare raw values, so make sure the field is a number, not a string, and that @ refers to each array element. Quote string comparisons, e.g. [?(@.color=="red")].
- $.book[0] returns nothing but $..book[0] works. — $. only follows the exact path from the root. If book is nested, either spell out the full path or use the .. recursive descent operator to search at any depth.
Frequently asked questions
- What is the difference between $.. and $. in JSONPath?
- $. follows an exact path level by level from the root, so $.store.book matches only a book key directly under store. $.. is the recursive descent operator: $..book finds every book key at any depth in the document. Use $.. when you are not sure where a field lives.
- Does this JSONPath evaluator support filter expressions?
- Yes. Filters use the [?(...)] syntax where @ is the current node, for example $.items[?(@.active)] or $.store.book[?(@.price < 10)]. You can compare numbers, strings, and booleans and combine conditions with && and ||.
- What does the Paths toggle show?
- It returns a JSON Pointer for each match instead of the value — a string like /store/book/0/author that locates the node in the document. Pointers are useful when you need to know where a value lives, not just what it is.
- Why does my expression match more results than I expected?
- Wildcards and recursive descent are greedy: [*] matches every element of an array or every property of an object, and $.. walks the whole tree. Narrow the result with a specific key, an index, an array slice like [0:2], or a filter.
- Can I select several array elements at once?
- Yes. Use a union such as [0,2] to pick specific indices, or a slice such as [1:3] for a range and [-1:] for the last element. Both work on any array reached by the path.
- Is my JSON sent anywhere when I run a query?
- No. The expression is evaluated entirely in your browser, so the JSON you paste and the queries you run are processed locally on your device and are not uploaded.
Related tools
- JSON Formatter — Beautify, minify and validate JSON with error locations.
- JSON Viewer — Text + collapsible tree viewer with expand/collapse and node paths.
- JSON Flatten / Unflatten — Flatten nested JSON to dot-notation keys, or unflatten it back.
- JSON Diff — Compare two JSON documents and see a structural, key-order-independent diff.
- JSON to CSV — Convert an array of flat JSON objects to CSV.
- YAML ↔ JSON — Convert YAML to JSON and back.
All ArrayKit tools