/

JSONPath Tester

Processed Client Side

Run JSONPath expressions against a JSON payload in real time and see every matching value and its path.

JSON payload
JSONPath
Length: 514Lines: 11Size: 514 BytesCursor: 1:1
Matches
4 matches
$['store']['book'][0]['author']
"Nigel Rees"
$['store']['book'][1]['author']
"Evelyn Waugh"
$['store']['book'][2]['author']
"Herman Melville"
$['store']['book'][3]['author']
"J. R. R. Tolkien"

Bookmark this tool now — skip the search next time you need it.

About JSONPath Tester

This tool runs entirely in your browser. Whatever you paste is processed on your own device and is never uploaded, logged, or sent to any server.

The JSONPath Tester runs JSONPath expressions against a JSON document and shows every match the moment you type, with the exact path of each result next to its value. It is the fastest way to work out the expression you need before committing it to code — a jq-style query in a CI pipeline, a Postman test assertion, a Kubernetes JSONPath output, or a field extraction in a Logstash or Elasticsearch config. The built-in engine covers the parts of JSONPath people actually use: dot and bracket notation, wildcards, recursive descent, slices, unions, and filter expressions with comparison and boolean operators.

Key features

  • Live evaluation — matches update as you type, with no button to press
  • Every match shown with its normalised path as well as its value, so you can see which node each result came from
  • Dot notation, bracket notation, and quoted keys for names containing spaces or punctuation
  • Wildcards ($.items[*]), recursive descent ($..price), array slices with an optional step, unions ([0,1]), and negative indices
  • Filter expressions with ==, !=, <, >, <=, >=, &&, ||, ! and parentheses, plus bare existence checks like [?(@.isbn)]
  • A match counter, plus distinct error states for invalid JSON and an invalid path so you always know which pane is at fault
  • Copy every matched value at once as a JSON array
  • Six worked example expressions against the sample document to start from
  • Runs entirely in your browser — production responses you are debugging are never uploaded

How to use it

  1. Paste the JSON you want to query into the input pane.
  2. Type a JSONPath expression in the query box, starting with $ for the document root.
  3. Watch the matches appear underneath — each one shows its path above its value.
  4. Refine the expression until the match count and the values are what you expect.
  5. Copy the matched values as a JSON array, or copy the expression into your own code.

Tips & common mistakes

  • Build expressions one segment at a time. Start with $, confirm the match, then add the next segment — it is far quicker than debugging a long path that returns nothing.
  • No matches and an invalid path are different problems, and the badge tells you which you have. "0 matches" means the path is valid but nothing fits; "Path error" means the expression itself is malformed.
  • Recursive descent ($..price) is the quickest way to find a field when you do not yet know how deeply it is nested. Once you know, replace it with the explicit path — it is faster and it will not pick up an unrelated field with the same name.
  • Filters run against each element of the collection you apply them to, so $.store.book[?(@.price < 10)] tests each book. Comparisons are loose across strings and numbers, so "10" and 10 compare equal.
  • Use bracket notation with quotes for keys that contain spaces, dots, or hyphens: $['user-id'] rather than $.user-id.
  • JSONPath is not standardised the way XPath is, and implementations differ at the edges. Check anything unusual against the specific library you are targeting before relying on it.
  • Script expressions, function calls such as length(), and regular-expression matching are outside what this engine supports — it covers the widely-implemented core rather than one library’s extensions.

Related tools

Browse all 24 JSON tools

Frequently asked questions

10

It is a query language for JSON, the way XPath is for XML. An expression like $.store.book[*].author selects a set of values from a document, and it is widely used in Postman tests, Kubernetes output, CI pipelines, and log processing.

Paste your JSON, type an expression in the query box, and matches appear immediately — no button to press. Each match shows the path it came from above its value.

Dot and bracket notation, quoted keys, wildcards, recursive descent with .., array slices with an optional step, unions such as [0,1], negative indices, and filter expressions.

A filter such as [?(@.price < 10)] tests each element of the collection, where @ refers to the current item. You can use ==, !=, <, >, <=, >=, combine conditions with && and ||, negate with !, and group with parentheses.

Use a filter with no comparison: [?(@.isbn)] matches every element that has an isbn property with a value that is not null or false.

It is the root of the document, and every expression starts with it. $.users is the users property of the top-level object; $..users finds a users property at any depth.

The badge distinguishes the two causes. “0 matches” means the path is valid but nothing fits — usually a typo in a key or a wrong assumption about nesting. “Path error” means the expression itself is malformed.

Use bracket notation with quotes: $['user-id'] or $['first name']. Dot notation cannot express those names because the punctuation terminates the segment.

No. Script expressions, function calls, and regular-expression matching are library-specific extensions, and this engine implements the widely-shared core of JSONPath instead.

No. The query engine runs in your browser, so the production responses you are usually debugging with this tool never leave your machine.