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
{ "roadmap": { "quarter": "2024-Q4", "milestones": [ { "id": "m-1", "name": "Edge cache warmup", "owner": "John", "status": "blocked", "eta": "2026-07-28" }, { "id": "m-2", "name": "Realtime alerts", "owner": "John", "status": "on-track", "eta": "2026-07-26" }, { "id": "m-3", "name": "Partner API beta", "owner": "John", "status": "at-risk", "eta": "2026-07-17" } ] }, "squads": [ { "name": "Harbor", "members": [ "Ravi", "Elena", "John", "Liang" ], "velocity": 40 }, { "name": "Quill", "members": [ "Elena", "Ravi", "Liang" ], "velocity": 20 }, { "name": "Orion", "members": [ "Elena", "Mateo", "Ravi" ], "velocity": 37 } ], "experiments": [ { "id": "exp-1", "hypothesis": "Guided onboarding lowers drop-off", "metric": "supportTickets", "result": "positive" } ] }
Output
Canonical (RFC 8785)
Pretty (sorted keys)
Copy
{ "roadmap": { "quarter": "2024-Q4", "milestones": [ { "id": "m-1", "name": "Edge cache warmup", "owner": "John", "status": "blocked", "eta": "2026-07-28" }, { "id": "m-2", "name": "Realtime alerts", "owner": "John", "status": "on-track", "eta": "2026-07-26" }, { "id": "m-3", "name": "Partner API beta", "owner": "John", "status": "at-risk", "eta": "2026-07-17" } ] }, "squads": [ { "name": "Harbor", "members": [ "Ravi", "Elena", "John", "Liang" ], "velocity": 40 }, { "name": "Quill", "members": [ "Elena", "Ravi", "Liang" ], "velocity": 20 }, { "name": "Orion", "members": [ "Elena", "Mateo", "Ravi" ], "velocity": 37 } ], "experiments": [ { "id": "exp-1", "hypothesis": "Guided onboarding lowers drop-off", "metric": "supportTickets", "result": "positive" } ] }