ToolDeck

TOML Formatter

Форматирование и валидация конфигурационных файлов TOML

Попробовать пример

Входной TOML

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

Работает локально · Безопасно вставлять секреты
Отформатированный TOML появится здесь…
Также попробуйте:TOML to JSON

Последнее обновление: апрель 2026 г.

Что такое форматирование TOML?

TOML (Tom's Obvious Minimal Language) — формат конфигурационных файлов, созданный Томом Престон-Вернером в 2013 году. Он напрямую отображается в хеш-таблицу и использует явную типизацию для всех значений. TOML-форматтер берёт сырой или непоследовательно оформленный TOML и повторно сериализует его с единообразными пробелами, правильными отступами и каноническим порядком ключей. Результат — файл, который следует одним и тем же соглашениям во всём проекте, что упрощает проверку изменений конфигурации в диффах.

Спецификация TOML v1.0.0, окончательно утверждённая в январе 2021 года, определяет грамматику достаточно строго: любой совместимый парсер производит идентичную структуру данных из одних и тех же входных данных. Форматирование не изменяет семантического содержимого TOML-файла — оно корректирует только пробельные символы, группировку ключей и стиль кавычек. Это означает, что вы можете форматировать TOML-файлы без риска нарушить поведение приложения.

В отличие от JSON, TOML поддерживает комментарии, нативные типы даты и времени, а также несколько форм строк (базовые, литеральные и многострочные). Хороший форматтер сохраняет комментарии и учитывает различие между инлайн-таблицами и стандартными заголовками таблиц. Он также корректно обрабатывает массивы таблиц, сохраняя группировку секций, чтобы файл оставался читаемым как для людей, так и для парсеров.

Before · toml
After · toml
title="My App"
version="1.0.0"
debug=false
[database]
host="localhost"
port=5432
name="mydb"
[database.pool]
max_connections=25
timeout=30
[[servers]]
name="web"
host="web.example.com"
[[servers]]
name="api"
host="api.example.com"
title = "My App"
version = "1.0.0"
debug = false

[database]
host = "localhost"
port = 5432
name = "mydb"

[database.pool]
max_connections = 25
timeout = 30

[[servers]]
name = "web"
host = "web.example.com"

[[servers]]
name = "api"
host = "api.example.com"

Зачем использовать TOML Formatter?

Конфигурационные файлы накапливают стилистические расхождения по мере того, как их редактируют разные члены команды. Табуляции смешиваются с пробелами, некоторые ключи цитируются без необходимости, а секции таблиц теряют визуальную группировку. TOML-форматтер нормализует всё это за один проход.

Мгновенное форматирование
Вставьте неотформатированный TOML и сразу получите чистый, единообразно оформленный результат. Никаких установок CLI, настройки проекта или ожидания шага сборки.
🔒
Обработка без передачи данных
Весь парсинг и форматирование выполняются в браузере. Данные конфигурации, включая учётные данные и внутренние имена хостов, никогда не покидают ваше устройство.
Встроенная валидация
Форматтер парсит TOML перед повторной сериализацией. Если во входных данных есть синтаксические ошибки, вы получите понятное сообщение с указанием проблемной строки — таким образом, форматирование одновременно выполняет функцию валидации.
📋
Без регистрации
Откройте страницу и начните форматировать. Никакой регистрации, ограничений по количеству запросов и отслеживания использования. Инструмент работает одинаково при каждом посещении.

Сценарии использования TOML Formatter

Frontend-разработка
Форматируйте файлы wrangler.toml для проектов Cloudflare Workers или deno.toml для frontend-приложений на Deno. Чистое форматирование упрощает проверку конфигурации деплоя в пул-реквестах.
Backend-разработка
Стандартизируйте файлы Cargo.toml в нескольких Rust-микросервисах. Единообразное форматирование позволяет легко сканировать версии зависимостей и флаги фичей по всем репозиториям.
DevOps и CI/CD
Форматируйте конфигурационные файлы — .goreleaser.toml, netlify.toml или конфиги Starship — перед коммитом. Добавьте проверку форматирования в CI-пайплайны для обеспечения единообразного стиля.
QA и тестирование
Быстро форматируйте тестовые фикстуры, чтобы они были читаемыми и удобными для сравнения. Когда тест падает из-за расхождений в конфигурации, отформатированные файлы делают сравнение фактического и ожидаемого результата очевидным.
Работа с данными
Форматируйте конфиги Telegraf или InfluxDB, описывающие пайплайны сбора данных. Такие файлы нередко вырастают до сотен строк, и единообразное форматирование сохраняет их поддерживаемость.
Изучение синтаксиса TOML
Вставляйте примеры из документации или туториалов и смотрите, как форматтер их нормализует. Это быстрый способ понять, какие стили скобок, правила цитирования и группировки таблиц являются каноническими.

Справочник по синтаксису TOML

TOML имеет небольшой набор конструкций. В таблице ниже перечислены все структурные элементы, определённые в спецификации TOML v1.0.0. Форматтер применяет единообразные пробелы и группировку ко всем из них.

СинтаксисНазваниеПримечания
key = "value"Basic key-value pairKeys are bare or quoted; values are typed
[table]Standard tableCreates a named section (hash table)
[a.b.c]Dotted tableShorthand for nested tables
[[array]]Array of tablesEach [[name]] block appends to an array
key = """...\n"""Multi-line basic stringAllows newlines, escapes processed
key = '''...\n'''Multi-line literal stringAllows newlines, no escape processing
# commentCommentExtends to end of line; not in JSON output
{inline = true}Inline tableSingle-line table, no newlines allowed

TOML vs JSON vs YAML

TOML, JSON и YAML решают схожие задачи, но с разными компромиссами.

ВозможностьTOMLJSONYAML
Комментарии# однострочные комментарииНе поддерживаются# однострочные комментарии
Типизированные значенияString, int, float, bool, datetimeString, number, bool, nullВыводятся автоматически (ненадёжно)
ВложенностьЗаголовки [table]Фигурные скобкиНа основе отступов
Строгость спецификацииСтрогая (один результат парсинга)Строгая (RFC 8259)Нестрогая (несколько допустимых парсингов)
Поддержка даты/времени4 нативных типаОтсутствует (используйте строки)Неявная (ненадёжная)
Завершающие запятыеНе допускаютсяНе допускаютсяН/Д (запятые не используются)

Примеры кода

Примеры ниже показывают программное форматирование TOML на разных языках и инструментах. Каждый читает файл, парсит его и записывает отформатированную версию.

JavaScript (Node.js)
import { parse, stringify } from '@iarna/toml'
import fs from 'fs'

const raw = fs.readFileSync('config.toml', 'utf-8')
const doc = parse(raw)
const formatted = stringify(doc)
// stringify() outputs canonical TOML with consistent spacing
fs.writeFileSync('config.toml', formatted)

// Quick one-liner with npx:
// npx taplo fmt config.toml
Python
import tomllib   # Python 3.11+ (read-only)
import tomli_w   # pip install tomli-w (write)

# Parse and re-serialize to format
with open("config.toml", "rb") as f:
    data = tomllib.load(f)

formatted = tomli_w.dumps(data)
# tomli_w produces sorted keys, consistent quoting, and
# proper whitespace around = signs
print(formatted)

# CLI alternative: taplo fmt config.toml
Go
package main

import (
    "fmt"
    "os"
    "github.com/BurntSushi/toml"
    "bytes"
)

func main() {
    var data map[string]interface{}
    _, err := toml.DecodeFile("config.toml", &data)
    if err != nil {
        fmt.Fprintln(os.Stderr, err) // parse error with line number
        os.Exit(1)
    }
    var buf bytes.Buffer
    enc := toml.NewEncoder(&buf)
    enc.Indent = "  "
    enc.Encode(data) // re-serialized with consistent formatting
    fmt.Print(buf.String())
}
CLI (taplo)
# Install taplo — the standard TOML toolkit
cargo install taplo-cli
# or: npm install -g @taplo/cli

# Format a single file in place
taplo fmt config.toml

# Format all .toml files in a project
taplo fmt

# Check formatting without modifying (CI-friendly)
taplo fmt --check

# Validate TOML syntax without formatting
taplo lint config.toml

Часто задаваемые вопросы

Что делает TOML-форматтер?
TOML-форматтер парсит файл в структуру данных, а затем повторно сериализует её с единообразными пробелами, порядком ключей и стилем цитирования. Семантическое содержимое остаётся неизменным. Меняется только визуальное представление: пробелы вокруг знаков равенства, пустые строки между секциями таблиц и отступы вложенных значений.
Безопасно ли форматирование TOML для продакшн-конфигов?
Да. Форматирование изменяет только пробельные символы и косметические детали. Структура данных до и после форматирования идентична. Если форматтер встречает некорректные входные данные, он сообщает об ошибке вместо того, чтобы выдавать сломанный результат. Вы можете убедиться в этом, спарсив обе версии и сравнив полученные объекты.
Чем TOML отличается от JSON?
TOML поддерживает комментарии, нативные типы даты и времени, многострочные строки и заголовки таблиц для организации вложенных данных. В JSON ничего этого нет. Формат создан для конфигурационных файлов, которые люди читают и редактируют. JSON предназначен для обмена данными между программами. Отсутствие комментариев в JSON затрудняет документирование решений прямо в конфиге.
Можно ли форматировать TOML из командной строки?
Да. Taplo — наиболее распространённый CLI-форматтер для TOML. Установите его командой cargo install taplo-cli или npm install -g @taplo/cli, затем выполните taplo fmt для форматирования всех .toml-файлов в проекте. Поддерживается настройка через файл taplo.toml или .taplo.toml с пользовательскими правилами.
Сохраняет ли форматтер комментарии в TOML-файлах?
Этот браузерный форматтер парсит входные данные в структуру данных и повторно сериализует её, что приводит к удалению комментариев. Если вам нужно сохранить комментарии, используйте CST-совместимые инструменты, такие как Taplo (CLI) или toml-edit (Rust-библиотека), которые работают с деревом конкретного синтаксиса, а не с распарсенными данными.
В чём разница между форматированием TOML и его валидацией?
Валидация проверяет, соответствует ли файл спецификации, и сообщает об ошибках при несоответствии. Форматирование идёт дальше: оно валидирует входные данные, а затем переписывает их в нормализованном стиле. Каждая операция форматирования включает валидацию как первый шаг, поэтому успешно отформатированный файл гарантированно является корректным.
Какие проекты используют TOML в качестве формата конфигурации?
Cargo Rust (Cargo.toml), экосистема Python-пакетов (pyproject.toml), статические сайты Hugo, Deno (deno.toml), Cloudflare Workers (wrangler.toml), InfluxDB, Telegraf и Starship prompt — все они используют TOML. Формат обрёл популярность после того, как Rust принял его в качестве стандарта для манифестов пакетов в 2015 году.