开发者工具 · JSON / 数据格式

YAML 格式化

缩进/校验

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 61 次使用
输 入 YAML
格式化结果 块式 · 2 空格
格式化结果将在这里呈现 —— 点「示例」试试
就绪 · 粘贴 YAML 实时格式化并校验,支持多文档与流式压缩,全程本地处理
第一节

关于本工具

About

调试 YAML 时,缩进差一个空格就能让整个配置文件失效。这个工具把粘贴进来的 YAML 文本重新缩排,同时校验结构是否合法,并高亮标记出括号不配对或缩进不一致的行。解析和格式化全程在浏览器内完成,文件不会离开本地——适合写 CI 配置、K8s 清单或 Ansible 剧本时快速排错。

使用场景

API 联调排错

后端返回的 YAML 配置文件在接口联调时始终解析失败,日志只报 `mapping values are not allowed here`。开发者把 YAML 片段粘贴到本工具,点击格式化后立即发现第 14 行 `port: 8080` 前多了一个制表符,而 YAML 只认空格。修正后重新校验通过,联调耗时从预估的 2 小时压缩到 10 分钟。

CI/CD 配置合并

运维同事合并了 GitLab CI 的 `.gitlab-ci.yml` 分支,但合并后的文件缩进混乱,导致流水线全部失败。将合并后的内容粘贴到工具,格式化后清晰看到 `before_script` 和 `script` 层级错位——`script` 被缩进到了 `job` 的上一级。修正缩进后重新提交,流水线恢复运行,避免了 3 次无效重跑。

K8s 清单语法检查

准备上线新服务,`deployment.yaml` 由多人协作编写,其中一位同事在 `containers` 下漏了 `-` 短横线,导致 `kubectl apply` 报 `error validating data`。将文件粘贴到工具,校验功能直接标出第 32 行 `name: nginx` 缺少数组前缀。修正后 `apply` 一次通过,避免了生产环境回滚风险。

Ansible 剧本缩进修复

从社区复制了一段 Ansible playbook 示例,但粘贴后缩进全乱——`tasks` 下的模块名与参数混在同一层级。把内容丢进工具,格式化后自动对齐 `name`、`yum`、`notify` 的层级关系,同时校验出 `state: present` 前多了一个冒号。修复后 playbook 在测试环境一次执行成功。

OpenAPI 规范转 YAML 后校验

将 Swagger 的 JSON 定义通过在线转换器转成 YAML 格式,但转换结果缩进不一致,导致 Swagger UI 无法加载。粘贴到工具,格式化后 `paths` 下的每个端点缩进统一为 2 空格,校验未报错。直接替换原文件后,Swagger UI 恢复正常渲染,节省了手动逐行检查的 30 分钟。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴或键入 YAML 文本,编辑器自动检测缩进层级与键值对结构
  2. 2点击「格式化」按钮,工具按标准 2 空格缩进重排所有层级,并在右侧预览区显示结果
  3. 3若 YAML 存在语法错误(如冒号后缺空格、缩进不一致),顶部红色提示区会列出具体行号与错误类型
  4. 4点击「复制」按钮将格式化后的 YAML 文本写入剪贴板,或直接下载为 .yaml 文件
  5. 5勾选「校验模式」后,每次输入变更自动触发语法检查,无需手动点击格式化

输入输出示例

输入输出说明
name: John age: 30 address: city: Beijing street: Main Stname: John age: 30 address: city: Beijing street: Main St常规:正确缩进(2空格)的YAML,工具应原样输出并验证通过
key: value nested: wrong错误:缩进不一致,第2行' nested'缩进层级不匹配,期望0空格但实际2空格边界:缩进层级错乱(第1行无缩进,第2行有2空格),工具需明确报错位置
list: - item1 - item2 - item3list: - item1 - item2 - item3常规:列表缩进正确(2空格+短横线+空格),验证列表结构识别
empty_value: key2: value2错误:第1行'empty_value: '后存在多余空格,导致空值解析歧义易错:冒号后空格过多(非标准空值写法),工具应提示而非静默处理
a: b: 1 c: 2错误:第3行' c'缩进(1空格)与第2行' b'(2空格)不一致,期望2空格边界:同一层级缩进不一致(1 vs 2空格),工具需精确指出行号和期望缩进
key: "value with : colon" number: 123 bool: truekey: "value with : colon" number: 123 bool: true常规:混合类型(字符串带引号、数字、布尔),验证类型识别和引号处理
key: nested: deep: value sibling: otherkey: nested: deep: value sibling: other常规:多级嵌套(3层),验证深层缩进对齐和同级兄弟节点识别
key: [1, 2, 3] map: {a: 1, b: 2}key: - 1 - 2 - 3 map: a: 1 b: 2易错:内联格式(JSON风格)自动展开为块格式,验证转换逻辑而非简单保留

常见错误对照

1.缩进使用 Tab 而非空格

✗ 错误key: value
✓ 修复key: value

YAML 规范禁止 Tab 缩进,必须使用空格。Tab 在不同编辑器宽度不同,会导致解析器无法识别层级。

2.冒号后缺少空格

✗ 错误name:John
✓ 修复name: John

YAML 中冒号后必须跟一个空格,否则解析器会把 'name:John' 当作一个字符串键名,而非键值对。

3.列表项缩进不一致

✗ 错误fruits: - apple - banana
✓ 修复fruits: - apple - banana

