Developer TOOL

JSON Formatter

Turn a single line of JSON into something a person can read. Choose two spaces, four spaces or tabs, and optionally sort every key at every depth so two exports of the same object line up for comparison. The result is rebuilt in your browser, so the payload never travels.

Processed locally in your browser — your file is never uploaded

DEVELOPERJSON Formatter
Processed locally
Input
Output

Two spaces is the common convention. Four matches Python and some editor defaults; tabs match Go and Makefiles.

Applies at every depth, including objects inside arrays. Handy for diffing two responses.

Your text never leaves this page.

How json formatter works

  1. Paste your JSONDrop in a response body, a config file or a snippet copied from a terminal.
  2. Choose the shapePick the indentation width, and turn on key sorting if you are comparing two documents.
  3. Take the resultThe formatted JSON appears immediately, with a download button for a file.

What you get

Pretty-print JSON with the indentation you actually want. Everything happens inside this page: the file is read by your browser, transformed in memory and handed straight back to you as a download. There is no upload queue, no waiting for a server, and nothing left behind when you close the tab.

Supported formats

This tool works on text you paste or type, so there is no file format to worry about. Nothing you type is sent anywhere.

Limitations, stated up front

  • Key sorting is applied recursively, which can be wrong for arrays of records where order is meaningful — though the array order itself is always preserved.
  • Very deeply nested documents are limited by the browser’s own stack, not by Furtu. A thousand levels is fine; ten thousand is not.

Frequently asked questions

Does formatting change the data?

No. The value is parsed and re-serialised, so the structure, the numbers and the strings are the same. Two things do shift: key order is rebuilt in the order the parser found it, and a number written as 1.0 comes back as 1, because the JavaScript value it becomes is 1. Neither changes what the data means.

Why does my JSON fail to parse when it looks fine?

Three things account for most of it. A trailing comma before a closing brace is not valid JSON. A byte order mark at the start of the file is invisible but forbidden. And a smart quote pasted from a word processor is not a JSON string delimiter. The validator names the line and column, which is usually enough to spot all three.

Can it handle a very large payload?

Yes, up to whatever the browser will hold in memory. A fifty-megabyte response is slow to reformat but works, because the whole thing is parsed once rather than in a loop. Furtu shows the input and output sizes so you can see what happened.

Is my JSON uploaded anywhere?

No. Parsing and re-serialising both use the JSON built into your browser, so the bytes stay in the tab. Nothing is logged, and reloading the page is enough to discard it.