JSONPath Tester
Run JSONPath queries with filters against your JSON, per RFC 9535.
Query JSON The Way Your Code Will
JSONPath is to JSON what XPath is to XML: a short expression that picks values out of a document. Paste your JSON, type a query, and see the matching values — or their normalised paths — update as you type. Example queries on the classic bookstore document show every feature in one click.
The evaluator follows RFC 9535, the 2024 standard, including filters like [?@.price < 10], the length(), count(), match() and search() functions, slices with negative steps and recursive descent. The older Goessner syntax ?(…) is accepted too, so queries copied from older tools work.
Key features
- RFC 9535 selectors, filters and functions.
- Values or normalised paths for every match.
- Live evaluation as you type.
- 13 example queries covering every feature.
- No eval() — filters are parsed, never executed.
This tool runs entirely inside your browser using native Web APIs. Your files and text are never uploaded to a server, never logged and never shared with third parties.
How to use: JSONPath Tester
- Paste your JSON
Errors in the document are reported with their message. - Type a query
Start with $, then .name, [index], [*] or .. for any depth. - Add a filter
[?@.status == "active"] keeps matching items. - Switch to paths
See exactly where each match lives.
Technical specifications
| Processing location | Entirely in your browser — no server round trip |
|---|---|
| Data uploaded | None. Files and text never leave your device |
| Price | Free — no account, no trial, no usage cap |
| Category | Developer |
| Works offline | Yes, once the page has loaded |
| Browser support | Chrome 90+, Edge 90+, Firefox 90+, Safari 15+ |
| Interface languages | English, 中文, हिन्दी, Español, العربية |
Frequently asked questions
What is the difference between . and .. in JSONPath?
.name selects a child called name; ..name selects every member called name at any depth. $..author returns every author in the document, however deeply nested.
How do I filter an array?
Use [?expression] with @ for the current item: $..book[?@.price < 10] selects books under 10. Combine tests with && and ||, and negate with !.
Is JSONPath standardised?
Yes, since RFC 9535 in February 2024. Before that, implementations differed on details such as filter syntax and slice behaviour, which is why queries sometimes behave differently across libraries.
How do I select the last element?
Use a negative index: $..book[-1] is the last book, and $..book[-2:] the last two. Slices follow the same start:end:step rules as Python, so $..book[::-1] walks the array backwards and $..book[0:4:2] takes every second item of the first four.
Is my JSON sent anywhere?
No. Parsing and evaluation happen in your browser, so private API responses stay private.