JSONPath Tester

Run JSONPath queries with filters against your JSON, per RFC 9535.

Query JSON The Way Your Code Will

JSONPath is to JSON what XPath is to XML: a short expression that picks values out of a document. Paste your JSON, type a query, and see the matching values — or their normalised paths — update as you type. Example queries on the classic bookstore document show every feature in one click.

The evaluator follows RFC 9535, the 2024 standard, including filters like [?@.price < 10], the length(), count(), match() and search() functions, slices with negative steps and recursive descent. The older Goessner syntax ?(…) is accepted too, so queries copied from older tools work.

Key features

  • RFC 9535 selectors, filters and functions.
  • Values or normalised paths for every match.
  • Live evaluation as you type.
  • 13 example queries covering every feature.
  • No eval() — filters are parsed, never executed.
100% client-side — no data leaves your machine

This tool runs entirely inside your browser using native Web APIs. Your files and text are never uploaded to a server, never logged and never shared with third parties.

How to use: JSONPath Tester

  1. Paste your JSON
    Errors in the document are reported with their message.
  2. Type a query
    Start with $, then .name, [index], [*] or .. for any depth.
  3. Add a filter
    [?@.status == "active"] keeps matching items.
  4. Switch to paths
    See exactly where each match lives.

Technical specifications

Processing locationEntirely in your browser — no server round trip
Data uploadedNone. Files and text never leave your device
PriceFree — no account, no trial, no usage cap
CategoryDeveloper
Works offlineYes, once the page has loaded
Browser supportChrome 90+, Edge 90+, Firefox 90+, Safari 15+
Interface languagesEnglish, 中文, हिन्दी, Español, العربية

Frequently asked questions

What is the difference between . and .. in JSONPath?

.name selects a child called name; ..name selects every member called name at any depth. $..author returns every author in the document, however deeply nested.

How do I filter an array?

Use [?expression] with @ for the current item: $..book[?@.price < 10] selects books under 10. Combine tests with && and ||, and negate with !.

Is JSONPath standardised?

Yes, since RFC 9535 in February 2024. Before that, implementations differed on details such as filter syntax and slice behaviour, which is why queries sometimes behave differently across libraries.

How do I select the last element?

Use a negative index: $..book[-1] is the last book, and $..book[-2:] the last two. Slices follow the same start:end:step rules as Python, so $..book[::-1] walks the array backwards and $..book[0:4:2] takes every second item of the first four.

Is my JSON sent anywhere?

No. Parsing and evaluation happen in your browser, so private API responses stay private.

Related tools

Back to all tools