JMESPath Tester & JSON Query Playground Online
About JMESPath Tester
The JMESPath Tester explores JSON using a practical, dependency-free subset of JMESPath syntax. Select nested fields, project a property across an array, pick indexes, flatten arrays, take slices and filter records with comparisons while seeing formatted JSON output.
Queries and data stay in the browser, which makes the playground convenient for inspecting API responses and internal fixtures. A missing property returns null in the displayed result instead of running code or mutating the source document.
This page is deliberately labeled as a subset rather than a full conformance implementation. It covers common exploratory expressions and a small group of functions, but not multiselect hashes, every escape rule or the complete official function library. Use an official JMESPath implementation when exact cross-runtime compatibility is a release requirement.
How it works
Select fields and array projections
Use dotted identifiers such as customer.address.city. When a property is applied to an array, the evaluator projects that property across its items. Bracket indexes, negative indexes, wildcards and quoted property names cover common navigation cases.
Filter and slice arrays
Filters support equality and ordered comparisons in expressions such as people[?age >= `18`].name. Slice syntax follows the familiar [start:end:stride] shape, and empty brackets flatten one array level.
Pipe results into common functions
A top-level pipe sends one result to the next expression. The included functions are length, keys, values, sort, reverse, type and contains; @ refers to the current pipe value.
Read literals inside backticks
Backtick literals are parsed as JSON when possible, so numbers, booleans, null, strings, arrays and objects retain their types in a filter. Single-quoted text is also accepted for simple string comparisons.
Frequently asked questions
Is this a complete JMESPath implementation?
No. It is a documented subset aimed at common interactive queries. It supports paths, projections, indexes, wildcards, flattening, slices, comparison filters, pipes and several functions.
How do I filter an array by a numeric field?
Use a filter followed by a projection, for example people[?age >= `18`].name. Backticks let the evaluator treat 18 as a number rather than text.
Why did a missing field produce null?
An unresolved property evaluates to an undefined internal result, which is displayed as JSON null so the output pane always contains valid JSON.
When should I use an official JMESPath library instead?
Use one when you need full specification conformance, the complete function set or identical behavior across a production SDK, CLI and this browser page.