Example
Input (left vs right JSON)
Left: {"name":"yutils","version":"0.1.0","tools":50}
Right: {"name":"yutils","version":"0.2.0","tools":55,"new":true}Output
"name": "yutils" - "version": "0.1.0" + "version": "0.2.0" - "tools": 50 + "tools": 55 + "new": true
Note
Keys are sorted before comparing, so object-key order differences do not show up as diffs. Arrays compare positionally by index.
Usage / FAQ
When to use
- Compare two versions of an API response to spot regressions or new fields
- Visualize changes between two configuration JSON files
- Track exactly which field flipped in a single object
- Compare test snapshots: expected vs actual
- Make changes in deeply nested JSON easy to spot via line-based diff
FAQ
- Q.Do different object key orders show as a diff?
- A.No. Both sides are sorted before comparing, so semantically identical objects diff to zero.
- Q.How are arrays handled?
- A.Arrays are order-sensitive — `[1,2,3]` vs `[3,2,1]` shows all three positions as changes.
- Q.What if my JSON is invalid?
- A.Parsing errors surface immediately. It is safer to validate each side with the json-formatter tool first.
Fun facts
JSON Patch (RFC 6902, 2013) is the standard for unambiguously describing changes to a JSON document — an array of 6 operations (add / replace / remove / move / copy / test). It's most commonly used as the body format for HTTP PATCH (RFC 5789).
RFC 6902 (2013)JSON Merge Patch (RFC 7396, 2014) takes a different approach — the patch *is* a new JSON document. `null` signals deletion, objects are merged recursively. It's intuitive, but it can't express 'set a property to null,' which is why the two standards (6902 vs 7396) end up serving different use cases.
RFC 7396 (2014)The split — 6902 is path-based and more expressive (array index ops, atomic test), while 7396 is a recursive merge and simpler. The same edit becomes `[{op:"remove", path:"/a/b"}]` in one and `{a: {b: null}}` in the other. That's why different APIs pick different sides.
Wikipedia — JSON Patch
Related tools
- JSON Formatter / Validator
Format, validate, and minify JSON strings. Adjust indent and optionally sort keys. Runs entirely in your browser.
- String Case Converter
Convert strings between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case — all six cases shown side-by-side.
- Regex Tester
Test JavaScript regular expressions with live match results. Supports g/i/m/s/u/y flags and capture groups.
- Markdown Preview
Render Markdown to HTML side-by-side. Supports CommonMark + GFM (tables, fenced code, task lists). marked is lazy-loaded.
- HTML → Markdown
Convert HTML into Markdown. Headings, lists, links, code, tables, blockquotes. Uses the browser's DOMParser — accurate, 0 dependency.
- YAML ↔ JSON
Convert between YAML and JSON. Tolerates comments and multiline strings on the YAML side. yaml is lazy-loaded.
- Text Diff
Compare two texts and highlight added/removed lines, words, or characters.
- CSV ↔ JSON
Convert between CSV and JSON. Handles quoted fields, custom delimiters, and header rows.
- SQL Formatter
Format SQL queries with proper indentation and keyword casing. Supports PostgreSQL, MySQL, SQLite, and standard dialects.
- XML Formatter
Pretty-print or minify XML with attribute preservation. Handles SOAP, sitemaps, and config files.
- XML ↔ JSON
Convert between XML and JSON with attribute and element handling.
- Smart Paste
Paste any text and get tool recommendations — JSON, JWT, Base64, URL, UUID, Cron, and 9 more types auto-detected.
- Lorem Ipsum
Generate placeholder text in words, sentences, or paragraphs. Classic Lorem Ipsum or randomized.
- JSON Path
Query JSON with JSONPath expressions ($.store.book[*].author etc.) and inspect matches.
- JSON Schema Validator
Validate JSON data against a JSON Schema (Draft 2020-12). Powered by Ajv with format support.
- JSON Schema Generator
Generate a JSON Schema (Draft 2020-12) from a sample JSON. Infer types, required fields, and nested structures automatically.
- HTML Formatter
Beautify or minify HTML with proper indentation, attribute alignment, and configurable wrap.
- CSS Formatter
Beautify or minify CSS with proper indentation. Configurable selector and property style.
- JavaScript Formatter
Beautify or minify JavaScript with brace style and indent options. Powered by js-beautify.
- TOML ↔ JSON
Convert between TOML (Tom's Obvious Minimal Language) and JSON. Used in Cargo.toml, pyproject.toml, etc.
- INI ↔ JSON
Convert INI configuration to JSON and back. Supports sections, comments (; or #), and key=value.
- JSON → TypeScript
Generate TypeScript interfaces from a JSON sample. Nested objects become separate interfaces.
- JS Object → JSON
Convert a JavaScript object literal (unquoted keys, single quotes, trailing commas, comments) into standard JSON. Lenient parser, strict output.
- Slug Generator
Convert text into a URL-safe slug. Configurable separator, lowercase, and accent stripping.
- ASCII Tree
Convert indented text or path list into a box-drawing tree (├── │ └──).
- Diff Patch
Generate a unified diff (-u) patch from two text inputs. Compatible with `git apply` / `patch -p0`.
- Mock Data
Generate fake JSON records — names, emails, UUIDs, dates, and more. 0 dependency.
- MongoDB Extended JSON
Convert MongoDB Extended JSON (EJSON) between Canonical and Relaxed forms, or strip BSON wrappers to plain JSON. Recognizes 16 wrapper types ($oid/$date/$numberLong/$numberDecimal/$binary/...).