The JSONPath tester is a live query playground: type a JSONPath expression and see the matching values update as you type against your document. It is the fastest way to work out the exact path that selects the data you need before you hard-code it.
Your JSON and your queries run in the browser with no upload, so you can experiment against a real production response without it leaving your machine. It is free, instant and needs no account.
It is built for developers extracting fields from API responses, writing selectors for tests or automations, and anyone learning JSONPath by trial and error with immediate feedback.
$ is the root, dot notation walks into keys ($.user.name), brackets index arrays ($.items[0]), and the wildcard [*] selects every element. Combine them to reach into nested structures and pull out exactly the values you want.
Recursive descent (..) finds a key at any depth, and filter expressions like [?(@.active==true)] select array elements matching a condition. These let you query by value, not just by fixed position, which is essential for real-world data.
Every keystroke re-runs the query against your document and shows the current matches. A query that selects nothing returns an empty result rather than an error, so you can refine the path incrementally.
Matches are returned as a JSON array of the selected values, preserving their original types and order. If your expression targets a single value you still get it back in a predictable, copy-ready form.
JSONPath is a compact path syntax for selecting values out of a document. jq is a fuller query and transformation language. This tester focuses on JSONPath-style selection for quickly extracting data.
Use the wildcard: $.items[*] returns every element. Add a key after it, like $.items[*].id, to pull one field from each element.
No. An expression that matches no data returns an empty result. Check for a typo in a key name, or that the path matches the actual nesting of your document.
Use a filter expression such as $.users[?(@.active==true)] to keep only elements whose field matches. @ refers to the current element being tested.
No. Both the document and the query are processed locally in your browser, so it's safe for production data.