JSONPath Tester

Write an expression, see the matches as you type. Recursive descent, wildcards and filters supported.

Runs in your browser — nothing is uploaded

Matches

About the JSONPath Tester

JSONPath pulls values out of deep nesting with one expression instead of traversal code. $ is the root, a dot steps into a key, .. descends recursively at any depth, [*] iterates, [0] indexes, and [?(@.qty > 1)] filters by predicate.

The usual reason to reach for it is bulk extraction: $..items[*].sku collects every SKU in a document regardless of how many orders it contains or how deeply they are nested.

This implementation covers the constructs above, which is what most day-to-day expressions use. Script expressions and the more exotic corners of the various JSONPath dialects are not supported — those differ between libraries anyway, so verify against your target implementation before relying on them.

FAQ

JSONPath Tester — frequently asked

What JSONPath syntax is supported here?

The root $, child access with dots, recursive descent with .., wildcards with [*], numeric array indexing with [n], and comparison filters of the form [?(@.field op value)] where op is ==, !=, >, <, >= or <=. That covers the large majority of practical expressions.

How is JSONPath different from jq?

JSONPath is a selection syntax: it finds and returns matching nodes. jq is a full transformation language — it can reshape, aggregate, map and construct new documents. If you only need to pull values out, JSONPath is shorter; if you need to build a new structure from them, jq is the better tool.

Why does my expression return nothing?

Most often a path segment does not exist at the level you assumed — try shortening the expression step by step until it matches, then extend it. Also check that you used .. rather than . if the target is nested at an unknown depth, and that string comparisons in filters are quoted.

Are JSONPath implementations consistent?

No, and this is a common source of surprise. JSONPath was never formally standardised until RFC 9535 in 2024, and libraries in different languages diverge on filters, unions and how results are ordered. Expressions that work here should be re-checked against the library you deploy with.

Can I filter on nested fields?

Yes — a filter can reach into nested keys with dots, for example [?(@.customer.vip == true)]. The comparison value can be a number, a quoted string, or true/false.

Does the query run on a server?

No. The document is parsed and queried in your browser, so nothing you paste is transmitted.

    Report an issue