YAML TOML 转换器
即时进行 YAML 与 TOML 格式双向转换。支持嵌套对象、表格数组和常见数据类型。免费在线工具,在浏览器中处理,无需上传。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
转换示例
YAML 输入
database:
host: localhost
port: 5432
enabled: true
tags:
- web
- backend
等效 TOML 输出
tags = [ "web", "backend" ]
[database]
host = "localhost"
port = 5432
enabled = true
日期和时间
YAML 时间戳写成 TOML 日期,不写成字符串:
release:
date: 2026-10-01
at: 2026-10-01 09:30:00 +9
utc: 2026-10-01T00:30:00Z
label: "2026-10-01"
ratio: .inf
[release]
date = 2026-10-01
at = 2026-10-01T09:30:00.000+09:00
utc = 2026-10-01T00:30:00.000Z
label = "2026-10-01"
ratio = inf
只有日期时写成 TOML 本地日期。日期时间保留偏移,写成 +09:00;没有偏移的日期时间写成 Z,因为 YAML 时间戳类型把它读作 UTC。加引号的 “2026-10-01” 仍是字符串,.inf 写成 TOML 的 inf。TOML 日期只保留到毫秒,09:30:00.123456Z 这类更精确的时间戳和 2026-02-31 这类不存在的日期会停止转换。
反方向时,TOML 解析器只保留到毫秒、舍去后面的位数,所以更精确的时间会停止 TOML → YAML:[build] 表里的 started = 2026-10-01T09:30:00.123456Z 得到 未转换:YAML 无法原样保存下列值:/build/started:2026-10-01T09:30:00.123456Z 的精度超过毫秒。TOML 本地日期时间没有偏移,而 YAML 把不带偏移的时间戳读作 UTC,所以 [build] 表里的 started = 2026-10-01T09:30:00 也会停止:未转换:YAML 无法原样保存下列值:/build/started:2026-10-01T09:30:00 是本地日期时间,YAML 会把不带偏移的时间读作 UTC。YAML → TOML 时,YAML 的 -0.0 写成 TOML 的 -0.0,保留负号;ratio: 1.0 这样的整数值浮点数仍写成浮点数(ratio = 1.0)。
TOML 无法保存的值
值在转换中会改变时,工具不转换,状态栏按 JSON Pointer 列出每个字段和原因:
service:
id: 9007199254740993
owner: ~
未转换:TOML 无法原样保存下列值:/service/id:整数 9007199254740993 超出 ±(2^53 − 1),JavaScript 会把它四舍五入;/service/owner:null,TOML 没有 null
TOML 面板被清空,复制按钮停用,不会误复制旧结果。给大 ID 加引号(id: "9007199254740993"),替换或删除 null 后再转换。−(253 − 1) 到 253 − 1 之间的整数原样转换。
限制
- 根必须是映射,一次一个文档。含
---的多文档输入会报错expected a single document in the stream, but found more。 - 两个方向都拒绝大整数。TOML → YAML 时
big = 9007199254740993报错integer value cannot be represented losslessly并标出行;YAML → TOML 时按上文列出字段。 - js-yaml 的处理上限。js-yaml 4.3.2 遇到嵌套超过 100 层、合并键(
<<)累计处理的映射和键超过 10,000 个、一个合并键列出超过 100 个映射的文档会停止,错误信息写明上限和行列。 - 注释不保留,锚点会展开。
YAML 与 TOML 对比
YAML 以其人性化的缩进语法,广泛用于应用配置(Docker Compose、Kubernetes、GitHub Actions)。
TOML 是 Rust 项目(Cargo.toml)、Python 打包(pyproject.toml)以及 Hugo、Zola 等工具的标准配置格式。
本工具在两者之间对两种格式共同支持的数据类型进行转换。
FAQ
支持哪些数据类型?
字符串、整数、浮点数(含 inf 和 nan)、布尔值、数组、嵌套对象和日期均双向支持。YAML 日期(如 2026-10-01)写成 TOML 本地日期,YAML 日期时间保留时区偏移。YAML 锚点和别名在转换前会自动展开。TOML 的日期时间写成不带引号的 ISO 8601 值(如 2026-10-01T09:30:00.000+09:00),YAML 解析器一般会把它读成时间戳。
为什么 YAML 转 TOML 失败?
TOML 要求根文档必须是键值映射,根为序列(列表)或标量的 YAML 无法转换。另外,值在转换中会改变时,工具不转换,并按路径(如 /service/owner)列出每个字段:null(TOML 没有 null)、超出 ±(2^53 − 1) 的整数、精度超过毫秒的时间戳、不存在的日期。此时 TOML 面板被清空,复制按钮停用,直到输入可以转换。
支持 YAML 多文档流吗?
不支持。仅支持单文档 YAML。含多个文档(用 --- 分隔)时会报错「expected a single document in the stream」,请一次只粘贴一个文档。
数据会发送到服务器吗?
不会。所有转换在浏览器中运行,数据不会离开您的设备。