JSON Tools

Make sense of any JSON: format it, check it against a schema, search it as a tree, crunch the numbers, and convert it to whatever format you need. Learn more

Standard

JSON Array Group-By/Aggregate Tool

Group a JSON array by any field and sum, average, count, min or max another field per group

Standard

JSON Array Statistics

Min/max/average/sum for a numeric field.

Standard

JSON Array ⇄ JSONL (NDJSON) Converter

Convert a JSON array to line-delimited JSONL/NDJSON, or back again, in either direction

Standard

JSON Deep Merge

Recursively combine two objects.

Standard

JSON Diff

Compare two JSON documents key by key.

Standard

JSON Duplicate Key Finder

Catch duplicate keys in raw JSON text before JSON.parse silently drops them

Standard

JSON Flatten/Unflatten

Nested keys ↔ dot notation.

Quick

JSON Formatter/Beautifier

Clean, readable indentation for messy JSON.

Standard

JSON Key Renamer

Rename object keys everywhere in a nested JSON structure, without ever touching values

Quick

JSON Minifier

Strip all whitespace to shrink JSON.

Standard

JSON Redactor

Mask sensitive keys before sharing.

Advanced

JSON Schema Validator

Validate data against types, required fields, ranges and patterns.

Quick

JSON Size/Depth Analyzer

Size, depth, key and type counts.

Quick

JSON Sort Keys

Alphabetise keys, recursively.

Quick

JSON String Escape/Unescape

Escape text for a JSON string, or unescape it.

Standard

JSON to Go/Python/Rust Struct

Struct or dataclass from a sample.

Standard

JSON to Markdown/HTML Table

Array of objects, turned into a table.

Standard

JSON to TypeScript

Generate a TypeScript interface from JSON.

Quick

JSON Tree Viewer

Browse and search JSON as a collapsible tree.

Quick

JSON Validator

Check whether JSON is valid, with a clear error.

Standard

JSON ↔ CSV Converter

Array of objects to CSV, or CSV back to JSON.

Quick

JSON ↔ Query String

Flat objects to/from URL params.

Standard

JSON ↔ XML Converter

Convert JSON to XML, or XML back to JSON.

Standard

JSON ↔ YAML Converter

Convert JSON to YAML, or YAML back to JSON.

Standard

JSONL Formatter & Validator

One JSON value per line, error-checked.

Advanced

JSONPath Tester

Try JSONPath-style expressions against your data.

Standard

Mock JSON Generator

Random test records from a sample shape.

Everything you need to read, fix and transform JSON

JSON is the language of APIs, config files and app data. When you're working with it, the right tool saves real time. Paste a messy response into the JSON Formatter to make it readable, or the JSON Validator to find out exactly which line and column is broken. For big payloads, the Tree Viewer lets you fold away branches and search for a key or value. The Size Analyzer shows how deep and heavy a document really is.

Moving data between systems? Convert JSON to and from CSV for spreadsheets, YAML for config files, XML for older services, JSON Lines for logs and data pipelines, and URL query strings. Need a table for documentation? JSON to Table produces Markdown or HTML in one step.

For reshaping data, there's Flatten/Unflatten, Deep Merge, Key Renamer and Sort Keys. To understand data, use the Group-By/Aggregate tool and Array Statistics, which give you quick totals and averages without opening a spreadsheet, and the JSONPath Tester to pull out exactly the values you need. JSON Diff shows what changed between two versions, down to a single item in a list.

Developers can turn a sample response straight into TypeScript interfaces or Go, Python and Rust types, check data against a JSON Schema, and create test data with the Mock JSON Generator. Before you paste a payload into a ticket or chat, the JSON Redactor masks passwords and tokens. Everything runs in your browser, so API keys and customer data stay on your machine.

Questions and answers

What's the difference between the JSON Validator and the JSON Schema Validator?
The JSON Validator checks syntax: is this valid JSON at all, and if not, which line and column is wrong (a missing comma, a stray quote)? The JSON Schema Validator assumes the JSON is already valid and checks its content against rules you define, such as required fields, types, number ranges and allowed values. Use the first when something won't parse and the second when it parses but might contain the wrong data.
Should I use JSON Diff or JSON Sort Keys to compare two files?
JSON Diff compares the data itself, key by key and array item by item, and ignores key order, so it's usually all you need. Sort Keys is useful when you want to compare files in a general-purpose text diff tool or in version control. Sorting both files first means a reordered key doesn't show up as a change.
JSON to TypeScript or JSON to Go/Python/Rust Struct: what's the difference?
They do the same job for different languages. Both look at every item in your sample, not just the first, so a field that's sometimes missing or null is marked optional. JSON to TypeScript writes interfaces and union types. The Struct generator writes Go structs with json tags, Python dataclasses, or Rust structs ready for serde, renaming keys that aren't valid identifiers in that language.
When should I use JSON Lines (JSONL) instead of a normal JSON array?
Use JSON Lines when data is written or read one record at a time, as in log files, data exports and machine-learning datasets. Each line is a complete JSON value, so a file can be appended to and processed line by line without loading it all. A normal array suits API responses and config. The Array ⇄ JSONL Converter switches between the two, and the JSONL Formatter checks every line and reports broken ones by line number.
Why does the Group-By tool give a different total from Array Statistics?
Array Statistics only offers fields where every item has a number, and works on the whole array. The Group-By tool splits the array into groups first, then totals each group. It skips missing or non-numeric values (and tells you how many) but still counts those items in each group. If an item lacks the field you chose, the two tools won't match, and the Group-By tool's skipped count shows why.