The JSON size analyzer measures exactly how big your JSON payload is and, more usefully, tells you which parts of it are taking up the space. Paste an API response, a config file or a state blob and it reports the total byte size, the number of keys, the maximum nesting depth and a ranked list of the heaviest paths so you can see at a glance what to trim.
Everything runs in your browser. Nothing you paste is uploaded, logged or sent to a server — the analysis is plain JavaScript on your own machine, so it is safe to inspect production responses, tokens and customer data. There is no signup, no size paywall and no Pro tier; it is free forever.
It is built for developers optimizing bandwidth and bundle size, backend engineers auditing bloated API responses, and anyone debugging a payload that is unexpectedly large. Instead of guessing, you get a byte-accurate breakdown of where the weight lives — a single base64 image, a verbose array or a deeply nested object.
Total size is the minified UTF-8 byte length of your JSON, measured with TextEncoder — the same number that would travel over the wire once whitespace is stripped. Multi-byte characters (emoji, accents, non-Latin scripts) are counted as their real byte cost, not as one character each, so the total matches what a server would actually send.
Every subtree is measured by its own JSON byte size, then the top 10, 25 or 50 are listed largest-first with their path, byte size, percent of the total and value type. Paths use dot and bracket notation like `profile.links.site` and `scores[3]`, matching the flattener, so you can jump straight to the offending value.
By default the ranking includes whole objects and arrays, which surfaces heavy branches like an entire `profile` object. Flip on Leaves only to rank just the individual scalar values — strings, numbers, booleans and null — when you want to find the single fields that dominate rather than their containers.
Alongside the size breakdown you get the total key count across the whole document and the maximum nesting depth. These are quick health signals: a very high depth can slow parsers and complicate access, and a runaway key count often points to data that should be paginated or normalized.
No. The entire analysis runs locally in your browser with JavaScript — nothing is uploaded, logged or sent to a server. You can disconnect from the internet and it still works, so it is safe for production payloads and sensitive data.
It is the UTF-8 byte length of the minified JSON, measured with the browser's TextEncoder. That is the true wire size once whitespace is removed, and multi-byte characters like emoji are counted at their real byte cost.
No — the reported sizes are raw, uncompressed bytes. Gzip compression needs an asynchronous streaming API that would not fit this tool's instant, synchronous design. In practice gzip shrinks JSON by roughly 60–90%, so your compressed transfer size will be much smaller than the raw total shown here.
Subtree mode (the default) ranks whole objects and arrays too, so you see heavy branches like an entire nested object. Leaves-only mode ranks just individual scalar values, which is better for finding the single fields — a long string or base64 blob — that dominate the payload.
Percentages are each path's share of the total, but nested paths overlap: a parent object's bytes already include its children, and structural characters like braces and commas are not attributed to any single path. In leaves-only mode the leaf values also exclude the key names and punctuation around them, so the sum is naturally below 100%.