Форматировщик и валидатор TOML

Вставьте TOML, форматируйте в каноническом виде TOML 1.0 или валидируйте синтаксис. Без загрузки.

  1. Вставьте свой TOML в текстовое поле слева.
  2. Нажмите «Форматировать», чтобы пропустить через @iarna/toml и получить канонический вид.
  3. Нажмите «Валидировать», чтобы проверить синтаксис без изменения ввода.
  4. Ошибки указывают на проблемную строку и столбец.
Что это делает?

Парсит ваш TOML с помощью @iarna/toml в режиме TOML 1.0 и заново выводит в каноническом виде — ключи перед под-таблицами, согласованное экранирование, удаление подчёркиваний целых чисел. Кнопка «Валидировать» проверяет синтаксис по спецификации без изменения ввода. Комментарии теряются при цикле (форматировщики TOML обычно не могут сохранить их через цикл parse-and-dump).

Пример

Беспорядочный TOML-ввод:

[server]
host="localhost"
port=8080

name="myapp"

Отформатированный вывод:

name = "myapp"

[server]
host = "localhost"
port = 8080

Типичные ошибки TOML и как их исправить

У TOML 1.0 более строгие правила, чем у YAML или JSON. Шаблоны ниже покрывают большинство сбоев парсера.

  • Неэкранированные строки. `name = Ada` невалиден. Используйте двойные кавычки: `name = "Ada"`.
  • Переопределение таблицы. Определять `[a]` дважды — ошибка. Каждый заголовок таблицы должен встречаться максимум один раз. Объедините ключи в один блок `[a]`.
  • Ключи верхнего уровня после таблицы. Как только вы пишете `[section]`, все последующие ключи принадлежат этой секции. Ключи должны идти до их первого заголовка таблицы. Форматировщик переупорядочивает это за вас, но исходный ввод должен быть валидным.
  • Date-time без часового пояса. `d = 2026-04-26T12:00:00` (без Z или смещения) — это «локальная date-time». Она парсится, но потребители стиля JSON могут не иметь способа представить локальность. Используйте `2026-04-26T12:00:00Z` для UTC.
  • Расширение inline-таблицы. Inline-таблицы `point = {x=1, y=2}` закрыты и самодостаточны. Нельзя позже написать `point.z = 3`. Используйте обычный синтаксис блока `[point]` для расширения.
  • Путаница с экранированием тройных кавычек. `"""..."""` (базовая многострочная) обрабатывает экранирование; `\'\'\'...\'\'\'` (литеральная многострочная) — нет. Смешивание этих двух — самая частая ошибка многострочных строк.
Часто задаваемые вопросы

Меняет ли форматирование мои данные?

Только вид — ключи переупорядочиваются, чтобы примитивы шли перед под-таблицами (правило TOML), пробелы нормализуются, подчёркивания целых чисел удаляются (семантика TOML). Сами значения не меняются.

Сохраняются ли TOML-комментарии?

Нет. @iarna/toml отбрасывает комментарии при цикле parse-and-dump. Если нужно форматирование с сохранением комментариев, понадобится другая библиотека, сохраняющая позицию в исходнике.

Валидирует ли это против TOML 1.0?

Да. @iarna/toml следует TOML 1.0 — включая разрешение массивов смешанных типов, точечных ключей и пересмотренных правил строк. Входы, зависящие от поведения только TOML 0.5 (требующего однородных массивов), здесь всё ещё парсятся, но могут ломаться на более строгих парсерах 0.5.

Какого размера TOML-файл это может обработать?

До примерно 30 МБ, прежде чем текстовое поле замедлится. Большинство конфигов сильно меньше 1 МБ.

Загружается ли мой TOML?

Нет. Всё работает в вашем браузере — ваш ввод парсится и сериализуется JavaScript на этой странице и не отправляется ни на какой сервер.

Почему форматировщик переупорядочивает мои ключи?

TOML 1.0 требует, чтобы ключи верхнего уровня (примитивы) появлялись до любого заголовка таблицы в той же области видимости. Форматировщик обеспечивает это, ставя примитивы перед под-таблицами. Если у исходного ввода был другой порядок, шаг форматирования его нормализует.