JSONPath evaluator
The path, your document, and what it actually selects.
Output
Paste or type above to see the result here.
Your files stay on your device
This tool runs entirely in your browser. What you paste is processed on your device and is never sent to a server, so it is safe to use with tokens, keys and unpublished text.
How it works
- Paste the JSON.
- Type the path: $.users[*].email, $..price, $.items[?(@.qty > 2)].name.
- Read what comes back, and the count above it.
- Switch to one match per line when you want a list to paste elsewhere.
Frequently asked questions
- Which dialect is this?
- The subset every implementation agrees on. JSONPath had no specification at all until RFC 9535 in 2024, by which time each library had its own dialect, so anything exotic works in one place and not another. This does names, indexes, slices, wildcards, recursive descent and comparison filters, and says so when you reach past that.
- Does it run script expressions?
- No, and deliberately. Some implementations evaluate $.a[(@.length-1)] by handing it to the language's own evaluator. Doing that with a string somebody pasted is indefensible, so those are refused with an explanation rather than run.
- What can a filter compare?
- == != > >= < <= and =~ for a regular expression, against a field of each item. @.qty > 2, @.name == "ada", @.sku =~ /^AB/, or just @.deleted to test that something is there at all.
- Why did my path match nothing?
- Usually a level too few or too many. Try the path one step at a time — $, then $.store, then $.store.book — and watch where the matches stop.
- Is anything sent to a server?
- No. It runs in your browser, so what you paste stays on your computer.