Input XML
Node Details
Select a node to view details
Paste XML, get clean JSON — attributes, repeated elements and text nodes handled correctly
Select a node to view details
Format, validate, and explore JSON — 100% client-side, private by design
Paste XML, get clean JSON — attributes, repeated elements and text nodes handled correctly
Turn CSV rows into JSON arrays of objects — quoted fields, custom delimiters and types handled for you
Flatten nested JSON into clean CSV columns — download Excel-ready .csv files in one click
Compress JSON to a single line and watch exactly how many bytes you save
Compare two JSON documents semantically — key order and whitespace never count as differences
Escape JSON strings for embedding — or unescape stringified logs back into readable JSON
One-click repair for broken JSON, JSON5, JS objects, Python dicts and truncated LLM output.
Turn any JSON payload into clean TypeScript interfaces or type aliases — merge arrays, detect optional fields and unions.
Parse YAML configs — K8s, Docker Compose, GitHub Actions — into clean JSON, then explore and edit visually.
Generate clean, idiomatic YAML from any JSON — smart string quoting, compact list style, 2 or 4 space indent.
Serialize JSON to well-formed XML — @_ attributes, repeated elements, text nodes and safe tag names.
Infer a standards-compliant JSON Schema from example data — formats, required keys, unions and additionalProperties control.
Query any JSON with live JSONPath evaluation — wildcards, recursive descent, slices and filters, all in your browser.
XML attributes map to JSON keys with a configurable prefix (default @_). Prefer plain values only? Flip on "Ignore attributes" in one click.
Sibling elements that share a tag name are automatically aggregated into JSON arrays, so lists survive the conversion faithfully.
Numeric and boolean strings such as "42" or "true" become real JSON numbers and booleans. Turn it off to keep everything as strings.
The converted JSON renders immediately in the interactive tree, table, and text views — inspect, edit inline, then copy or download.
Copy an XML document or fragment and paste it into the input panel, or upload a .xml file. Click "Sample" to see a working example.
Pick an attribute prefix (default @_), decide whether to keep attributes, and toggle primitive parsing for numbers and booleans.
Click "Convert to JSON". The result appears in tree, table, or text view — copy it to the clipboard or download it as a .json file.
How formatjson.net compares to traditional server-based JSON formatters and converters
| Capability / Standard | formatjson.net (Client-Side Workbench) | Traditional Server-Based Tools |
|---|---|---|
| Data Processing & Privacy | 100% local in-browser JavaScript — payloads never leave your device | Often uploads JSON/XML/CSV to remote backend servers |
| Confidential API Keys, JWTs & PII | Safe by design — zero network transmission, works offline via Service Worker | Risk of server access logs or third-party data retention |
| Broken & Truncated LLM JSON Repair | 1-click lexical state machine fixes comments, single quotes, trailing commas, Python literals & unclosed brackets | Fails with syntax error on non-strict JSON |
| 64-Bit Snowflake IDs & Leading Zeros | Preserves unsafe integers (> 2^53 - 1) and leading-zero codes ("00123") without precision loss | Silently truncates 64-bit IDs or strips leading zeros |
| Deep Nested Array Exploration | Interactive spreadsheet drill-down ([n items] →) with breadcrumbs, 3-state sorting & inline cell editing | Flat root-only tables or read-only trees |
| Large File Responsiveness | Chunked lazy tree (200 nodes/batch) + paginated table + 150 KB highlight guard | Main-thread DOM freeze on multi-megabyte files |
Attributes are converted into regular JSON properties whose names are prefixed ("@_id" by default, configurable). Elements that have both attributes and text keep the text under a "#text" key. You can also ignore attributes entirely with the options toggle.
Sibling elements sharing the same tag name — like multiple <item> or <book> nodes — are automatically grouped into a JSON array. Single occurrences stay as plain objects or values, keeping the output clean.
Yes. An element containing only text becomes a JSON string (or a number/boolean when type inference is on). When an element has both children and text, the text is stored under the "#text" property so nothing is lost.
No. Conversion runs entirely in your browser using the native DOMParser API. Your XML — including confidential feeds or internal schemas — never leaves your machine.
Yes. The output feeds straight into the full JSON workbench: expand it in the tree, inspect arrays of repeated elements in the table, edit values inline in the details panel, then copy or download the result.