JSON Path / JSON Pointer Tester
Enter some JSON data and a query (JSONPath or JSON Pointer) to see every matched value along with its absolute path. Handy for checking a query before pulling a value out of an API response, or for validating an expression before passing it to jq or a JSONPath library. To format or validate JSON itself, also try the JSON Formatter tool.
🔒 Runs in your browser · Your data is never sent to a server
e.g. $.store.book[*].title
| # | Path | Value |
|---|
Notes
- JSONPath follows the jsonpath-plus library implementation. Extended syntax such as filter expressions (
[?(@.price>10)]) and recursive descent (..) is supported, though exact behavior can vary between implementations. - A JSON Pointer always points to exactly one location, so it always produces a single result (or an error). Use JSONPath if you need to collect multiple values at once.
- A JSON Pointer with a leading
#(the URI fragment form used in OpenAPI/JSON Schema, e.g.$ref: "#/components/schemas/Foo") is also accepted — the#is simply stripped. - Everything runs entirely in your browser — the JSON and query you enter are never sent to a server.
Glossary
JSONPath
A query language for pointing to specific values inside JSON data, similar to XPath for XML. `$.store.book[0].title` walks down the object/array hierarchy: `$` is the root, `.` accesses a property, `[*]` is a wildcard (every element), and `..` is recursive descent (matches at any depth).
JSON Pointer
A simple notation defined in RFC 6901 for pointing to a single location in JSON. `/store/book/0/title` walks down keys and array indices separated by "/". Unlike JSONPath it has no wildcards and always points to exactly one location. A literal "/" in a key is escaped as "~1" and "~" as "~0".
Filter expression
A JSONPath syntax for narrowing down elements with a condition, such as `[?(@.price > 10)]`. `@` refers to the element currently being examined.
FAQ
When should I use JSONPath versus JSON Pointer?
JSONPath supports filters and wildcards and can return several values at once. JSON Pointer addresses exactly one location, so the result is always a single value or an error. Use JSONPath when you need multiple values.
Are filter expressions and recursive descent (..) supported?
Yes. Filters such as [?(@.price>10)] and recursive descent with .. work. The implementation follows the jsonpath-plus library, so details may differ from other libraries or jq.
Can I use pointers starting with "#/" such as OpenAPI $ref values?
Yes. A leading # is skipped, so values like #/components/schemas/Foo work as JSON Pointers.
Share this page
