What this does
Paste JSON, type a JSONPath expression, and see every match as you type. Each result shows the value together with its normalized path (for example $['store']['book'][0]['title']) and its RFC 6901 JSON Pointer, so you can move from a query to the exact location of a value in the document.
Supported syntax
The tester uses JSONPath-Plus, which follows Stefan Goessner's original JSONPath and adds a few extensions such as parent selection and type selectors.
$— The root of the document.name or ['name']— A child property[0], [-1]— An array element by index; negative counts from the end[*] or .*— Every child of an object or array..name— Recursive descent: the property at any depth[0:2], [1:], [::2]— Array slices (start:end:step)[0,2], ['a','b']— A union of indexes or names[?(@.price < 10)]— A filter: keep children for which the expression is true@— The current node inside a filter
Example
Given this document:
{ "store": { "book": [
{ "title": "Sayings of the Century", "price": 8.95 },
{ "title": "Sword of Honour", "price": 12.99 } ] } }$.store.book[?(@.price < 10)].title returnsSayings of the Century, and $..price returns both prices.
Behavior notes
- Filter expressions are evaluated by a built-in safe evaluator. Arbitrary JavaScript, function calls, and
evalare not available, so a pasted expression cannot run code. - JSONPath has no single standard across libraries, so results for edge cases can differ from other tools.
- Input is limited to 5 MB and the list shows the first 1,000 matches; the heading still shows the total.
- A valid expression that selects nothing is reported as zero matches, not as an error.
Privacy
The JSON and the expression are evaluated in your browser. Nothing is uploaded or stored.