JSONPath Tester
Test JSONPath expressions against your JSON and see the matched values live. Supports child access, wildcards, recursive descent, array indexes, and slices. Runs in your browser.
2 matches
[ "Nigel Rees", "Evelyn Waugh" ]
About this tool
JSONPath is to JSON what XPath is to XML: a compact query language for reaching into a nested document and pulling out the values you want. This tester lets you paste a JSON document and an expression and see the matched values update instantly, which is invaluable when you are debugging an API response or writing a JSONPath for a tool like a CI pipeline, a log processor, or a no-code integration. It supports the constructs people actually reach for: the root ($), dot and bracket child access ($.store.book and $.store['book']), array indexing including negative indexes ([-1] for the last element), the wildcard (* and [*]) to take every child, array slices ([0:2]), and recursive descent (..) to find a key at any depth. Filter expressions ([?(...)]) are out of scope. Everything is evaluated locally in your browser, so even sensitive API payloads never leave your machine.
How to use it
- Paste your JSON document.
- Type a JSONPath expression, or click a sample.
- Read the matched values and the match count.
- Refine the expression until it selects exactly what you need, then copy it.
Frequently asked questions
- What JSONPath syntax is supported?
- Root ($), child access by dot or bracket ($.a.b and $["a"]["b"]), array index including negatives ([0], [-1]), wildcard (* and [*]), array slice ([start:end]), and recursive descent (..key or ..* to match at any depth). Filter expressions like [?(@.price<10)] are not supported.
- What does recursive descent (..) do?
- It searches every level of the document for the following key. $..author returns every "author" value anywhere in the tree, regardless of how deeply nested, which is handy when you do not know or care about the exact path.
- How do negative array indexes work?
- A negative index counts from the end: [-1] is the last element, [-2] the second-to-last. So $.items[-1] grabs the final item without needing to know the array length.
- Why does my expression return an empty list?
- Either the path does not exist in the document, or there is a typo (a wrong key name or a missing $). The tester returns all matches, so an empty result means nothing matched — check key names and array bounds.
- Does this match the behavior of server-side JSONPath libraries?
- For the supported constructs, yes — it follows the common Goessner-style semantics. Behavior can differ between libraries for edge cases (especially filters and unions), so verify against your specific runtime when using advanced features.
- Is my JSON uploaded anywhere?
- No. Parsing and evaluation run entirely in your browser with no network request, so confidential payloads stay on your device.