YAML Formatter
新Validate, beautify, and convert YAML online. Real-time syntax highlighting, error detection with line numbers, and one-click JSON export.
Input
Formatted output
← paste YAML to see formatted output Runs entirely in your browser. Nothing is uploaded.
在瀏覽器中即時格式化和驗證 YAML
YAML 格式化工具在您輸入或貼上時即時驗證並美化您的 YAML — 無需按任何按鈕。它規範化縮排,用行號和說明高亮顯示語法錯誤,並提供一鍵 JSON 轉換。編輯器使用自訂 CSS 屬性實現完整的語法高亮,可自動適應系統的深色或淺色模式偏好。一切都在用戶端使用 JavaScript YAML 解析器執行 — 您的設定檔永遠不會離開您的裝置。
YAML(YAML Ain't Markup Language)幾乎用於所有現代軟體專案:GitHub Actions 工作流程、Kubernetes 清單檔、Docker Compose 檔、Ansible Playbook、Helm Chart、CI/CD 設定以及應用程式設定檔。它被設計為人類可讀的,但其對縮排的敏感性和特殊字元的規則使得編寫無效 YAML 變得出奇地容易,而這些錯誤只在執行時才會暴露——此時已為時過晚。即時格式化工具能在幾秒鐘內發現這些錯誤。
常見 YAML 錯誤及驗證器如何捕捉它們
最常見的 YAML 錯誤是使用定位字元而非空格。YAML 禁止在縮排中使用定位字元——它們在大多數文字編輯器中看起來與空格相同,但會導致即時解析失敗。驗證器會捕捉此問題,並精確告訴您哪一行包含定位字元。第二個最常見的錯誤是值中的冒號未加引號:`title: Hello: World` 是有歧義的——解析器會看到一個巢狀鍵。將值用引號括起來:`title: "Hello: World"`。第三個是縮排不一致:如果一個區塊在某處縮排 2 個空格,在另一處縮排 3 個空格,解析器可能會誤讀巢狀層級。
其他常見錯誤:同一映射中的重複鍵(在 YAML 1.1 中技術上是允許的,但在 1.2 中是不合法的,且被大多數解析器拒絕);冒號後缺少空格(`鍵:值` 無效,需要 `鍵: 值`);錨點和別名使用不當;以及隱式型別轉換的意外(在 YAML 1.1 解析器中,字串 `yes` 會變成布林值 `true`)。驗證器用清晰的語言回報每一個問題,而不僅僅是原始的解析器錯誤訊息。
YAML 轉 JSON — 何時使用及原因
JSON 和 YAML 在語義上是等價的資料格式(有一些例外情況)。YAML 是 JSON 的超集——有效的 JSON 也是有效的 YAML。在以下情況下將 YAML 轉換為 JSON 很有用:與只接受 JSON 的工具或 API 搭配使用時,或者當您想使用 `jq` 查詢 YAML 設定檔時(jq 在 JSON 上操作)。「複製為 JSON」按鈕會解析您的 YAML,並將其序列化為帶 2 個空格縮排的格式化 JSON。
一個重要注意事項:YAML 註解(以 `#` 開頭的行)不會保留在 JSON 輸出中,因為 JSON 沒有註解語法。YAML 錨點和別名會被解析——JSON 顯示最終的解參考值。多文件 YAML(用 `---` 分隔的多個文件)會轉換為包含每個文件作為元素的 JSON 陣列。如果您需要反向操作(JSON 轉 YAML),將 JSON 貼到此格式化工具中——由於 JSON 是有效的 YAML,它會被乾淨地解析和重新格式化。
YAML 格式化工具 vs yamllint、YAML Lint 和 YAML Checker
yamllint 是 YAML 檢查的黃金標準 CLI 工具——徹底、可設定,在 CI 流水線中廣泛使用。但它需要 Python、pip 和終端機,這使得在團隊成員機器上快速檢查或在瀏覽器環境中使用變得不可行。YAML Lint (yamllint.com) 是最受歡迎的線上替代方案,但只顯示錯誤——沒有格式化、沒有語法高亮、沒有 JSON 轉換。YAML Checker (yamlchecker.com) 可以格式化和驗證,但只有一個沒有高亮功能的普通文字區域,也沒有 JSON 輸出。Transform.tools 提供 YAML 轉 JSON,但沒有即時驗證。
此格式化工具將所有這些功能集於一處:帶錯誤說明的即時驗證、帶語法高亮的格式化輸出、一鍵 JSON 轉換以及多文件支援——完全在您的瀏覽器中執行,無需後端伺服器。對於不希望安裝工具或註冊服務的開發者來說,這是從「這個 YAML 有效嗎?」到「這是格式化後、無錯誤的版本」最快捷的路徑。
實際應用 — Kubernetes、GitHub Actions、Docker Compose
對於 Kubernetes 使用者:在使用 `kubectl apply` 套用之前貼上您的清單檔,以便儘早發現語法錯誤。Pod 規格或 Service 定義中的單個縮排錯誤會導致 `kubectl` 以神秘的錯誤訊息失敗;在這裡先發現它可以節省時間。對於 GitHub Actions 使用者:在提交之前貼上您的 `.github/workflows/*.yml` 檔進行驗證。格式錯誤的工作流程會靜默失敗(Action 根本不執行),而在 GitHub 介面中除錯它們非常緩慢。對於 Docker Compose 使用者:在執行 `docker compose up` 之前驗證您的 `docker-compose.yml` 檔——對於巢狀 service 定義錯誤可能難以發現的多服務檔尤為重要。
對於 Ansible 使用者:貼上 Playbook、清單檔或變數檔,以便在執行 `ansible-playbook` 之前驗證 YAML 結構。對於 Helm Chart 作者:驗證您的 `values.yaml` 或 Chart 範本。對於任何用 YAML 編寫 CI/CD 設定的人(GitLab CI、CircleCI、Bitbucket Pipelines、Travis CI):貼上設定並在推送前進行驗證。在所有這些情況下,無效 YAML 檔的代價是建置或部署失敗——在這裡先發現它總是更快的。
Frequently asked questions
如何線上格式化 YAML?
將您的 YAML 貼到左側編輯器中,它會在右側即時自動格式化和驗證。格式化工具將縮排規範為 2 個空格,刪除結尾空白,並以語法高亮顯示您的 YAML。如果有語法錯誤,它們會被內嵌高亮,並說明出錯原因以及問題所在行號。無需按任何按鈕——格式化在您輸入或貼上時自動進行。
如何驗證 YAML 語法錯誤?
貼上您的 YAML,驗證器會立即使用用戶端 YAML 解析器進行解析。如果 YAML 無效,您將看到一個紅色錯誤橫幅,顯示具體的錯誤訊息和行號——與 CI/CD 流水線(如 GitHub Actions 或 Kubernetes)拋出的錯誤類型相同。常見 YAML 錯誤包括縮排錯誤(使用定位字元而非空格——YAML 要求使用空格)、鍵後缺少冒號、重複鍵,或值中未加引號的特殊字元(如冒號)。
我可以將 YAML 轉換為 JSON 嗎?
可以——有一個「複製為 JSON」按鈕,它會解析您的 YAML 並輸出等效的 JSON,格式化後即可使用。當您有一個 YAML 設定檔(如 GitHub Actions 工作流程或 Kubernetes 清單)並需要以 JSON 格式為 API、腳本或只接受 JSON 的工具提供相同資料時,這非常有用。對於標準 YAML,轉換是無損的——註解不會保留在 JSON 中,因為 JSON 沒有註解語法。
YAML 為什麼需要格式化工具?
YAML 對縮排很敏感:一個額外的空格或一個定位字元(在預期是空格的地方)會破壞解析。這使得手動編輯 YAML 容易出錯,尤其是在深度巢狀的設定中,如 Kubernetes 清單、Docker Compose 檔、GitHub Actions 工作流程和 Ansible Playbook。格式化工具強制執行一致的縮排,規範化結尾空白,並在語法錯誤到達 CI/CD 流水線或部署之前捕捉它們。
我的 YAML 內容是否保密?
是的——一切都在您的瀏覽器中執行。您的 YAML 程式碼永遠不會傳送到任何伺服器,永遠不會儲存,也永遠不會被記錄。這對於可能包含設定機密、API 金鑰或資料庫憑證的 YAML 檔尤為重要。與將您的內容傳送到後端處理的基於 Web 的 YAML 工具不同,此格式化工具完全使用 JavaScript 在您的瀏覽器中解析和格式化。
在 iPhone 和 Android 上可以使用嗎?
可以。編輯器是響應式的,可在 iPhone 上的 Safari 和 Android 上的 Chrome 中使用。從剪貼簿貼上 YAML 在行動裝置上同樣有效,格式化輸出和錯誤訊息在小螢幕上也能清晰顯示。由於一切都在用戶端執行,格式化是即時的,無需伺服器往返。
需要註冊或付費嗎?
不需要。YAML 格式化工具完全免費,無需帳戶,也沒有使用限制。您可以隨意格式化、驗證和轉換 YAML。它將永遠免費。