ToolDeck

TOML 포매터

TOML 설정 파일 형식화 및 검증

예시 시도

TOML 입력

형식화된 TOML

로컬에서 실행 · 시크릿 붙여넣기 안전
형식화된 TOML이 여기에 표시됩니다…
이것도 써보세요:TOML to JSON 변환기

최종 업데이트: 2026년 4월

TOML 형식화란?

TOML(Tom's Obvious Minimal Language)은 Tom Preston-Werner가 2013년에 만든 설정 파일 형식입니다. 해시 테이블에 직접 매핑되며 모든 값에 명시적 타입을 사용합니다. TOML 포매터는 비정형이거나 일관성 없이 작성된 TOML을 받아 균일한 간격, 올바른 들여쓰기, 표준 키 정렬로 재직렬화합니다. 결과물은 프로젝트 전체에서 동일한 규칙을 따르는 파일로, diff에서 설정 변경 사항을 검토하기 훨씬 쉬워집니다.

2021년 1월에 최종 확정된 TOML v1.0.0 사양은 문법을 충분히 엄격하게 정의하여 규격에 맞는 파서라면 동일한 입력에서 동일한 데이터 구조를 생성합니다. 형식화는 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 포매터를 사용하는 이유

설정 파일은 팀원들이 시간이 지남에 따라 편집하면서 스타일이 어긋나게 됩니다. 탭과 스페이스가 섞이고, 일부 키에 불필요한 따옴표가 붙고, 테이블 섹션의 시각적 그룹화가 흐트러집니다. TOML 포매터는 이 모든 것을 한 번에 정규화합니다.

즉시 형식화
형식화되지 않은 TOML을 붙여넣으면 즉시 깔끔하고 일관된 스타일의 결과를 얻을 수 있습니다. CLI 설치, 프로젝트 설정, 빌드 단계를 기다릴 필요가 없습니다.
🔒
개인정보 보호 우선 처리
모든 파싱과 형식화는 브라우저에서 실행됩니다. 자격증명이나 내부 호스트명을 포함한 설정 데이터가 기기 밖으로 나가지 않습니다.
검증 포함
포매터는 재직렬화 전에 TOML을 파싱합니다. 입력에 문법 오류가 있으면 문제가 있는 줄과 함께 명확한 오류 메시지를 표시하므로, 형식화가 검증 역할도 합니다.
📋
계정 불필요
페이지를 열고 바로 형식화를 시작하세요. 회원가입, 요청 횟수 제한, 사용량 추적이 없습니다. 매번 방문할 때마다 동일하게 작동합니다.

TOML 포매터 활용 사례

프론트엔드 개발
Cloudflare Workers 프로젝트의 wrangler.toml 파일이나 Deno 기반 프론트엔드의 deno.toml 설정을 형식화하세요. 풀 리퀘스트에서 배포 설정을 검토할 때 깔끔한 형식이 도움이 됩니다.
백엔드 엔지니어링
여러 Rust 마이크로서비스의 Cargo.toml 파일을 표준화하세요. 일관된 형식은 저장소 전체에서 의존성 버전과 기능 플래그를 쉽게 파악할 수 있게 해줍니다.
DevOps 및 CI/CD
커밋 전에 .goreleaser.toml, netlify.toml, Starship 프롬프트 설정 파일을 형식화하세요. CI 파이프라인에 형식화 검사를 추가하여 스타일 일관성을 강제할 수 있습니다.
QA 및 테스트
테스트 픽스처를 형식화하여 읽기 쉽고 diff 가능하게 만드세요. 설정 차이로 테스트가 실패할 때, 형식화된 파일은 실제 값과 기댓값의 차이를 명확하게 보여줍니다.
데이터 엔지니어링
데이터 수집 파이프라인을 정의하는 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에는 이런 기능이 없습니다. TOML은 사람이 읽고 편집하는 설정 파일을 위해 설계되었습니다. JSON은 프로그램 간 데이터 교환을 위해 설계되었습니다. JSON에서는 주석을 사용할 수 없어 인라인으로 설정 결정을 문서화하기 어렵습니다.
커맨드라인에서 TOML을 형식화할 수 있나요?
네. Taplo가 가장 널리 사용되는 TOML 포매터 CLI입니다. cargo install taplo-cli 또는 npm install -g @taplo/cli로 설치한 후, taplo fmt를 실행하면 프로젝트의 모든 .toml 파일이 형식화됩니다. 사용자 정의 규칙을 위해 taplo.toml 또는 .taplo.toml 파일을 통한 설정을 지원합니다.
형식화 시 TOML 파일의 주석이 보존되나요?
이 브라우저 기반 포매터는 입력을 데이터 구조로 파싱한 후 재직렬화하므로 주석이 제거됩니다. 주석을 보존해야 한다면 파싱된 데이터가 아닌 구체적 구문 트리를 사용하는 Taplo(CLI) 또는 toml-edit(Rust 라이브러리) 같은 CST 인식 도구를 사용하세요.
TOML 형식화와 TOML 검증의 차이는 무엇인가요?
검증은 파일이 사양에 맞는지 확인하고 맞지 않으면 오류를 보고합니다. 형식화는 한 단계 더 나아가 입력을 검증한 다음 정규화된 스타일로 다시 작성합니다. 모든 형식화 작업에는 검증이 첫 번째 단계로 포함되므로, 형식화에 성공한 파일은 반드시 유효한 파일입니다.
어떤 프로젝트가 TOML을 설정 형식으로 사용하나요?
Rust의 Cargo(Cargo.toml), Python 패키징 생태계(pyproject.toml), Hugo 정적 사이트, Deno(deno.toml), Cloudflare Workers(wrangler.toml), InfluxDB, Telegraf, Starship 프롬프트 모두 TOML을 사용합니다. 2015년 Rust가 패키지 매니페스트의 표준으로 채택한 이후 이 형식의 인기가 높아졌습니다.