ToolDeck

Formater TOML

Formatuj i waliduj pliki konfiguracyjne TOML

Wypróbuj przykład

Dane wejściowe TOML

Sformatowany TOML

Działa lokalnie · Bezpieczne do wklejania sekretów
Sformatowany TOML pojawi się tutaj…
Wypróbuj też:TOML do JSON

Ostatnia aktualizacja: kwiecień 2026

Czym jest formatowanie TOML?

TOML (Tom's Obvious Minimal Language) to format pliku konfiguracyjnego stworzony przez Toma Prestona-Wernera w 2013 roku. Mapuje bezpośrednio na tablicę asocjacyjną i używa jawnego typowania dla wszystkich wartości. Formater TOML przyjmuje surowy lub niespójnie wystylizowany TOML i ponownie go serializuje ze spójnymi odstępami, właściwym wcięciem i kanonicznym porządkiem kluczy. Rezultatem jest plik zgodny z tymi samymi konwencjami w całym projekcie, co ułatwia przeglądanie zmian konfiguracji w diffach.

Specyfikacja TOML v1.0.0, sfinalizowana w styczniu 2021 roku, definiuje gramatykę na tyle ściśle, że każdy zgodny parser tworzy identyczną strukturę danych z tego samego wejścia. Formatowanie nie zmienia semantycznej zawartości pliku TOML. Dostosowuje jedynie białe znaki, grupowanie kluczy i styl cytowania. Oznacza to, że możesz formatować pliki TOML bez obaw o naruszenie działania aplikacji.

W przeciwieństwie do JSON, TOML obsługuje komentarze, natywne typy daty i godziny oraz wiele form ciągów (podstawowe, dosłowne i wieloliniowe). Dobry formater zachowuje komentarze i respektuje różnicę między tabelami inline a standardowymi nagłówkami tabel. Poprawnie obsługuje również tablice tabel, zachowując grupowanie sekcji tak, aby plik był czytelny zarówno dla ludzi, jak i parserów go przetwarzających.

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"

Dlaczego warto używać formatera TOML?

Pliki konfiguracyjne gromadzą niejednolity styl, gdy różni członkowie zespołu edytują je w czasie. Tabulatory mieszają się ze spacjami, niektóre klucze są niepotrzebnie cytowane, a sekcje tabel tracą wizualne grupowanie. Formater TOML normalizuje to wszystko w jednym przebiegu.

Natychmiastowe formatowanie
Wklej niesformatowany TOML i natychmiast otrzymaj czysty, spójnie wystylizowany wynik. Bez instalacji CLI, konfiguracji projektu ani czekania na krok kompilacji.
🔒
Przetwarzanie z zachowaniem prywatności
Całe parsowanie i formatowanie odbywa się w przeglądarce. Dane konfiguracyjne, w tym ewentualne dane uwierzytelniające lub wewnętrzne nazwy hostów, nigdy nie opuszczają Twojego komputera.
Walidacja w zestawie
Formater parsuje TOML przed ponowną serializacją. Jeśli dane wejściowe zawierają błędy składniowe, otrzymujesz czytelny komunikat błędu z numerem problematycznej linii — formatowanie pełni więc rolę walidacji.
📋
Bez rejestracji
Otwórz stronę i zacznij formatować. Bez rejestracji, limitu zapytań ani śledzenia użycia. Narzędzie działa tak samo przy każdej wizycie.

Zastosowania formatera TOML

Tworzenie frontendu
Formatuj pliki Wrangler.toml dla projektów Cloudflare Workers lub konfiguracje deno.toml dla frontendów opartych na Deno. Przejrzyste formatowanie ułatwia przeglądanie konfiguracji wdrożenia w pull requestach.
Inżynieria backendu
Standaryzuj pliki Cargo.toml w wielu mikroserwisach Rust. Spójne formatowanie ułatwia przeglądanie wersji zależności i flag funkcji w różnych repozytoriach.
DevOps i CI/CD
Formatuj pliki konfiguracyjne, takie jak .goreleaser.toml, netlify.toml czy konfiguracje promptu Starship, przed zatwierdzeniem. Dodaj sprawdzanie formatowania do potoków CI, aby wymuszać spójność stylu.
QA i testowanie
Szybko formatuj dane testowe, aby były czytelne i łatwe do porównywania. Gdy test nie powiedzie się z powodu różnic w konfiguracji, sformatowane pliki sprawiają, że porównanie oczekiwanego z rzeczywistym staje się oczywiste.
Inżynieria danych
Formatuj konfiguracje Telegrafa lub InfluxDB definiujące potoki zbierania danych. Pliki te często rozrastają się do setek linii, a spójne formatowanie pozwala utrzymać je w czytelnej formie.
Nauka składni TOML
Wklej przykłady z dokumentacji lub samouczków i obserwuj, jak formater je normalizuje. To szybki sposób na poznanie kanonicznego stylu nawiasów, zasad cytowania i grupowania tabel.

Skrócona dokumentacja składni TOML

TOML ma niewielki zestaw konstrukcji. Poniższa tabela zawiera wszystkie elementy strukturalne zdefiniowane w specyfikacji TOML v1.0.0. Formater stosuje spójne odstępy i grupowanie do każdego z nich.

SkładniaNazwaUwagi
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 i YAML rozwiązują nakładające się problemy, ale przyjmują różne kompromisy.

CechaTOMLJSONYAML
Komentarze# komentarze linioweNieobsługiwane# komentarze liniowe
Typowane wartościString, int, float, bool, datetimeString, number, bool, nullWnioskowane (podatne na błędy)
ZagnieżdżanieNagłówki [table]Nawiasy klamroweOparte na wcięciach
Ścisłość specyfikacjiŚcisła (jeden wynik parsowania)Ścisła (RFC 8259)Luźna (wiele poprawnych parsowań)
Obsługa daty/godziny4 natywne typyBrak (użyj ciągów)Niejawna (zawodna)
Końcowe przecinkiNiedozwoloneNiedozwoloneN/D (brak przecinków)

Przykłady kodu

Poniższe przykłady formatują TOML programistycznie w różnych językach i narzędziach. Każdy odczytuje plik, parsuje go i zapisuje sformatowaną wersję.

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

Często zadawane pytania

Co robi formater TOML?
Formater TOML parsuje plik do struktury danych, a następnie ponownie go serializuje ze spójnymi białymi znakami, porządkiem kluczy i stylem cytowania. Semantyczna zawartość pozostaje niezmieniona. Zmienia się jedynie prezentacja wizualna: odstępy wokół znaków równości, puste linie między sekcjami tabel oraz wcięcia zagnieżdżonych wartości.
Czy formatowanie TOML jest bezpieczne dla produkcyjnych plików konfiguracyjnych?
Tak. Formatowanie zmienia jedynie białe znaki i szczegóły kosmetyczne. Sparsowana struktura danych przed i po formatowaniu jest identyczna. Jeśli formater napotka nieprawidłowe dane wejściowe, zgłosi błąd zamiast generować uszkodzone dane wyjściowe. Możesz to zweryfikować, parsując obie wersje i porównując wynikowe obiekty.
Czym TOML różni się od JSON?
TOML obsługuje komentarze, natywne typy daty i godziny, ciągi wieloliniowe oraz nagłówki tabel do organizowania zagnieżdżonych danych. JSON nie ma żadnej z tych funkcji. Format jest zaprojektowany dla plików konfiguracyjnych, które ludzie czytają i edytują. JSON jest zaprojektowany do wymiany danych między programami. W JSON nie można używać komentarzy, co utrudnia dokumentowanie decyzji konfiguracyjnych bezpośrednio w pliku.
Czy mogę formatować TOML z wiersza poleceń?
Tak. Taplo jest najszerzej stosowanym CLI do formatowania TOML. Zainstaluj je przez cargo install taplo-cli lub npm install -g @taplo/cli, a następnie uruchom taplo fmt, aby sformatować wszystkie pliki .toml w projekcie. Obsługuje konfigurację przez plik taplo.toml lub .taplo.toml dla niestandardowych reguł.
Czy formatowanie zachowuje komentarze w plikach TOML?
Ten formater działający w przeglądarce parsuje dane wejściowe do struktury danych i ponownie je serializuje, co usuwa komentarze. Jeśli potrzebujesz zachować komentarze, użyj narzędzia świadomego CST, takiego jak Taplo (CLI) lub toml-edit (biblioteka Rust), które operują na konkretnym drzewie składniowym zamiast na sparsowanych danych.
Jaka jest różnica między formatowaniem a walidacją TOML?
Walidacja sprawdza, czy plik jest zgodny ze specyfikacją, i zgłasza błędy, jeśli nie jest. Formatowanie idzie o krok dalej: waliduje dane wejściowe, a następnie przepisuje je z jednolitym stylem. Każda operacja formatowania obejmuje walidację jako pierwszy krok, więc plik, który zostaje pomyślnie sformatowany, jest gwarantowanie poprawny.
Jakie projekty używają TOML jako formatu konfiguracji?
Cargo Rusta (Cargo.toml), ekosystem pakietowania Pythona (pyproject.toml), statyczne strony Hugo, Deno (deno.toml), Cloudflare Workers (wrangler.toml), InfluxDB, Telegraf i prompt Starship — wszystkie używają TOML. Format zyskał popularność po tym, jak Rust przyjął go jako standard dla manifestów pakietów w 2015 roku.