JSONPath Tester

JSON Tools

How to use the JSONPath Tester

Test JSONPath expressions live against any JSON:

1

Paste your JSON

Paste any JSON document into the left panel. Use the Sample button to load a pre-built example with books, nested objects, and arrays.

2

Write a JSONPath expression

Type a JSONPath expression in the expression bar at the top — it always starts with $. Try $.store.books[*].title or $..author to get started.

3

Click Run Query

Hit Run Query or press Enter to evaluate the expression. Every matching node appears in the results panel with its full path and value.

4

Explore results

Each result shows the JSONPath to the match and a colour-coded value badge. Click the expand arrow on objects and arrays to inspect the full value inline.

5

Use the syntax reference

Click any token in the syntax reference panel at the bottom to append it to your current expression — useful for building complex filter queries step by step.


When to use this tool

Use this whenever you need to write, test, or debug a JSONPath expression:

  • Building JSONPath queries for AWS Step Functions InputPath, OutputPath, and ResultPath before deploying
  • Writing JSONPath expressions for AWS EventBridge event patterns or CloudWatch metrics filters
  • Testing JSONPath filters for API gateways, data transformation pipelines, or message brokers
  • Debugging JSONPath expressions in Kubernetes admission controllers or OPA policy definitions
  • Learning JSONPath syntax by experimenting with live expressions on your own JSON data
  • Extracting specific fields from deeply nested API responses before wiring them into your application

Frequently asked questions

Q:What JSONPath syntax is supported?
The tester supports the full standard JSONPath feature set: $ root, . child, .. recursive descent, [*] wildcard, [n] index access, [-1] negative/last-element indexing, [0:2] array slicing, [1,3] union notation, [?(@.key)] existence filters, and [?(@.price < 10)] comparison filters with ==, !=, >, <, >=, <= operators. Everything runs client-side with no external library.
Q:What's the difference between $ and @ in JSONPath?
$ refers to the root element of the entire JSON document — all expressions start with it. @ refers to the current node being evaluated, and is only used inside filter expressions. For example in $..books[?(@.price < 10)], the @ refers to each individual book object being tested against the price filter.
Q:Can I use this for AWS Step Functions?
Yes. AWS Step Functions use JSONPath for InputPath, OutputPath, ResultPath, and Parameters fields. Test your expressions here before deploying — the engine matches AWS Step Functions' JSONPath behavior for standard path queries and filter expressions.
Q:How do filter expressions work?
Filter expressions use [?(...)] syntax and @ to refer to the current node. [?(@.inStock == true)] returns all elements where inStock is true. [?(@.price < 10)] returns elements where price is less than 10. Supported operators: == != > < >= <=. Key existence is tested with just [?(@.keyName)] — no operator needed.
Q:What does recursive descent (..) do?
The .. operator searches all descendants of the current node, not just direct children. $..author finds every 'author' field anywhere in the document regardless of nesting depth. It's the JSONPath equivalent of a deep search and is one of the most powerful operators for navigating complex nested structures.
Q:Is my JSON data sent to a server?
No. The entire JSONPath engine runs in your browser — no data is transmitted to any server, logged, or stored. You can disconnect from the internet and the tool still works. This makes it safe to test with real API responses or sensitive JSON payloads.