YAML 格式化

用真解析器重排 YAML 缩进,注释、锚点与块标量原样保留;支持压缩成单行、语法出错定位到行列,浏览器本地处理。

功能特性

注释、锚点、块标量原样保留

走真正的 YAML 解析器,只重排缩进与空白;「# 注释」「&anchor / *alias」「script: |」这类块标量都不会被改写。

不会改坏 k8s 配置

常见的「按行猜缩进」写法会把块标量与嵌套列表的缩进压平,输出不再是合法 YAML,甚至把列表项里的字段挪到上一层 —— 这里不存在这个问题。

缩进 2 / 4 空格可选

多文档(---)逐个重排后再用 --- 拼接,一份 k8s manifest 不用拆成几段分别处理。

可压缩成单行

把所有层级收成 flow 风格的单行 YAML,适合塞进环境变量或配置项;压缩会丢掉注释。

语法校验定位到行列

缩进错位、制表符、键重复等直接给出「第 X 行第 Y 列」与原因,不会静默输出半成品。

本地处理

解析与重排都在浏览器里完成,配置内容不会上传服务器。

使用步骤

01粘贴 YAML

把待整理的 YAML 贴到左侧,边输入边校验,出错即时提示行列。

02选处理方式与缩进

格式化(保留注释)或压缩成单行;格式化时可选 2 / 4 空格缩进。

03复制或下载

右侧实时给出结果,一键复制,或下载 .yaml 文件。

适用场景

k8s manifest 对齐与核对docker-compose / CI 流水线配置Helm values 整理Ansible playbook 排错接口返回的 YAML 报错定位YAML 转 JSON 前先确认语法

常见问题

为什么这个格式化不会改坏我的 YAML?

因为它先把文档解析成语法树再输出,只重新决定缩进与换行。网上不少「YAML 格式化」是按行找冒号、按行尾是否带冒号猜层级,遇到「script: |」这样的块标量或「containers:」下的嵌套列表就会把缩进压平,输出已经不是合法 YAML;更隐蔽的是列表项里带冒号的值(如 - note: "port: 8443")会被挪到上一层,输出仍能解析但数据已经变了。

压缩成单行会丢什么?

只丢注释。压缩把所有层级收成 flow 风格,注释不再有位置;键值、锚点与别名、数值类型全部保留,超出安全范围的整数也不会被降精度。

支持 --- 分隔的多文档吗?

支持。每个文档分别重排后再拼接,k8s 那种一份文件里放多个资源的情况可以直接整份贴进来。

会不会把我的合并键与别名展开?

不会。格式化只做排版、不改写语义,「<<: *anchor」与「*alias」原样保留 —— 展开合并键属于「转成 JSON」场景的行为,在另一个工具里。

数据会上传到服务器吗?

不会。解析与重排全部在浏览器本地完成,关闭页面数据即消失。

相关工具