TOML to YAML Converter
Convert TOML configuration to YAML: [tables] become nested maps, [[arrays of tables]] become lists, and values YAML would misread are quoted automatically.
TOML to YAML Converter
Runs in your browser — nothing you enter is uploaded or stored.
Scratchpad auto-saved
How it works — in four simple steps
No signup and nothing to install — it all runs in your browser.
Add your TOML
Paste it into the left box, press Open file, or drag a .toml file onto it. Sample loads a realistic example.
Set the options
Adjust the options above the boxes — the output updates instantly as you change them.
Check the result
Read the status line: it reports rows, keys and any value that couldn't be represented in YAML.
Copy or download
Copy the YAML or download it as a .yaml file. Nothing was uploaded at any point.
Dates are written as quoted ISO strings so every YAML parser reads them identically.
Features
Document marker
Optionally start the file with --- for tools that expect an explicit YAML document.
Private by design
Parsing and conversion run in your browser with JavaScript — your data is never uploaded, logged or stored.
About the TOML to YAML Converter
TOML and YAML are both human-friendly configuration formats, but they organise nesting differently: TOML uses section headers like [server.tls], YAML uses indentation. The data model underneath is nearly the same — maps, lists, strings, numbers, booleans and dates — so converting TOML to YAML is lossless for almost every real file.
The TOML is parsed with a strict TOML 1.0.0 parser (tables, dotted keys, inline tables, arrays of tables, every string form), then written as block-style YAML with two-space indentation. An array of tables like [[workers]] becomes a YAML sequence of maps under workers:. TOML's date-times are written as quoted ISO strings so every YAML parser reads them back identically — unquoted dates are auto-converted to date objects by some YAML libraries but not others.
TOML comments are not carried across, since parsers don't expose them; re-add any that document important settings. If you're migrating a tool's config, check that the target tool reads the same key names — the converter keeps names exactly, including dashes.
Examples
A Hugo site configuration with nested menu tables, an array of tables and parameters.
baseURL = "https://example.org/"
title = "Feather Notes"
paginate = 10
[params]
description = "Small notes on data formats"
showReadingTime = true
[[menu.main]]
name = "Blog"
url = "/posts/"
weight = 1
[[menu.main]]
name = "About"
url = "/about/"
weight = 2baseURL: https://example.org/
title: Feather Notes
paginate: 10
params:
description: Small notes on data formats
showReadingTime: true
menu:
main:
- name: Blog
url: /posts/
weight: 1
- name: About
url: /about/
weight: 2This output was produced by the converter on this page with the default options — load it with the “Hugo config” preset above and change any option to see the effect.
How TOML maps to YAML
| In TOML | Becomes in YAML |
|---|---|
[server] / port = 8080 | server: / port: 8080 |
[[workers]] | workers: list of maps |
Inline table { read = 30 } | nested map |
started = 2026-10-21T09:30:00Z | started: "2026-10-21T09:30:00Z" |
Multi-line """…""" | | block scalar (longer text) |
enabled = true | enabled: true |
Things that trip people up
- Comments are lost. Neither format's parsers expose comments, so they can't be converted. Copy important ones by hand.
- Dates are quoted. That's deliberate: unquoted YAML dates become date objects in PyYAML but strings in many JavaScript parsers. Quoted, they're consistent everywhere.
- Float formatting.
3.0in TOML is the number 3 and is written as3. If a consumer needs a float, it should parse it as one; YAML itself treats 3 and 3.0 as the same value in most loaders. - Key names with dots. A quoted TOML key like
"a.b" = 1is a single key; it's written asa.b: 1, which YAML also treats as one key.
TOML vs YAML at a glance
| Property | TOML | YAML |
|---|---|---|
| Specification | TOML 1.0.0 (2021) | YAML 1.2.2 (2021) |
| File extension | .toml | .yaml / .yml |
| Media type | application/toml | application/yaml (RFC 9512) |
| Data types | string, integer (64-bit), float, boolean, date-time, array, table | string, int, float, bool, null, map, sequence (+ dates in many parsers) |
| Comments | Yes # | Yes # |
| Nesting | Tables and dotted keys | Unlimited (indentation) |
- TOML: There is no null in TOML, and the document root must be a table (key/value map), not an array.
- YAML: YAML 1.2 is a superset of JSON; YAML 1.1 parsers (still common) also read yes/no/on/off as booleans — the “Norway problem”.