Free JSONPath tester — evaluate JSONPath expressions against your JSON in the browser

Examples: $..price, $.store.books[0], $.store.books[?(@.price < 20)].title, $.store.books[-1:]

Results

Evaluate an expression to see matching values.

🧭 JSONPath Tester — Free Online Tool

Evaluate JSONPath expressions against JSON online, free. JSONPath is a query language for JSON — the JSON analogue of XPath for XML — that selects values by path, with wildcards, recursive descent and filters. This tester parses your JSON and evaluates a JSONPath expression against it in your browser, listing every matching value as JSON so you can confirm a path before wiring it into code, a config, or an API mapping.

🚀 Why use this JSONPath Tester tool?

Both the JSON and the expression are evaluated entirely in your browser — nothing is uploaded — and the tool supports wildcards (*), recursive descent (..), array slices, unions and filter expressions like [?(@.price < 20)]. 100% free, no registration, and complete privacy — everything runs locally in your browser, so your data never touches a server.

Key Features

🎯Live evaluation

Paste JSON, type a JSONPath expression and instantly see every matched value rendered as clean JSON.

🌳Recursive & wildcard

Use $..price to find a key at any depth, or books[*] to select every element — the full navigation toolkit.

🔍Filters & slices

Narrow results with filters such as [?(@.category=='tech')] and array slices like [-2:] for the last two items.

🔒100% private

Your JSON never leaves the page — parsing and evaluation run locally, so it is safe for real API payloads.

Popular Use Cases

API integration

  • Confirm the path to a nested field
  • Extract values for a data mapping
  • Test paths before coding them

Config & tooling

  • Validate JSONPath in a pipeline config
  • Pull values for transforms
  • Debug a path that returns nothing

Data exploration

  • Find a key buried deep in a document
  • Filter array elements by a condition
  • Slice large arrays to a sample

What It Handles

Selects

  • Child & wildcard (*)
  • Recursive descent (..)
  • Index, slice & union

Filters

  • ==, !=, <, <=, >, >=
  • Existence checks
  • Nested @.a.b fields

Privacy

  • Parsed in-browser
  • No network calls
  • Runs offline

Sources & References

Frequently Asked Questions

What is JSONPath?

JSONPath is a query language for JSON — standardised as RFC 9535 — that you use to select parts of a document by path. The root is $, dots and brackets walk into children (e.g. $.store.books[0].title), and special operators add wildcards, recursive search and filtering. It is the JSON counterpart to XPath for XML.

What syntax does this tester support?

It supports the root $, child access (.name or ['name']), the wildcard *, recursive descent .., array indexing including negatives ([-1]), slices ([start:end:step]), unions ([0,2]) and filter expressions with comparisons such as [?(@.price < 20)] and existence checks like [?(@.discount)].

Is this a free alternative to CodeBeautify's JSONPath tester?

Yes — it evaluates JSONPath for free with no signup and, unlike many hosted testers, runs entirely in your browser so your JSON is never uploaded. It covers the common operators (wildcards, recursion, slices, unions and filters) you need to validate a path.

Why does my expression return no results?

Usually the path doesn't match the structure: check that you used [*] to step into arrays, $.. for keys nested at unknown depth, and the exact key names (JSONPath is case-sensitive). A filter that compares a string to a number, or a missing quote around a key, will also return nothing.

What's the difference between $.a.b and $..b?

$.a.b selects b only when it sits directly under a at that exact location. $..b is recursive descent — it finds every b key anywhere in the document, at any depth. Use the recursive form when you don't know (or don't care about) the full path to a key.

Is my JSON sent to a server?

No. The JSON is parsed and the expression evaluated entirely in your browser; nothing is transmitted or stored, so you can safely test paths against production payloads.

🎓 Pro Tips

  • Tip 1: Use $..key to locate a field when you're unsure how deeply it's nested, then tighten the path once you see where it lives.
  • Tip 2: Remember to step into arrays with [*] or an index — $.items.name returns nothing, but $.items[*].name returns each name.
  • Tip 3: Quote string literals in filters ([?(@.type=='admin')]) and leave numbers unquoted ([?(@.age>18)]) so comparisons match the value type.