Skip to main content
ShrinkJSON
JSON Canonicalize
Home
Tools
Converters
Blog
Toggle theme
Open Navigation
JSON Canonicalize
Deterministic JSON output for hashing, signing, and comparisons
JSON Input
Generate Sample
{ "blog": { "posts": [ { "id": "post-1", "title": "Edge Deployments in Practice", "author": "Nora Kim", "publishedAt": "2026-02-01", "tags": [ "guide", "nodejs", "performance" ], "comments": 6, "likes": 38 }, { "id": "post-2", "title": "Testing Contracts with Pact", "author": "Sofia Petrov", "publishedAt": "2025-12-23", "tags": [ "typescript", "observability", "api" ], "comments": 3, "likes": 70 } ], "analytics": { "totalViews": 816, "uniqueVisitors": 444 } }, "users": [ { "id": "user-1", "name": "Liang", "role": "maintainer", "email": "liang@signal.build" }, { "id": "user-2", "name": "Elena", "role": "admin", "email": "elena@rustic.app" }, { "id": "user-3", "name": "Ravi", "role": "analyst", "email": "ravi@rustic.app" } ], "settings": { "theme": "dark", "notifications": false, "language": "es" } }
Output
Canonical (RFC 8785)
Pretty (sorted keys)
Copy
{ "blog": { "posts": [ { "id": "post-1", "title": "Edge Deployments in Practice", "author": "Nora Kim", "publishedAt": "2026-02-01", "tags": [ "guide", "nodejs", "performance" ], "comments": 6, "likes": 38 }, { "id": "post-2", "title": "Testing Contracts with Pact", "author": "Sofia Petrov", "publishedAt": "2025-12-23", "tags": [ "typescript", "observability", "api" ], "comments": 3, "likes": 70 } ], "analytics": { "totalViews": 816, "uniqueVisitors": 444 } }, "users": [ { "id": "user-1", "name": "Liang", "role": "maintainer", "email": "liang@signal.build" }, { "id": "user-2", "name": "Elena", "role": "admin", "email": "elena@rustic.app" }, { "id": "user-3", "name": "Ravi", "role": "analyst", "email": "ravi@rustic.app" } ], "settings": { "theme": "dark", "notifications": false, "language": "es" } }