JSON Path Tester

Runs in browser JSON & Data

Test JSONPath queries interactively. Supports dot and bracket notation, wildcards, recursive descent (..), array slices, unions and filter expressions such as [?(@.price < 10)].

Privacy: This tool runs entirely in your browser. Your input never leaves your device.
Loading tool…

How to use JSON Path Tester

  1. Paste the JSON document.
  2. Type a JSONPath expression such as $.store.book[?(@.price < 10)].title.
  3. Inspect the matches; copy the values or the normalized paths.

JSON Path Tester features

  • Full JSONPath syntax: dot/bracket access, wildcards, recursive descent, slices and unions
  • Filter expressions with comparisons, regex (=~), in / nin, arithmetic and boolean logic
  • Safe evaluation — no eval(), expressions are parsed into an AST
  • Results as a table (path, type, value), a JSON array of values and a list of normalized paths
  • Evaluates live as you edit the expression or the document
  • Friendly syntax errors that point at the problem

JSON Path Tester example

Find cheap books

Input:

$.store.book[?(@.price < 10)].title

Output:

$.store.book[0].title   "Sayings of the Century"
$.store.book[2].title   "Moby Dick"

Frequently asked questions about JSON Path Tester

Which JSONPath features are supported?

Dot and bracket notation, wildcards (*), recursive descent (..), array indexes including negatives, slices [start:end:step], unions [0,2] and ["a","b"], filters [?(…)] and the (@.length-1) script form.

What can I write inside a filter?

Comparisons (==, !=, <, <=, >, >=), regular expressions (@.name =~ /^a/i), membership (@.tag in ["a","b"]), existence (@.isbn), arithmetic and logical operators (&&, ||, !). References to the root ($) are allowed too.

Is it safe to evaluate filters?

Yes. Expressions are parsed into a small AST and evaluated by the tool itself — no eval() or Function() is ever used, so nothing can execute arbitrary code.

What is a "normalized path"?

The unique bracket/dot path of each match, for example $.store.book[2].title. Use it to reference the value precisely in tests or documentation.

Technical notes

The path is tokenised into segments (child, wildcard, index, slice, union, filter, script). Filters are compiled to a small expression tree supporting ==, !=, <, <=, >, >=, =~, in, nin, contains, &&, ||, !, unary minus and + − * / %. Comparisons between mismatched types evaluate to false, mirroring the behaviour of popular JSONPath libraries.