YAML TOML Converter
BetaConvert YAML to TOML 1.0 and TOML back to YAML in your browser. Mappings become tables, lists of mappings become arrays of tables, and nulls are handled explicitly.
- Free, no sign-up
- REST + MCP
- Updated
- Reviewed by Olgun Ozoktas
The config is converted in your browser and is not uploaded to FindUtils. Analytics and ads may load on the page.
Tables will appear here..
How to convert YAML to TOML
-
Paste or upload the YAML
Paste the document into the left panel or upload a .yaml or .yml file. The samples are a small app config, a list of services, and a site config. -
Check the root
The YAML root has to be a mapping, because TOML has no top-level list. A document that starts with a sequence is refused with that explanation rather than wrapped in an invented key. -
Choose what happens to nulls
TOML has no null. Drop leaves the key out and lists it, which is usually right. Empty string writes an empty value instead. Either way the affected paths are named under the panels. -
Copy or download
Copy the TOML or download config.toml. Switch the direction to read a TOML file as YAML; the current output moves into the input for a round-trip check.
Common Use Cases
Moving a config into Cargo or pyproject
Hugo and Zola site configs
Reading a TOML file as YAML
Checking a structure quickly
Why convert YAML to TOML in the browser?
YAML and TOML solve the same problem with opposite instincts. YAML nests by indentation and will happily hold anything; TOML is flat, explicit and typed, with tables named in square brackets. FindUtils' YAML TOML Converter reads one and writes the other in the browser, so a settings file can move between a Compose-style YAML world and a Cargo or pyproject world without a CLI and without a detour through JSON on two separate pages.
Mappings become tables, lists of mappings become arrays of tables, and lists of scalars stay inline arrays. The YAML root has to be a mapping because TOML has no top-level list, and a document that breaks that rule is refused with the reason rather than wrapped in a key you did not ask for. Anchors, aliases and merge keys are resolved on load, which means a block built with <<: *defaults is written out in full, because TOML cannot reference another table.
The one thing TOML genuinely cannot express is null, so the choice is yours and it is visible: Drop leaves the key out, Empty string writes an empty value, and either way the affected paths are listed under the panels instead of disappearing. Comments do not survive in either direction. For the other two sides of the triangle, use the JSON YAML Converter and the JSON TOML Converter, and the YAML Validator to check a document first.
How it compares
The usual answers are a CLI such as yj or remarshal, which is a reasonable install for a daily habit and overkill for a one-off, or chaining two web converters through JSON, which loses dates and needs two pastes. This page does it in one step and names what changed: the null keys it dropped, the root it refused, and the line and column of a parse error.
It is honest about its limits. Comments are gone, multi-document YAML is not merged, and a value TOML has no type for is refused rather than approximated. Where a tool has to guess, this one asks or stops.
YAML and TOML Tips
- TOML has no null. Decide between Drop and Empty string deliberately, because a dropped key and an empty string mean different things to the program that reads the file.
- A list of mappings becomes an array of tables written as [[name]]. A list of scalars stays an inline array on one line.
- Anchors, aliases and << merge keys are resolved before the conversion, so a merged block is written out in full. TOML has no way to reference another table.
- Comments are not preserved in either direction. Keep the original file if its comments matter; this page converts data, not documentation.
- A YAML date such as 2026-01-01 is a real date, and TOML keeps it as a date rather than quoting it. Quote the value in the YAML if you meant it as text.