Convert TOML to YAML Online
Convert TOML configuration to YAML, free, in your browser.
title: My Project version: 1.0.0 server: host: localhost port: 8080 database: host: db.example.com name: myapp
Use cases
From Rust and Hugo to Docker and Jekyll
Hugo→Jekyll migration
Convert TOML front matter from Hugo files to YAML for Jekyll, Gatsby, or any modern generator.
Rust projects to CI/CD
Extract data from Cargo.toml or pyproject.toml for use in GitHub Actions or GitLab CI workflows.
100% private
Your configuration never leaves your browser. No servers, no sign-up.
Real-time
Live conversion as you type. TOML syntax errors detected instantly.
How it works
Three steps, no hassle
Paste your TOML
Paste TOML content into the editor. Supports Cargo.toml, pyproject.toml, Pipfile, hugo.toml, and any valid TOML v1.0.
Conversion to YAML
The converter parses your TOML and generates clean, indented YAML 1.2. Everything runs in your browser — nothing is uploaded.
Copy or download the YAML
Get YAML ready for docker-compose.yml, GitHub Actions, Ansible, Kubernetes, or Jekyll/Hugo front matter.
FAQ
Got questions?
The most frequent case is migrating between static site generator ecosystems: Hugo uses TOML as its preferred front matter format (though it also supports YAML), while Jekyll, Gatsby, Eleventy, and most modern generators use YAML. If you are migrating a site from Hugo to another generator, or if you have a content library with TOML front matter that needs to be normalized to YAML, this tool converts each TOML block to its YAML equivalent. Another common scenario is the Rust ecosystem: Rust projects use Cargo.toml for dependency management, but when containerizing them with Docker or defining CI/CD in GitHub Actions, you need to express the same data structure in YAML.
TOML (Tom's Obvious, Minimal Language) was created by Tom Preston-Werner (co-founder of GitHub) in 2013 as a simpler, unambiguous alternative to YAML for configuration files. TOML 1.0 was released in January 2021. Its key characteristics: it uses [bracket-delimited] sections instead of indentation, has explicit data types (RFC 3339 dates, typed arrays, inline tables), and is unambiguous — the same TOML always produces the same data tree, which is not always true of YAML due to its multiple ways of representing the same value. YAML is more expressive and mature (YAML 1.0 in 2001, YAML 1.2 in 2009), but also more prone to indentation errors. TOML is preferred in the Rust ecosystem (Cargo.toml) and modern Python (pyproject.toml, PEP 518/621).
Cargo.toml and docker-compose.yml have conceptually different structures: Cargo.toml defines Rust package metadata, dependencies, and crate features; docker-compose.yml defines container services, networks, and volumes. There is no direct one-to-one conversion with semantic meaning. However, converting Cargo.toml to structural YAML is useful for extracting dependencies, versions, or features and using them as variables in a docker-compose.yml or a GitHub Actions workflow — for example, extracting the package version from [package].version to use as a Docker image tag.
Yes, though with some manual transformation afterwards. pyproject.toml (introduced by PEP 518 in 2016, now the de facto standard for modern Python projects) defines project metadata, dependencies, build tools (poetry, hatch, flit), and linter configuration. Converting it to YAML gives you a structural representation from which you can extract dependencies ([tool.poetry.dependencies]) to generate them in a GitHub Actions workflow (pip install) or create a Conda environment. The tool generates valid YAML that you can edit to match the specific schema of GitHub Actions, GitLab CI, or CircleCI.
In Hugo, TOML front matter is delimited by +++ at the start and end of the Markdown file. In Jekyll and most YAML-based generators, front matter is delimited by --- (three dashes). The migration involves: extracting the TOML block between the +++, converting it to YAML with this tool, and replacing the +++ delimiters with --- in the Markdown file. Standard fields (title, date, tags, draft) translate directly. Hugo-specific fields (aliases, outputs, cascade) may have no Jekyll equivalent and will require manual adaptation.
Yes. TOML arrays convert to YAML lists using the dash (-) syntax. Inline arrays [[1, 2, 3]] convert to YAML flow sequences ([1, 2, 3]) or block sequences depending on length. TOML tables ([section]) convert to nested YAML maps. TOML array of tables ([[products]]) convert to YAML lists of objects, which is the most natural YAML representation for collections of objects sharing the same structure. TOML data types (RFC 3339 dates, booleans, integers, floats) are preserved in their YAML equivalents.
Convert TOML to YAML: Rust, Hugo, and pyproject.toml migrations to DevOps environments
TOML (Tom's Obvious, Minimal Language) was created by Tom Preston-Werner, co-founder of GitHub, in 2013, with the explicit goal of being 'obviously unambiguous' — a direct critique of YAML's complexity, which has multiple ways to represent the same value and whose 1.1 specification contained ambiguities that caused different parsers to behave differently. TOML 1.0 was officially released in January 2021 after eight years of iterative development. The ecosystem that has most adopted TOML is Rust: Cargo, Rust's official package manager, uses Cargo.toml to define crate metadata, dependencies, features, and workspace configuration. Outside of Rust, modern Python has adopted TOML through pyproject.toml (defined by PEP 518 in 2018 and consolidated by PEP 621 in 2021), which centralizes build configuration, package metadata, and tool settings for pytest, mypy, black, and ruff. Hugo, the fastest static site generator (written in Go), adopted TOML as its primary configuration format.
YAML, whose 1.2 specification was published in October 2009, dominates the DevOps ecosystem: GitHub Actions, GitLab CI, CircleCI, Azure Pipelines, and Jenkins (via YAML pipelines) exclusively use YAML for defining CI/CD pipelines. Docker Compose has used YAML since its initial version, Kubernetes uses YAML for all resource manifests, and Ansible uses YAML for playbooks and roles. Helm charts (the Kubernetes package manager) mix YAML with Go templates. The prevalence of YAML in DevOps means Rust projects that use Cargo.toml for project configuration need to express their CI/CD configuration in YAML, and Python projects with pyproject.toml must write their GitHub Actions workflows in YAML. This creates a coexistence of both formats in the same repository that sometimes requires conversion between them.
Static site generator migration is the most visual scenario where TOML→YAML is necessary. Hugo, launched in 2013 by Steve Francia and later actively maintained by Bjørn Erik Pedersen, adopted TOML as its preferred front matter format in early versions. TOML front matter in Hugo is delimited by +++ and can contain the title, date, categories, tags, and any custom data for each page. Jekyll, the oldest static site generator and the one that popularized the front matter concept (created by Tom Preston-Werner in 2008 and currently the engine behind GitHub Pages), uses YAML delimited by ---. Migrating a site from Hugo to Jekyll involves converting thousands of Markdown files with TOML front matter to YAML. While this tool processes one file at a time in the browser, it serves as validation for the conversion before applying a batch script. For large-scale migrations, Python scripts using toml and PyYAML, or Node.js with @iarna/toml and js-yaml, automate the process.