JSON Path Tester
API & BackendRun JSONPath expressions against a payload and see matches live.
Runs entirely in your browser โ nothing is uploaded
What people do next
Features
- Matches highlighted live as you type the expression.
- Recursive descent, wildcards, array slices and filter expressions.
- Filters can be combined with && and ||.
- Explains why an expression matched nothing, rather than just showing an empty result.
- Evaluated in your browser โ API payloads are never uploaded.
How to use the JSON Path Tester
- 1Paste a JSON payload.
- 2Type a JSONPath expression.
- 3Read the matches, and refine until they are what you want.
Frequently asked questions
What does $..price mean?
The $ is the root of the document and .. is recursive descent, so $..price finds every property named price at any depth โ inside nested objects, inside arrays of objects, anywhere. It is the most useful operator in JSONPath and the one worth learning first.
How do I filter an array?
With a filter expression: $.items[?(@.price > 100)] returns the items whose price exceeds 100. The @ refers to the element currently being tested. Conditions can be combined, so $.items[?(@.price > 100 && @.inStock == true)] works as you would expect.
What is the difference between .. and .*?
A single .* matches every direct child of a node, one level deep. The .. descends through every level. So $.store.* returns the immediate contents of store, while $..* returns every node in the whole document beneath it.
How do array slices work?
Like Python: $.items[0:3] takes the first three, $.items[-2:] the last two, and $.items[::2] every other one. The end index is exclusive, which is the part people most often get off by one.
Is JSONPath a standard?
Loosely. It was proposed in 2007 by analogy with XPath and implementations have drifted apart since, particularly over filters and how a single match is returned. RFC 9535 standardised it in 2024, but many libraries predate that โ so test your expression against the library you are actually using, not just here.