How to use
- Paste JSON on the left, or keep the sample data.
- Type a JSONPath expression at the top, or click one of the example expressions.
- Matches appear on the right as you type. Click Show paths to see where each match is in the document.
Options explained
- $ and @
- $ is the root node; @ is the current node inside a filter, as in [?(@.price < 10)].
- . and ..
- .name selects a child; ..name searches every level for nodes called name.
- [*], [0,1], [-1:]
- Wildcard, several indexes, and slices (like Python slices; negative numbers count from the end).
- [?(...)]
- Filter expressions with comparisons (== != < <= > >=), logic (&& || !) and existence checks such as [?(@.isbn)].
Common expressions
| Expression | Meaning |
|---|---|
$.store.book[*].author |
Authors of all books |
$..price |
Every price in the document |
$..book[?(@.price < 10)].title |
Titles of books under 10 |
$..book[-1:] |
The last book |
$..book[0,1].title |
Titles of the first two books |
$..book.length |
Number of books |
Frequently asked questions
Which JSONPath syntax is supported?
Goessner-style syntax as implemented by jsonpath-plus — the style used by Jayway (Java), most online tools and API testing software. It differs from RFC 9535 (2024) in some details, such as filter expressions.
Can filter expressions run JavaScript?
No. Filters are evaluated in a safe mode that only allows property access, comparisons and logic, never arbitrary code.
Why is the result always an array?
A JSONPath expression can match several nodes, so results are always a list; a single match is a list with one item.
Is my JSON uploaded?
No. Parsing and querying run in your browser.
Privacy
This tool runs entirely in your browser. Your files and text are processed on your device and are never uploaded to our servers.