ToolFeather
Developer / SEORuns in your browser

JSON to TOML Converter

Convert JSON to valid TOML 1.0: simple values first, nested objects as [tables], arrays of objects as [[arrays of tables]], and ISO date strings as native TOML dates.

Quick presets

JSON to TOML Converter

JSON
TOML

Runs in your browser — nothing you enter is uploaded or stored.

ToolFeather · JSON → TOML
Scratchpad auto-saved
Stored in this browser (localStorage)
Step-by-step~40s read

How it works — in four simple steps

No signup and nothing to install — it all runs in your browser.

1

Add your JSON

Paste it into the left box, press Open file, or drag a .json file onto it. Sample loads a realistic example.

2

Set the options

Adjust the options above the boxes — the output updates instantly as you change them.

3

Check the result

Read the status line: it reports rows, keys and any value that couldn't be represented in TOML.

4

Copy or download

Copy the TOML or download it as a .toml file. Nothing was uploaded at any point.

Pro tip

TOML has no null: replace nulls with a real default before converting if the key must exist.

Features

Native TOML dates

ISO-8601 strings such as 2026-10-21T09:30:00Z can be written as real TOML date-times instead of quoted strings.

Private by design

Parsing and conversion run in your browser with JavaScript — your data is never uploaded, logged or stored.

About the JSON to TOML Converter

TOML can represent almost everything JSON can, but it organises it differently. Simple key/value pairs must come before any sub-table in a section, nested objects are written as [table] headers with dotted paths ([server.timeouts]), and arrays of objects use the [[double bracket]] syntax once per element. The serializer here does that ordering for you, so the output is valid TOML even when your JSON mixes values and objects in any order.

Strings are written as TOML basic strings with the required escapes, keys are left bare when they're made of letters, digits, _ and - and quoted otherwise, and arrays of simple values stay inline (ports = [80, 443]). With ISO strings → TOML dates switched on, strings like 2026-10-21 or 2026-10-21T09:30:00Z are written unquoted as real TOML dates, which is what tools like Cargo and Hugo expect for date fields.

Two JSON features have no TOML equivalent. null doesn't exist in TOML, so null values are left out and listed in a warning. And a TOML document must be a table, so a top-level JSON array is wrapped under an items key. Everything else round-trips through TOML to JSON.

Examples

An application config in JSON with nested objects, an array of objects, an ISO date and a null value that TOML can't hold.

JSON input
{
  "title": "Feather API",
  "released": "2026-10-21",
  "owner": { "name": "Pratik", "email": null },
  "server": { "host": "0.0.0.0", "port": 8080, "tls": { "enabled": true, "cert": "/etc/ssl/feather.pem" } },
  "workers": [
    { "name": "thumbnails", "concurrency": 4 },
    { "name": "emails", "concurrency": 2 }
  ],
  "allowed_origins": ["https://toolfeather.com", "http://localhost:3000"]
}
TOML output
title = "Feather API"
released = 2026-10-21
allowed_origins = ["https://toolfeather.com", "http://localhost:3000"]

[owner]
name = "Pratik"

[server]
host = "0.0.0.0"
port = 8080

[server.tls]
enabled = true
cert = "/etc/ssl/feather.pem"

[[workers]]
name = "thumbnails"
concurrency = 4

[[workers]]
name = "emails"
concurrency = 2

This output was produced by the converter on this page with the default options — load it with the “App config” preset above and change any option to see the effect.

How JSON maps to TOML

In JSONBecomes in TOML
"port": 8080port = 8080
Nested object "server": {…}[server] section
Object inside object[server.timeouts]
Array of objects[[workers]] repeated per element
"tags": ["a", "b"]tags = ["a", "b"]
"date": "2026-10-21"date = 2026-10-21 (native date)
"x": nullomitted, with a warning
Key "my key""my key" = … (quoted key)

Things that trip people up

JSON vs TOML at a glance

PropertyJSONTOML
SpecificationRFC 8259 (2017) · ECMA-404TOML 1.0.0 (2021)
File extension.json.toml
Media typeapplication/jsonapplication/toml
Data typesstring, number, boolean, null, object, arraystring, integer (64-bit), float, boolean, date-time, array, table
CommentsNoYes #
NestingUnlimitedTables and dotted keys

Frequently asked questions

5 answers
Why are some JSON keys missing from the TOML?
Those keys had null values. TOML has no null type, so they're omitted, and the status line lists each one.
How are arrays of objects written in TOML?
As an array of tables: a [[name]] header followed by that element's keys, repeated for each element.
Is the output valid TOML?
Yes. It follows the TOML 1.0.0 grammar; you can confirm it by pasting the result into TOML to JSON, which uses a strict 1.0 parser and reports any error by line.
Can I generate a Cargo.toml or pyproject.toml from JSON?
Yes — build the structure in JSON (package, dependencies, tool sections) and convert. Keys like requires-python stay bare because dashes are allowed in TOML keys.
Is my data uploaded anywhere?
No. The JSON is parsed and converted by JavaScript in your browser tab; nothing is sent to a server, so it is safe for internal exports, customer lists and configuration files with secrets.