JSON Path Tester

API & Backend

Run JSONPath expressions against a payload and see matches live.

Runs entirely in your browser โ€” nothing is uploaded

What people do next

Features

  • Matches highlighted live as you type the expression.
  • Recursive descent, wildcards, array slices and filter expressions.
  • Filters can be combined with && and ||.
  • Explains why an expression matched nothing, rather than just showing an empty result.
  • Evaluated in your browser โ€” API payloads are never uploaded.

How to use the JSON Path Tester

  1. 1Paste a JSON payload.
  2. 2Type a JSONPath expression.
  3. 3Read the matches, and refine until they are what you want.

Frequently asked questions

What does $..price mean?

The $ is the root of the document and .. is recursive descent, so $..price finds every property named price at any depth โ€” inside nested objects, inside arrays of objects, anywhere. It is the most useful operator in JSONPath and the one worth learning first.

How do I filter an array?

With a filter expression: $.items[?(@.price > 100)] returns the items whose price exceeds 100. The @ refers to the element currently being tested. Conditions can be combined, so $.items[?(@.price > 100 && @.inStock == true)] works as you would expect.

What is the difference between .. and .*?

A single .* matches every direct child of a node, one level deep. The .. descends through every level. So $.store.* returns the immediate contents of store, while $..* returns every node in the whole document beneath it.

How do array slices work?

Like Python: $.items[0:3] takes the first three, $.items[-2:] the last two, and $.items[::2] every other one. The end index is exclusive, which is the part people most often get off by one.

Is JSONPath a standard?

Loosely. It was proposed in 2007 by analogy with XPath and implementations have drifted apart since, particularly over filters and how a single match is returned. RFC 9535 standardised it in 2024, but many libraries predate that โ€” so test your expression against the library you are actually using, not just here.