Двунаправленная конвертация для k8s, GitHub Actions, Docker Compose, helm. Живой предпросмотр, идиоматичный YAML — всё в вашем браузере.
js-yaml — отличная библиотека, но добавляет ~30 КБ в minified-виде к каждой загрузке страницы. Реальный YAML конфиг-файлов использует малую часть спецификации — block-mapping, block-sequence, flow-style, скалярные типы, многострочные literal. Мы вручную написали именно это подмножество (~5 КБ), так что холодная загрузка остаётся быстрой. Если в вашем YAML есть anchors, aliases или кастомные теги, вставьте его в CI-конвейер, использующий js-yaml.
Три редкие в конфиг-файлах возможности: (1) якоря и алиасы (&name / *name) — для дедупликации внутри документа; (2) кастомные теги (!!str / !!float / !!omap) — для переопределения неявного вывода типов; (3) многодокументные файлы с разделителями ---. Ничего из этого не встречается в стандартных файлах k8s, GitHub Actions, Docker Compose, helm или ansible. Если они вам нужны — берите полноценный парсер YAML.
ВводJSON
1
РезультатYAML
1
Создан для реального DevOps-YAML
k8s, GitHub Actions, Docker Compose, helm, ansible — и несколько мелочей, которые делают работу с инструментом по-настоящему приятной.
Двунаправленно, в реальном времени
Вставьте любой формат — мгновенно получите второй. Вывод обновляется на каждом нажатии клавиши, никакой кнопки Convert. Переключите направление одним кликом — тот же инструмент работает в обратную сторону.
JSON → YAML выдаёт такой YAML, какой вы написали бы вручную: ключи в plain-style (без кавычек), строки берутся в кавычки только при коллизии с зарезервированными словами (true/false/null/yes/no) или числами, многострочные строки рендерятся как блочные скаляры |, настраиваемый отступ 2 или 4 пробела.
Безопасный round-trip
JSON → YAML → JSON даёт побайтово идентичный документ. Конвертируйте в любую сторону — обратное направление всегда чисто разворачивает результат. Без молча потерянных типов и приведённых значений.
Приватность по дизайну
Ваш конфиг никогда не покидает устройство. Самописный парсер и сериализатор работают как JavaScript локально. Откройте DevTools → Network и убедитесь: исходящих запросов ноль.
Маленький и быстрый
Чистый JavaScript, без зависимости от js-yaml. Холодная загрузка — менее 25 КБ в gzip. Манифест k8s размером 100 КБ конвертируется менее чем за 30 мс на обычном ноутбуке.
Как конвертировать JSON ↔ YAML
Три шага от исходного конфига к нужному формату.
1
Вставьте JSON или YAML
Бросьте свой конфиг в панель Ввод. Инструмент определяет вставленный формат по выпадающему списку Направление — переключите его при необходимости. Конвертация идёт в реальном времени на каждом нажатии клавиши.
2
Настройте отступ и проверьте
По умолчанию отступ — 2 пробела (соглашение k8s / GitHub Actions). Переключитесь на 4, если у вашей команды так. Нажмите Поменять, чтобы развернуть вывод во ввод, — удобно для проверки round-trip (вставьте JSON, конвертируйте в YAML, поменяйте, конвертируйте обратно, сравните с оригиналом).
3
Скопируйте или скачайте
Нажмите иконку копирования, чтобы отправить вывод в буфер обмена, или иконку загрузки, чтобы сохранить как output.yaml или output.json. Разница в размере в байтах показана в подвале — видно, насколько компактен YAML.
Создан для DevOps- и backend-команд
Четыре частых сценария, где приватный браузерный инструмент лучше одноразового скрипта на Python.
Round-trip манифестов Kubernetes
kubectl get deployment my-app -o json → вставьте сюда → YAML → отредактируйте → apply. Или: вставьте YAML-манифест из документации вендора, конвертируйте в JSON, прогоните через jq для фильтрации, конвертируйте обратно в YAML, закоммитьте.
Сниппеты GitHub Actions / GitLab CI из блогов
В блоге сниппет CI показан как JSON в теме их документации. Бросьте его сюда, получите YAML, вставьте в .github/workflows/ci.yml. Или: возьмите multi-job YAML-воркфлоу, конвертируйте в JSON для программного редактирования, конвертируйте обратно.
Helm values + Docker Compose
Файлы helm values — это YAML; некоторые шаблонизаторы хотят JSON. Вставьте свой values.yaml, получите JSON, прогоните через нужный инструмент, вставьте обратно, конвертируйте в YAML и закоммитьте. Тот же воркфлоу — для compose.yaml в Docker Compose.
Чувствительные конфиги, которые нельзя отдавать стороннему сервису
Конфиги с API-ключами, секретами, внутренними хостами, клиентскими данными — всё, что нельзя вставить в облачный конвертер. Браузерный инструмент держит каждый байт на вашем ноутбуке. Откройте DevTools → Network и убедитесь, что ничего не уходит наружу.
100% приватно — работает в вашем браузере
Ваши конфиги никогда не покидают устройство. Откройте DevTools → Network и увидите ноль исходящих запросов во время конвертации.
Самописный YAML-парсер, YAML-сериализатор, нативный JSON.parse, копирование в буфер и скачивание — всё работает как JavaScript на вашей машине, без CDN js-yaml, без сторонних API.
Без логина, без телеметрии содержимого конфигов. Используется одна cookie для состояния cookie-consent и одна — для языковых настроек.
Если вы работаете с чувствительными инфра-конфигами (фрагменты kubeconfig, манифесты с секретами, подписанные сертификаты), приватность критична — вставляйте без опаски. Проверяемо в DevTools.
Похожие руководства
Подборка материалов о паттернах YAML-конфигов, JSON-инструментарии и DevOps-форматах файлов.
Зачем писать свою поддержку YAML, если есть <code>js-yaml</code>?
js-yaml — отличная библиотека, но добавляет ~30 КБ в minified-виде к каждой загрузке страницы. Реальный YAML конфиг-файлов использует малую часть спецификации — block-mapping, block-sequence, flow-style, скалярные типы, многострочные literal. Мы вручную написали именно это подмножество (~5 КБ), так что холодная загрузка остаётся быстрой. Если в вашем YAML есть anchors, aliases или кастомные теги, вставьте его в CI-конвейер, использующий js-yaml.
Какие возможности YAML НЕ поддерживаются?
Три редкие в конфиг-файлах возможности: (1) якоря и алиасы (&name / *name) — для дедупликации внутри документа; (2) кастомные теги (!!str / !!float / !!omap) — для переопределения неявного вывода типов; (3) многодокументные файлы с разделителями ---. Ничего из этого не встречается в стандартных файлах k8s, GitHub Actions, Docker Compose, helm или ansible. Если они вам нужны — берите полноценный парсер YAML.
Сохраняются ли комментарии?
Нет — комментарии вырезаются при разборе. YAML поддерживает комментарии (#...), а JSON — нет. Round-trip YAML через JSON по определению теряет информацию о комментариях. Мы вырезаем комментарии при парсинге, а не пытаемся сохранить их костылями. Если нужно редактирование YAML с сохранением комментариев — правьте YAML напрямую.
Почему моё число превращается в строку?
Правила неявных типов в YAML мягче, чем в JSON: 1.2.3 — это строка в YAML (а не число, потому что в нём две точки), а строки версий вроде v1.2 остаются строками, если их не закавычить. Мы следуем правилам неявных типов YAML 1.2: только цифры, соответствующие ^-?\d+(\.\d+)?([eE][-+]?\d+)?$, становятся числами; всё остальное остаётся строкой. Если нужна точная обработка чисел — закавычьте значение в YAML или используйте JSON напрямую.
Что-нибудь отправляется на ваш сервер?
Нет. YAML-парсер, сериализатор, JSON-парсер и копирование в буфер — всё работает на JavaScript на вашем устройстве. Откройте DevTools → Network и увидите ноль исходящих запросов во время конвертации. Вставляйте боевые манифесты k8s, внутренние CI-конфиги, helm values с секретами — ничто не покинет ваш ноутбук.