JSON / JSONPath / JMESPath Tester
Paste any API response, run JSONPath and JMESPath side by side, build assertions, and export ready-to-paste code for Postman, Rest Assured, and Playwright. Runs entirely in your browser — your payload never leaves your machine.
JSON payload
[ "alice@example.com", "bob@example.com", "carol@other.com" ]
[ "alice@example.com", "bob@example.com" ]
Why API testers need both JSONPath and JMESPath in one tool
Every REST or GraphQL API test eventually reduces to one question: did the response contain the value we expected, in the shape we expected? JSONPath and JMESPath are the two query languages that answer it — but most online testers only support one. This tool runs both side by side against the same payload so you can pick the right language per assertion, then export the exact code your test framework needs.
What each language is best at
| Feature | JSONPath | JMESPath |
|---|---|---|
| Recursive descent (find any $..email) | ❌ needs explicit path | |
| Filter expressions | ✅ [?(@.active)] | ✅ [?active] |
| Built-in functions (length, sort, max) | ⚠️ limited | ✅ 30+ functions |
| Pipe results through transformations | ❌ | ✅ users | [?active] | length(@) |
| Postman / Rest Assured native support | ✅ first-class | ⚠️ needs library |
| AWS CLI / Ansible / Azure CLI support | ❌ | ✅ native |
| Formal specification | ⚠️ community | ✅ jmespath.org spec |
Common API-testing recipes (copy-paste ready)
$.data.users[?(@.role=='admin')].emaildata.users[?role=='admin'].email$.data.users[?(@.active)].lengthlength(data.users[?active])$.errors[0].messageerrors[0].message$..status[?(@ >= 500)]responses[?status >= `500`].status$.status == 'ok'status == 'ok'$.data.users[*].iddata.users[*].idHow to use this tool with Postman, Rest Assured & Playwright
Four short workflows — pick your framework, follow the numbered steps, paste the exported code straight into your test suite.
- 1In Postman, open your request → Body tab → copy the response JSON.
- 2Paste it into the JSON panel here and write your JSONPath query.
- 3Click Export → Postman to get a ready
pm.testblock. - 4Paste it into the Tests tab of your Postman request and hit Send.
pm.test("user id is 42", () => {
const data = pm.response.json();
pm.expect(jsonpath.query(data, "$.user.id")[0]).to.eql(42);
});- 1Paste your API response JSON into the JSON panel.
- 2Write a JSONPath expression — Rest Assured's GPath is a JSONPath subset.
- 3Click Export → Rest Assured for a
given/when/thenchain. - 4Drop it into your JUnit / TestNG class with matchers like
hasItem().
given()
.when().get("/api/users/42")
.then().statusCode(200)
.body("user.id", equalTo(42));- 1Capture the JSON response from your endpoint (or import via cURL).
- 2Validate it here with JSONPath or JMESPath until you get the expected value.
- 3Click Export → Playwright for a full
test()block. - 4Paste into your
tests/api/folder and runnpx playwright test.
test("GET /users/42", async ({ request }) => {
const res = await request.get("/api/users/42");
const body = await res.json();
expect(body.user.id).toBe(42);
});- 1Export your assertions as Postman tests (step above).
- 2Save the request into a Postman collection and export it as JSON.
- 3Run it headless in CI with
newman run collection.json. - 4Gate PRs on API contracts — see our CI/CD guide.
# .github/workflows/api.yml
- run: npx newman run collection.json \
--env-var baseUrl=$STAGING_URL \
--reporters cli,junitTip: the same JSON payload works across all four frameworks — validate once here, export everywhere. For deeper patterns see our Playwright interview prep and API testing Q&A hub.
Why we built this — features competitors don't have
| Feature | This tool | jsonpath.com | jmespath.org playground |
|---|---|---|---|
| JSONPath + JMESPath in one UI | ✅ | ❌ | ❌ |
| Live assertion builder | ✅ | ❌ | ❌ |
| Postman / Rest Assured / Playwright code export | ✅ | ❌ | ❌ |
| cURL import | ✅ | ❌ | ❌ |
| JSON Schema auto-generation | ✅ | ❌ | ❌ |
| JSON diff between payloads | ✅ | ❌ | ❌ |
| 100% in-browser (safe for internal data) | ✅ | ✅ | ✅ |
| Free, no signup, no ads | ✅ | ✅ | ✅ |
Related resources
- API Testing Interview Questions — the pillar hub for every REST, GraphQL, and contract-testing question you'll face.
- XPath & CSS Selector Generator — same in-browser philosophy, for UI locators.
- Playwright Interview Questions — includes API-testing patterns using Playwright's
requestfixture. - Stefan Goessner's original JSONPath spec
- Official JMESPath specification
Frequently asked questions
1.Is this JSON / JSONPath / JMESPath tester really free?
2.What's the difference between JSONPath and JMESPath?
3.Which JSONPath library does this use?
4.Can I import a cURL command instead of pasting JSON?
5.Does the tool generate Postman, Rest Assured, or Playwright assertion code?
6.Can I chain multiple assertions?
7.What makes this different from jsonpath.com or jmespath.org playground?
8.Does it validate JSON and show error line numbers?
100% in-browser. Zero uploads.
Every byte of your JSON stays on your machine. Safe for internal API payloads, production data, and anything you can't send to a hosted service.