YAML ↔ TOML 转换器 🔒 您的数据不会离开您的浏览器。
在 YAML 和 TOML 配置格式之间转换。
Ctrl+S下载
关于此工具
YAML 和 TOML 都用来描述结构化配置,只是语法不同、常用场景也不同。YAML 主导 Kubernetes 清单、Docker Compose 文件和 CI 流水线(GitHub Actions、GitLab CI);TOML 则是 Rust 的 Cargo.toml 和 Python 的 pyproject.toml 的首选格式。把 Compose 服务的配置搬到 Cargo 项目里(或反过来),通常意味着手动重新敲一遍。这款在线 YAML 转 TOML 转换器(以及反向的 TOML 转 YAML)可双向即时转换,完整保留嵌套表、数组和数据类型。
由 js-yaml 和 smol-toml 驱动,两者仅在本页加载。您的配置文件绝不会离开浏览器——即使文件中包含内部主机名、端口或环境名称也很安全。
常见问题
YAML 通常用来做什么?TOML 又用来做什么?
YAML 是 Kubernetes 清单、Docker Compose 文件和 CI 流水线(GitHub Actions、GitLab CI)的默认选择——它擅长处理深层嵌套。TOML 则是 Rust 的 Cargo.toml 和 Python 的 pyproject.toml 使用的格式——读起来更像 .ini 文件,适合需要扁平、易手动编辑配置的场景。当你把容器项目的设置迁移到 Rust 或 Python 项目(或反过来)时,经常需要在两者间转换。
在 YAML 和 TOML 之间转换后,注释还会保留吗?
不会——这是一个常见的坑。YAML 和 TOML 的解析器在读取文档时都会丢弃注释,只有数据本身会保留下来。本工具把输入解析成内存中的对象,再从零重新序列化,因此任何一种格式里的 `#` 注释在输出中都会消失。如果某条注释记录了重要信息,请之后手动把它补回去。
array-of-tables 语法([[section]])能正确往返转换吗?
可以。TOML 的 `[[section]]` 本质上只是一个数组,只不过它的元素恰好是表(对象)。转换 TOML → YAML 时,它会变成普通的 YAML 映射序列;把这个序列再转回 TOML,`[[section]]` 结构会被重新生成,因为 smol-toml 能识别"元素全是普通对象的数组",并自动为其输出 array-of-tables 语法。
我的 YAML 或 TOML 数据会被上传到什么地方吗?
不会。转换完全在您的浏览器中运行,使用的是 js-yaml 和 smol-toml 这两个 JavaScript 库——您在这里输入或粘贴的任何内容都不会发送到服务器。因此即使配置文件中包含内部主机名、凭据占位符或其他与环境相关的细节,使用本工具也是安全的。
如何把 docker-compose.yml 里的配置转换成 Rust 或 Python 项目用的 TOML?
切换到"YAML → TOML"标签页,粘贴 docker-compose.yml 中相关的部分(例如某个服务的 `environment:` 块,或你自己加的自定义配置块),右侧会立即显示等效的 TOML——可以直接粘贴进 Cargo.toml、pyproject.toml,或应用读取的任何自定义 `.toml` 配置文件。注意,粘贴的整份内容在顶层必须是一个对象;如果你从 `services:` 开始粘贴整个 compose 文件也没问题,因为那是一个映射,但如果只粘贴一个裸列表(比如单独的 `ports:` 数组),会提示错误,因为 TOML 无法把数组作为顶层文档表示。
除了 YAML 转 TOML,我也能把 TOML 转回 YAML 吗?
可以——这是一个双向转换器。点击"TOML → YAML"标签页(或者在完成一次 YAML → TOML 转换后点击"交换"),粘贴 TOML 即可得到对应的 YAML,输出会应用你选择的缩进宽度。两个方向都采用相同的"先解析、再重新序列化"方式,因此嵌套表、数组和 array-of-tables 在任一方向上都能正确转换。