Tools

JSONPath tester

Try a JSONPath expression against your JSON and see every match with its exact path and JSON Pointer.

Runs in your browserData formats1.2K
Free

Input

0 B

Result

The result will appear here.

JSONPath is how values are picked out of JSON in API testing tools, AWS Step Functions, log pipelines and kubectl's -o jsonpath output, and expressions are easy to get subtly wrong. Paste the document, type an expression, and see exactly what it selects: every match comes back with its normalised path and its JSON Pointer, so you can tell which element of which array matched and not just what the value was. It runs JSONPath-Plus, the most widely used JavaScript implementation, which adds filters, recursive descent and the ^ parent operator to the original syntax.

How it works

  • Filters such as $[?(@.stargazers_count > 100000)] run in JSONPath-Plus's safe evaluator, which interprets the expression itself instead of executing it as JavaScript.
  • Each match carries its path in bracket notation and as an RFC 6901 JSON Pointer, ready for a JSON Patch operation.
  • Show values only for a flat array of results, or paths only when you want the list of locations.
  • An empty array is not an error: it means the expression is valid and simply selected nothing.

Where your data goes

Nowhere. This tool runs entirely in your browser: the text you paste is processed by the page and is never transmitted to a server or written to a log.

This tool is free and needs no account. Its results exist only in your open page and are not saved anywhere.

What it costs

This tool is free, with no sign-in and no points.

Common questions

Is this the same JSONPath as RFC 9535?
Mostly, not entirely. RFC 9535 standardised JSONPath in 2024, long after JSONPath-Plus was written, and filter syntax is where they part: the RFC writes $[?@.price < 10] with its own function set, while JSONPath-Plus uses the original $[?(@.price < 10)] form. Plain paths, wildcards, slices and recursive descent behave the same.
Will an expression that works here work in kubectl?
Simple ones will. kubectl wraps its own JSONPath dialect in a template syntax — kubectl get pods -o jsonpath='{.items[*].metadata.name}' — so drop the braces and add a leading $ to test the path part here. Filters and functions differ between the two, so check anything beyond plain selection against kubectl itself.
Why does my filter fail with an error about reading a property?
The safe evaluator allows property access, comparison and logic on the current node, and refuses method calls, constructors and anything else that would run arbitrary code. That is deliberate: an expression pasted from somewhere else should never be able to execute in your browser.
What is the difference between .. and *?
* matches every direct child of one node; .. descends through every level below it. $..name finds a name key at any depth, while $[*].name looks only one level into the top-level array. Recursive descent over a large document can return far more matches than you expect.

The open-source behind it

This tool runs on JSONPath-Plus/JSONPath, released under MIT. If you need the same behaviour inside your own program, that is the library to reach for.

JSONPath-Plus/JSONPath

Also known as

  • jsonpath tester
  • jsonpath online
  • jsonpath evaluator
  • jsonpath filter expression
  • test jsonpath
  • jsonpath syntax