JMESPath Query Tool

Paste JSON, enter a JMESPath expression, and evaluate projections, filters, slices, functions, and multiselect objects without uploading data.

Try:
JMESPath result

About this tool

JMESPath is the JSON query language used by the AWS CLI --query flag. Paste a JSON document, enter an expression, and this tool evaluates it locally with a pure Rust engine. Use it to project fields, filter arrays, sort data, call built-in functions, or reshape objects before pasting the expression into scripts and CLI commands.

Worked examples:

people[*].name
people[?age > `30`].{name: name, state: state}
sort_by(people, &age)[0].name

String literals use single quotes, JSON literals use backticks, and a missing match returns null rather than an error. Turn on raw output to print string results without JSON quotes and array items one per line.

Common built-ins supported by the underlying engine include length, contains, starts_with, ends_with, sort, sort_by, max_by, min_by, join, keys, values, reverse, sum, avg, map, to_string, and to_number.

Limits and edge cases: the page does not fetch remote URLs or contact AWS; it evaluates only the JSON you paste. Large documents must fit in browser memory. Syntax errors and type errors are reported separately from invalid JSON so you can tell which side needs fixing.

FAQ

How is JMESPath different from JSONPath?

JSONPath focuses on selecting paths from a JSON tree. JMESPath also selects data, but it has a standardized expression language for projections, filters, pipes, functions, and object/list construction. It is the syntax used by aws --query.

What does raw output do?

Raw output is useful when your expression returns strings. A string result is printed without JSON quotes, and a top-level array is printed one item per line. Objects, numbers, booleans, and null still render as JSON-compatible text.

Why did my expression return null?

null is a valid JMESPath result. It usually means the path did not exist or a filter matched no object in the place you expected. Try projecting a smaller expression first, such as people or people[*], then add filters one at a time.

Does this upload my JSON?

No. The evaluator runs as WebAssembly in your browser for the page surface, and the CLI/chat surfaces use the same local core. The tool has no live price, cloud, or account connection.

Can it generate code for my programming language?

No. This tool evaluates and debugs the expression itself. Once the expression works, paste it into the AWS CLI or a JMESPath library for your language.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool jmespath-query 'people[?age > `30`].{name: name, state: state}' 'json={"people":[{"name":"Alice","age":34,"state":"WA"},{"name":"Bob","age":25,"state":"OR"},{"name":"Carol","age":41,"state":"WA"}]}'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/jmespath-query/?expression=people%5B%3Fage%20%3E%20%6030%60%5D.%7Bname%3A%20name%2C%20state%3A%20state%7D&json=%7B%22people%22%3A%5B%7B%22name%22%3A%22Alice%22%2C%22age%22%3A34%2C%22state%22%3A%22WA%22%7D%2C%7B%22name%22%3A%22Bob%22%2C%22age%22%3A25%2C%22state%22%3A%22OR%22%7D%2C%7B%22name%22%3A%22Carol%22%2C%22age%22%3A41%2C%22state%22%3A%22WA%22%7D%5D%7D&pretty=true&raw=true

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.