Skip to content
{ }JSON Formatter

JSONPath Tester — Evaluate JSONPath Online

Type a JSONPath expression and see the matches instantly. Wildcards, recursive descent, slices and filter expressions — with a clickable cheat-sheet.

JSON
Matches
Type a JSONPath expression above; it evaluates as you type.

JSONPath cheat-sheet

Click any expression to run it against the sample:

All book titles (wildcard)
Every author, at any depth (recursive descent)
First book
Last book (slice)
First two books
Books under 10 (filter expression)
Titles of in-stock books
Every price anywhere
All members of store

The syntax, briefly

  • $ — the root of the document.
  • .key or ['key'] — a child member.
  • ..recursive descent: search at any depth ($..author).
  • * — wildcard: all members or elements ($.store.books[*]).
  • [n], [start:end], [-1:] — array index, slice, from-the-end.
  • [?(@.field > 1)] — a filter; @ is the current item. Quote strings: [?(@.author=="Orwell")].

Where JSONPath is used

It is the JSON analogue of XPath: API test assertions (Postman, REST-assured, Karate), extracting fields in tools like jq-adjacent pipelines, configuration lookups, and log processing. Nail the expression here first, then paste it wherever you need it — or extract the values in place with the formatter's JSONPath filter and inspect structure in the tree viewer, which copies a valid path for any node.

Frequently asked questions

What JSONPath syntax is supported?

The full common set: $ root, . child, .. recursive descent, * wildcard, [n] index, [start:end] slice, [-1:] from the end, and [?(@.field > 1)] filter expressions comparing against the current node @. It matches the widely used Goessner/jsonpath-plus dialect.

How is this different from the filter on the main formatter?

Same engine, more room: this page evaluates live as you type, shows the match count, and includes a clickable cheat-sheet of common expressions. The formatter's inline filter is for a quick extraction while you are already formatting.

Why does my filter expression return nothing?

Filters use @ for the current item and need the ?() wrapper: $.books[?(@.price<10)]. Strings must be quoted inside: [?(@.author=="Orwell")]. A bare $.books[price<10] is not valid JSONPath.

Does the order of results match the document?

Yes — results are returned in document order. For recursive descent ($..price) that means top-to-bottom as the values appear in the source.

Is my JSON sent anywhere?

No. Both the document and the query are evaluated entirely in your browser. Nothing is uploaded, so testing paths against confidential payloads is safe.