100% local — your data never leaves your browser

JSON to TOML — Config You Can Read

Convert JSON to TOML. Tables, dotted keys and arrays of tables come out as a configuration a person can read and edit by hand.

Instant Private Zero cookies

JSON input

TOML output

What this tool does

Nested objects become tables; arrays of objects become arrays of tables.

{
  "db": { "host": "localhost", "pool": { "size": 10 } },
  "servers": [{ "name": "a" }, { "name": "b" }]
}
[db]
host = "localhost"

[db.pool]
size = 10

[[servers]]
name = "a"

[[servers]]
name = "b"

The root has to be an object: a TOML file is a table, so a JSON array at the top has nowhere to hang its keys.

Null is the one that stops it

TOML has no null value, and the two ways of pretending otherwise are both wrong:

  • dropping the key changes what the file says — a setting that is absent is not a setting set to nothing;
  • writing "" invents a value that was not there.

So the conversion stops and tells you which key. It is the only place in this conversion where a valid JSON document is refused, and it is refused because finishing would mean lying.

Integers beyond 64 bits are written as they are

{ "id": 12345678901234567890 }

comes out with all twenty digits. TOML integers are 64-bit signed, so that value is outside the range and a strict reader will reject the file.

That is deliberate. The alternative — rounding it to 12345678901234567000, which is what a converter parsing through a double does — hands you a file that parses cleanly and contains a different number. A loud failure beats a quiet lie.

Dates stay strings

JSON has no date type, so "2026-01-01" arrives as text and leaves as "2026-01-01", quoted.

TOML does have native dates, and using one would mean deciding that the author meant a date. Sometimes they did; sometimes that string is a product reference, a folder name, a version. JSON already told us it was text, and there is no reason to argue with it.

Private by design

Everything runs locally in your browser with JavaScript. Your data is never uploaded, which makes the tool safe for sensitive content, and it keeps working offline.

Frequently asked questions

Why does a null stop the conversion?
Because TOML has no null, and both ways of faking it are wrong. Dropping the key changes what the file says — an absent setting is not a setting set to nothing. Writing an empty string invents a value. The conversion stops and names the key, so the decision stays yours.
My ID is longer than 64 bits. What happens?
It is written as it stands. TOML integers are 64-bit signed, so a twenty-digit value is outside the range and a strict reader will reject the file — loudly. That is the better failure: the alternative is rounding it to a different number and handing you a file that parses and lies.
Why is my date a quoted string?
Because it was a string in the JSON. TOML does have native dates, but writing one would mean deciding that `"2026-01-01"` is a date rather than a product reference or a folder name. JSON told us it was text, so text it stays.

Related converters