同一列表的所有项必须保持相同缩进层级,否则解析器会认为 'banana' 属于不同父级。

4.字符串值未加引号导致类型错误

✗ 错误version: 1.0
✓ 修复version: "1.0"

不加引号的 1.0 会被解析为浮点数而非字符串。若后续需要字符串操作(如拼接),会因类型不匹配报错。

5.多行字符串使用错误缩进

✗ 错误description: | Line one Line two
✓ 修复description: | Line one Line two

块标符 | 后的内容必须统一缩进,且第一行后的所有行缩进量必须一致,否则解析器会截断内容。

6.注释符号 # 放在行中导致键值被截断

✗ 错误key: value # this is a comment
✓ 修复key: value # 注释前至少两个空格

YAML 注释从 # 开始到行尾结束。若 # 紧贴值(无空格),解析器可能将 # 视为值的一部分导致意外。

7.布尔值大小写不统一

✗ 错误enabled: yes active: True
✓ 修复enabled: true active: true

YAML 规范要求布尔值使用小写 true/false。yes/True 虽被部分解析器支持,但跨语言移植时可能被当作字符串。

8.空值使用 null 而非 ~ 或留空

✗ 错误key: null
✓ 修复key: ~

YAML 中 null 是合法写法,但某些解析器(如 PyYAML)会将 null 解析为字符串 'null'。推荐用 ~ 或留空。

第三节

工作原理

How It Works

核心公式

缩进深度 = 父级缩进 + 2(空格)

变量说明

  • 父级缩进上一层级前导空格数
  • 缩进深度当前层级前导空格数

示例

根节点缩进 0 空格,其子键值对缩进 2 空格,孙节点缩进 4 空格。如: name: John age: 30 city: Beijing 父级缩进 2 空格,子级缩进 4 空格。

原始 YAML 文本词法分析(拆解缩进/键值对)语法校验(缩进/冒号/引号)结果格式化输出(统一缩进/排序)格式化文本(可复制/预览)错误提示(行号/原因)
用户输入 / 错误反馈 浏览器端解析 输出结果
第五节

常见问题

Q & A
YAML 格式化工具能校验我写的缩进对不对吗?

可以。本工具的核心功能之一就是校验 YAML 语法,其中缩进错误是最常见的报错类型。当你粘贴 YAML 内容并点击格式化后,工具会同时检查缩进是否一致(比如同一层级用了不同数量的空格)。如果缩进有问题,结果区会给出具体的错误行号和原因。建议先手动检查缩进层级是否统一用 2 个或 4 个空格,不要混用 Tab 和空格。

为什么我用这个工具格式化后,有些行前面多了个横杠?

那是 YAML 列表(数组)的写法。在 YAML 中,以短横线 `- ` 开头表示一个列表项。如果你的原始内容里包含 `- `,格式化后工具会按标准缩进规则调整它的对齐。如果看到原本不是列表的地方出现了横杠,可能是输入内容里把 `- ` 误写成了连续文本,比如 `key: -value` 会被解析为 `key: -value` 的字符串,而不是列表。可以检查一下原始内容中的 `-` 前后是否有空格。

这个工具会不会把我的 YAML 数据上传到服务器?

不会。本工具是纯前端实现(FE),所有格式化、校验、缩进调整操作都在浏览器本地完成,数据不会离开你的设备。即使断网也能正常使用。如果你处理的 YAML 包含敏感配置(如密码、密钥),这一点可以放心。

YAML 里能不能写中文注释?格式化后会不会乱码?

可以写中文注释,格式化后不会乱码。YAML 标准支持 UTF-8 编码,注释以 `#` 开头,工具在格式化时会保留注释内容和位置。需要注意的是,如果注释中包含特殊字符(如冒号、方括号),最好用引号包裹整个注释内容,否则可能被解析器误判为语法结构。本工具对中文注释的处理是安全的,不会自动转义或删除。

为什么我贴进去的 YAML 格式化后,所有冒号后面都多了一个空格?

这是 YAML 的标准格式要求。在 YAML 中,键值对 `key: value` 的冒号后面必须有一个空格,否则解析器会报错。本工具在格式化时会自动补充这个空格,确保语法正确。如果你习惯写 `key:value`(无空格),格式化后会变成 `key: value`。这是为了让 YAML 符合规范,不是 bug。如果不想被自动补空格,可以在设置中关闭自动格式化,但那样可能无法通过后续的校验。

我有一段很长的 YAML 配置,格式化后内容变少了,是不是丢了数据?

大概率不是丢数据,而是工具合并了重复的键或折叠了多行字符串。YAML 允许用 `>` 或 `|` 块标来折叠多行文本,格式化后工具会重新整理这些块标,看起来行数变少但内容完整。另外,如果 YAML 中有重复的键(同层级下同名 key),后出现的值会覆盖前面的,工具在格式化时不会报错,但实际解析时只会保留最后一个值。建议检查原始内容中是否有重复键。

这个工具和在线 YAML 校验网站比有什么不一样?

主要区别在于隐私和速度。本工具纯前端运行,数据不上传,适合处理敏感配置;而许多在线校验网站需要将数据发送到服务器,可能存在隐私风险。另外,本工具支持断网使用,响应更快。功能上,两者都支持缩进校验和格式化,但本工具额外提供了实时错误提示(输入即校验),不需要手动点击按钮。如果你需要批量处理大量文件,建议用本地编辑器配合 YAML 插件。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