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": "Caching Without Tears", "author": "Ethan Malik", "publishedAt": "2026-06-29", "tags": [ "api", "nodejs", "typescript" ], "comments": 19, "likes": 115 }, { "id": "post-2", "title": "Caching Without Tears", "author": "Ethan Malik", "publishedAt": "2026-08-14", "tags": [ "nodejs", "guide", "edge" ], "comments": 15, "likes": 126 } ], "analytics": { "totalViews": 2559, "uniqueVisitors": 931 } }, "users": [ { "id": "user-1", "name": "Mateo", "role": "editor", "email": "mateo@signal.build" }, { "id": "user-2", "name": "Elena", "role": "admin", "email": "elena@rustic.app" }, { "id": "user-3", "name": "John", "role": "contributor", "email": "john@rustic.app" } ], "settings": { "theme": "light", "notifications": true, "language": "en" } }
Output
Canonical (RFC 8785)
Pretty (sorted keys)
Copy
{ "blog": { "posts": [ { "id": "post-1", "title": "Caching Without Tears", "author": "Ethan Malik", "publishedAt": "2026-06-29", "tags": [ "api", "nodejs", "typescript" ], "comments": 19, "likes": 115 }, { "id": "post-2", "title": "Caching Without Tears", "author": "Ethan Malik", "publishedAt": "2026-08-14", "tags": [ "nodejs", "guide", "edge" ], "comments": 15, "likes": 126 } ], "analytics": { "totalViews": 2559, "uniqueVisitors": 931 } }, "users": [ { "id": "user-1", "name": "Mateo", "role": "editor", "email": "mateo@signal.build" }, { "id": "user-2", "name": "Elena", "role": "admin", "email": "elena@rustic.app" }, { "id": "user-3", "name": "John", "role": "contributor", "email": "john@rustic.app" } ], "settings": { "theme": "light", "notifications": true, "language": "en" } }