How to use it
- Paste a JSON object into JSON object. The whole text must be one object, with braces at the top.
- Read Check. Green means the object converted; red names the name where the problem is and the reason.
- Copy the TOML output into a file, or download it as config.toml.
How the TOML is laid out
The values of each table are written first, and its sub-tables come after. TOML needs that order, because the values of a table must come before the headers that open its sub-tables. The names keep the order of the JSON.
- An object inside an object becomes a table with its own header, such as [owner], and its values follow the header.
- A list of objects becomes an array of tables: one section for each object, with its header in double brackets.
- A list of numbers or of text stays on one line in square brackets, which TOML allows.
- A number with a point or an exponent is written as a float, so 1.0 stays 1.0. A number without one is written as an integer.
What TOML cannot hold
- A null. TOML has no null, so a name with null stops the conversion and is named in the message. Remove the name or give it a value.
- An integer outside the signed 64-bit range. JSON allows any size, but TOML stops at 9223372036854775807.
- A top level that is a list or a single value. A TOML document is always a table, so the JSON must be an object.
Names that need quotes
A name made only of letters, digits, underscores and dashes is written as it is. Any other name, such as one with a space or a dot, is written in double quotes, and so is an empty name. Quotes, backslashes and control characters in text are escaped the way TOML requires.
Worked example: a list, a float and an object
The JSON below gives one value of each kind the tool writes. Each row gives the JSON value and the TOML line that it becomes.
| JSON value | TOML line |
|---|---|
| "ports": [8000, 8001] | ports = [8000, 8001] |
| "ratio": 1.0 | ratio = 1.0 |
| "owner": {"name": "Ada"} | [owner], then name = "Ada" |
Frequently asked questions
Why do the values of a table come before its sub-tables?
TOML needs each table's own values to come before the headers of its sub-tables. The tool writes the values first, so the file reads correctly and looks like one a person would write by hand.
Why is one number written as 1.0 and another as 1?
A JSON number with a point or an exponent, such as 1.0 or 2e3, is a float in TOML, and a number without one is an integer. The tool keeps that difference, so a float is never written as an integer.
Why does a null stop the conversion?
TOML has no null value, so the tool cannot write one without changing the data. Remove the name that holds the null, or give it a value such as an empty string, and convert again.
Does a date in the JSON become a TOML date?
No. A date in JSON is a string, and a string stays a string, so the TOML keeps the date in quotes. Change the quotes to a date by hand if the TOML file needs a real date value.
Is the JSON I paste sent anywhere?
No. The conversion runs in your browser, and nothing you paste is stored or sent to us. Still, do not paste a password or a token into a page you do not trust.
Sources
Figures and text last checked on Wednesday, November 11, 2026.