JSONPath Evaluator
Run JSONPath expressions against JSON and see matching values and their paths instantly.
Related Tools
Learn more about the JSONPath Evaluator
What is JSONPath?
JSONPath is a query language for JSON, similar in spirit to XPath for XML. An expression like $.store.book[*].author lets you pull specific values out of a document — an array item, a deeply nested field, or every value matching a condition — without writing a loop by hand.
This evaluator runs your expression against your JSON directly in the browser using jsonpath-plus, a standard JSONPath implementation, and shows every match along with the exact path it was found at. Results update automatically a moment after you stop typing, so you can iterate on an expression and see the effect immediately.
JSONPath is commonly used to pull specific fields out of a large API response, extract values from logs or config files, or write assertions in API testing tools (many of which accept JSONPath expressions directly). Everything here runs locally — your JSON is never uploaded to a server.
JSONPath Syntax Reference
| Syntax | Meaning |
|---|---|
$ | The root of the document. |
.key | A child field, e.g. $.store. |
[*] | Wildcard — every item in an array or every value in an object. |
..key | Recursive descent — find key at any depth. |
[0] | A specific array index. |
[0,2] | A union of specific indices. |
[start:end] | A slice of an array, e.g. [-1:] for the last item. |
[?(@.field > 1)] | A filter expression using the current item as @. |
Example
The classic bookstore example used across JSONPath documentation, with a few expressions worth trying (also available from the Examples dropdown in the tool above).
{
"store": {
"book": [
{ "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "price": 8.99 },
{ "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "price": 22.99 },
{ "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }
],
"bicycle": { "color": "red", "price": 19.95 }
}
}$.store.book[*].titleWildcard — every title in the book array.
$..priceRecursive descent — every price anywhere in the document.
$.store.book[?(@.price < 10)]Filter expression — books matching a condition.
$.store.book[0,1]Union — specific indices by position.
$.store.book[-1:]Array slicing — the last element.
$.store..*Recursive descent — every node under store.
Features
Standard Syntax
Powered by jsonpath-plus, supporting the full range of common JSONPath operators.
Recursive Descent
Use .. to find a key at any depth, no matter how deeply nested your document is.
Filter Expressions
Match array items by condition with ?(@.field > value) style filters.
Slicing & Unions
Select ranges with [start:end], specific indices with [0,2,4], and more.
Inline Errors
Invalid JSON or a malformed expression shows a clear message without breaking the page.
How to use
Paste your input in the left editor. The output appears automatically on the right. Use the toolbar buttons to copy, download, or transform the result.
- Paste or type your content in the input editor on the left.
- The formatted output is generated automatically.
- Use Copy, Download, or other actions from the output toolbar.
- Click the expand icon to view the output in fullscreen.
FAQ
Is this JSONPath evaluator free?
Yes, it is completely free to use with no limits, signup, or account required.
Is my JSON uploaded to a server?
No. Evaluation runs entirely in your browser using JavaScript, whether you paste JSON or upload a file. Your data never leaves your machine.
What JSONPath syntax is supported?
Standard JSONPath syntax via jsonpath-plus, including wildcards (*), recursive descent (..), array slicing ([start:end]), unions ([0,2]), and filter expressions ([?(@.field > 1)]).
What does the result panel show?
Every value matching your expression, along with the exact normalized path it was found at (e.g. $['store']['book'][0]['title']), so you can see precisely where each match came from.
What happens if my expression is invalid?
The results panel shows a clear inline error describing what failed to parse, without breaking the rest of the tool — you can keep editing the expression and it re-evaluates automatically.
Does it re-run on every keystroke?
Evaluation is debounced by a fraction of a second after you stop typing, so large documents and fast typing stay smooth instead of re-querying on every character.
Can I upload a file instead of pasting JSON?
Yes. Drag and drop a .json file onto the input panel, or click the upload icon in the panel header to browse for one. Files up to 5MB are supported.
Can I copy or download the results?
Yes, use the Copy button to copy every match (path and value) as JSON, or Download to save them as a jsonpath-results.json file.
