JSONPath / JMESPath Tester
Test a JSONPath or JMESPath expression against JSON — matched values as output, with the resolved paths and a jq equivalent alongside. Runs in your browser.
Auto-runs as you type. Ctrl+Enter to re-run. JSONPath starts at $; JMESPath uses bare keys.
How to use the JSONPath Tester
Write and test JSONPath expressions live against any JSON payload — API responses, Kubernetes objects, monitoring rules, ETL selectors, or test assertions. The tester highlights every match, shows resolved paths, and supports wildcards, recursive descent, slices, filters, and unions. Everything is local; no payload is uploaded.
What it does
- Evaluates JSONPath expressions live against your JSON.
- Supports
$(root),./[](child),..(recursive descent),*(wildcard),[a,b](union),[start:end:step](slice), and[?( ... )](filter). - Shows each match with its resolved path and value.
- Also evaluates JMESPath expressions (switch the Engine option).
- Shows a best-effort jq equivalent of your JSONPath expression.
- Send the source JSON to the JSON Formatter, Schema Validator, or Schema Inspector.
When to use it
- Extract a single nested value from a large API response.
- Write JSONPath assertions for Postman, k6, or REST Assured tests.
- Build a monitoring rule (Datadog, Grafana, ELK) that needs a JSONPath query.
- Pluck a field from every object in an array (
$.items[*].id). - Drill into a Kubernetes
kubectl -o jsonoutput withoutjq. - Configure ETL selectors, request mappings, or transformation paths.
How to use it
- Paste your JSON into the left editor (or load from clipboard / file).
- Type a JSONPath expression starting with
$in the expression box. - Results update live — each match is listed with its resolved path and value, and highlighted in the source.
- Try variations:
$.users[*].email,$..price,$.items[?(@.qty>0)]. - Copy matched values or copy the expression once it returns what you need.
Tips & pitfalls
- Wildcard:
$.items[*].idreturns everyidin the array. - Recursive descent:
$..pricefinds everypriceat any depth. - Filter:
$.products[?(@.price < 10 && @.inStock)]selects products under 10 that are in stock. - Slice:
$.items[0:5]returns the first five entries. - JSONPath implementations differ slightly (Goessner vs RFC 9535) — confirm your target tool's dialect.
- Use the JSON Formatter first if your input does not parse.
FAQ
- What is JSONPath? A query language for selecting values from a JSON document, analogous to XPath for XML.
- How do I get all values of a key from an array? Use
$.items[*].keyName— the*matches every element. - How do I search at any depth? Use the recursive descent operator:
$..keyName. - How do I filter by a condition? Use a filter expression:
$.items[?(@.status=='active')]. - Why are no matches returned? Common causes: wrong key casing, missing
$, or wrong path level. Check the highlighted JSON to see the actual structure. - Is my JSON uploaded? No. Evaluation runs entirely in your browser.
- Does this support JMESPath? Yes — switch the Engine option to JMESPath. The tester includes a built-in JMESPath evaluator supporting projections, filters, pipes, and functions like
length,sort_by, and multiselect hashes.
Runs locally in your browser. No uploads. No analytics on pasted JSON.
Related guides
Common tasks solved by this tool
- Test a JSONPath expression against sample JSON
- Extract values from a nested API response
- Locate the paths you want to patch
- Validate the matched payload against a schema
- Debug why a JSONPath query returns nothing
Continue in a JSON/API workflow
Chain this into related tools, or build it as a saved workflow in Workflows.
- Format or inspect JSON
- Test JSONPath expressions — this tool
- Generate and apply a JSON Patch
- Validate the result against a schema
Part of the JSON and API contract toolkit
Validate schemas, compare JSON responses, generate JSON Patch operations and debug API contract examples with related privacy-first tools.