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

How to use the JSONPath Evaluator

  1. Paste or type your JSON into the JSON panel on the left.
  2. Enter a JSONPath expression in the query box, or click one of the examples.
  3. Read the matched values on the right and check the match count above them.
  4. 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

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

All ArrayKit tools