How to test a JSONPath selector
- Paste strict JSON into JSON input.
- Enter a selector beginning with
$. Use property names, indexes, wildcards, recursive descent, unions, or nonnegative slices. - Select Run query. Each result includes its bracket-notation path and value; no matches is an empty array.
For example, $.store.book[*].title selects each book title, while $..price selects price members at any depth.
Supported selectors
Dot properties use ASCII identifiers. Bracket properties use quoted ASCII keys; indexes are nonnegative safe integers. Wildcards, ..name/..*, homogeneous property or index unions, and nonnegative slices with exclusive end are supported. Duplicate union matches are retained.
Filters such as [?(@.price < 10)], computed/script expressions, negative indexes, escaped or Unicode keys, parent/property operators, and other advanced selectors are rejected. This is a deliberately narrow JSONPath Plus subset.
JSON values, precision, and limits
JSON is validated in a worker before parsing. Duplicate decoded object keys, non-finite or unsafe numeric values, nonzero underflow, and nesting beyond 100 levels are rejected. JavaScript numbers use binary floating-point precision: this tool reports parsed values, not the exact original numeric spelling, escapes, or negative zero. Quote large identifiers as JSON strings. Literal own properties named __proto__, constructor, or prototype remain data.
Selectors are limited to 4 KiB, 64 segments, and 128 union members. Results are limited to 2,000 candidates, 2 MiB UTF-8, and a 2-second worker deadline. Input is not sent over the network, stored, or placed in the page URL.
Why do filters fail?
Filters and JavaScript expressions are intentionally excluded to keep the accepted selector grammar small.
How do I read a path?
Every path uses absolute bracket notation such as $['store']['book'][0]['title'].
Is my JSON uploaded?
No. Parsing and selection run in a local worker in this browser.