JSON tools

JMESPath testerfilter records, reshape the result

Start with the age filter. Run explicitly with the button or Ctrl/Cmd+Enter; editing makes the previous result out of date.

JMESPath tester

JSON input

Result

Preview is displayed in 5,000-character blocks. Copy and download include the complete result.

JSON and expressions stay in browser memory; they are not saved.

Official jmespath.js 0.16.0 · Safety patches · 26 standard functions

Result is out of date; copy and download are disabled.

A JMESPath tester is useful when a cloud response contains dozens of fields but the next step needs only names, counts or a smaller object. Test the selection against actual JSON before moving an expression into your script.

This JMESPath evaluator gives one JSON result, which may be an array, an object or a scalar. Use the JMESPath playground examples to compare a projection with an object constructor; their output shapes matter as much as the selected values.

Why use this JMESPath tester?

Filter first, project only what you need

Keep people whose age meets a numeric condition, then select their names. A projection applies the following expression to each array element; it can omit null results, so the output count need not equal the input count.

A collection of records passes through a condition and becomes a smaller list of selected fields.

Build the shape your script expects

Create objects with named fields, sort records by a property or calculate a count. The JMESPath tester shows the resulting JSON directly, allowing you to check whether the next command will receive a list or a single object.

Selected fields form a new object beside a function that reduces a collection to one value.

Check types before combining operations

01

Start with valid source data

Paste strict JSON or import a local file. Files are limited to 500,000 bytes and decoded input to 500,000 characters. Importing, clearing and loading a sample show a replacement preview; one undo restores the previous input, expression and result. Files must be valid UTF-8; a BOM is not removed automatically and fails JSON validation.

02

Run after changing the expression

Evaluation is manual. Ctrl/Cmd+Enter also runs the query. Choosing a query example changes the expression without executing it, and any edit disables export until a fresh query succeeds.

03

Inspect the complete result shape

null, false, 0, an empty string and [] can all be successful results. The preview grows in blocks of 5,000 characters; copying and downloading include the full accepted JSON, not only the visible portion.

Selection, construction and calculation

Array filters and projections

Use people[?age >= `18`].name for a numeric filter. Backticks mark JSON literals; a quoted raw string such as 'active' is a string value. Comparing a number to a string does not turn them into the same type.

Objects and lists with chosen fields

A multiselect object such as {names: people[].name, count: length(people)} creates a new structure without changing the source. Multiselect lists preserve positions and can retain null values that a projection would omit.

Pipes and standard functions

A pipe passes the completed left result to the expression on the right. Use sort_by, length, contains or sum with their required argument types; function references such as &age are expressions, not property-name strings.

Errors separated from empty values

JSON validation, expression syntax, unknown functions, argument count and argument type failures are reported as errors. A missing property may produce null without a failure; the result remains available to export.

Syntax and execution boundaries

A named implementation
The engine is official jmespath.js 0.16.0 with safety patches and its 26 standard functions. JSONPath, jq, group_by, regex extensions, custom functions and arbitrary JavaScript are not supported. Backticks must contain strict JSON; use single quotes for raw strings. Expression references are only function arguments, not output values.
Strict input and ordinary floating point
Comments, trailing commas and duplicate object keys are rejected. Unsafe integers and numeric overflow are rejected in input, literals and results. Decimal calculations use JavaScript numbers, not exact decimal arithmetic; number spelling is not preserved. Unsafe intermediate sums in sum or avg are rejected even when the final mathematical value would be safe.
Finite work per query
Input is limited to 500,000 characters, expressions to 2,000 and output to 2,000,000. Structural and evaluation budgets also apply. A query worker is stopped after 2 seconds; a limit failure never becomes a partial downloadable result.
Values, not source locations
JMESPath returns a JSON value rather than a list of normalized source paths. There is no recursive JSONPath descent, source editing or CSV export. Explicit null and a missing field can have the same result.
Memory only
The page does not save query history, fetch URLs or create data-bearing share links. Local files and pasted JSON are processed in browser memory. Reloading discards the current work.

JMESPath tester questions

Can I use this tool with AWS CLI output?

Yes: paste JSON output from AWS CLI and test the expression against that document. This does not connect to AWS. CLI version differences and shell quoting still need checking when you move the expression back to your command.

Do I need to add a $ prefix?

No. Start with a field such as people, or use @ for the current value. The $ root prefix belongs to JSONPath and is not a prefix to add to a JMESPath expression.

How do I filter an array by a numeric field?

For the example document, use people[?age >= `18`].name. The number is a JSON literal between backticks. Check that age is numeric; a string containing digits is a different type.

Why did a missing field produce null?

A property lookup returns null when the key is absent. An explicit null can produce the same output, while a filter with no retained elements normally produces []. A successful null result is not a syntax error.

Does this tool use the real JMESPath library?

Yes. This JMESPath tester runs official jmespath.js 0.16.0 with safety patches, rather than matching a few expressions with a custom parser. It exposes the standard 26 functions, not community extensions.

Found a query this tool handles incorrectly?

Try a small query first

Run the JMESPath tester on the sample, change one condition and compare the result before applying the expression to a larger response.