TOML 포맷터

TOML(Tom's Obvious, Minimal Language)을 정렬하고 검증합니다. key = value・테이블・배열을 보기 좋게 정렬하고, 구문 오류가 있으면 줄 번호와 함께 표시합니다.

TOML의 주요 데이터 타입

타입 작성 예 설명
문자열(기본) "hello" 큰따옴표로 감쌉니다. \n, \t 같은 이스케이프 시퀀스를 사용할 수 있습니다.
문자열(리터럴) 'C:\path' 작은따옴표로 감쌉니다. 이스케이프 처리를 전혀 하지 않으므로 백슬래시가 포함된 경로 문자열에 편리합니다.
정수 42 기본은 10진수이며, 0x(16진수)・0o(8진수)・0b(2진수)와 1_000처럼 밑줄 구분 표기도 가능합니다.
부동소수점수 3.14 지수 표기(1e10)와 inf・nan도 유효한 값으로 취급됩니다.
불리언 true true 또는 false 중 하나입니다. 첫 글자가 대문자인 형식(True)은 무효합니다.
배열 [1, 2, 3] 대괄호 안에 쉼표로 값을 나열합니다. 마지막에 쉼표를 붙이는 것도 허용됩니다.
테이블 [server] 섹션 헤더 이후에 등장하는 모든 key = value는 해당 테이블의 하위 요소가 됩니다.
배열 테이블 [[fruits-basket]] 같은 이름의 테이블을 여러 번 반복해 배열을 표현합니다(예: 여러 개의 의존성 정의).
날짜/시간 1979-05-27T07:32:00Z RFC 3339 형식으로, 따옴표 없이 쓸 수 있는 유일한 복합 값입니다.

TOML 정형과 문법 검사

TOML은 설정 파일을 위해 설계된 형식으로, `key = value`를 늘어놓기만 하면 되는 그 수수함이 장점입니다. 이 도구는 붙여 넣은 TOML을 가지런히 다듬고 동시에 문법이 통하는지를 판정하며, 어딘가 망가져 있으면 그 줄을 짚어 줍니다.

**TOML에서 가장 걸려 넘어지기 쉬운 점은, 구조가 들여쓰기가 아니라 `[테이블명]`이라는 제목 줄에서 나온다는 것입니다.** YAML에 익숙한 사람은 들여쓰기로 계층을 나타내려 손이 가지만, TOML에서 들여쓰기에는 아무 뜻이 없습니다. **한 테이블 제목과 다음 제목 사이에 쓴 키가 그 테이블에 속합니다.** 다시 말해 줄이 놓인 자리 자체가 구조를 정합니다. 또 하나의 특징은 날짜와 시각을 일급 타입으로 갖는다는 점으로, `2026-09-20T10:00:00Z` 같은 값을 따옴표 없이 그대로 적을 수 있습니다.

사용하는 방법

  1. TOML을 붙여 넣습니다 `Cargo.toml`이나 `pyproject.toml`의 내용을 그대로 넣어도 됩니다.
  2. 판정을 확인합니다 **문법이 온전하면 유효한 TOML로 표시되고, 통과하지 못하면 문제가 있는 줄을 짚어 줍니다.**
  3. 정형된 결과를 읽습니다 키와 값의 자리가 맞춰지고 테이블 사이의 경계도 눈에 잘 들어옵니다.
  4. 복사해 되돌립니다 다듬어진 내용을 그대로 파일에 되돌려 놓을 수 있습니다.

더 잘 활용하기 위한 팁

  • 인라인 배열・인라인 테이블은 한 줄로 완결되는 표기만 지원합니다. 여러 줄에 걸친 배열은 미리 한 줄로 합친 뒤 붙여넣어 주세요.
  • 정렬 결과는 "=" 앞뒤를 항상 반각 공백 1칸으로 맞추고, 배열・인라인 테이블의 구분자도 ", "로 통일합니다. 작성자마다 다른 표기 차이를 흡수할 수 있습니다.
  • 주석(# 이후)은 그대로 유지되지만, "#" 바로 뒤에 공백이 없으면 1칸을 보완하는 정도의 최소한의 정리만 이루어집니다.
  • 연속된 빈 줄은 한 줄로 합쳐서 출력되므로 테이블 간의 구분이 더 잘 보입니다.
  • 이 도구는 브라우저 안에서 모든 처리가 완결됩니다. 입력한 설정 파일 내용이 외부 서버로 전송되는 일은 없습니다.

이럴 때 쓸 수 있습니다

설정 파일의 잘못을 찾을 때

**테이블 제목을 엉뚱한 자리에 두면 어떤 키의 소속이 소리 없이 바뀌는데, 이는 눈으로 좀처럼 잡히지 않는 부류의 잘못입니다.**

러스트·파이썬의 프로젝트 설정을 읽을 때

`Cargo.toml`이나 `pyproject.toml`을 정형하면 의존성 사이의 구분이 훨씬 따라가기 쉬워집니다.

다른 형식에서 옮겨 온 것을 검산할 때

JSON이나 YAML에서 고쳐 쓴 설정이 문법으로 통하는지를 그 자리에서 확인할 수 있습니다.

팀의 표기를 맞출 때

커밋 전에 한 번 정형해 두면 관계없는 공백의 흔들림이 차이에 섞이지 않습니다.

TOML 용어

테이블
`[package]`처럼 대괄호로 쓰는 제목으로, **그곳부터 다음 제목까지의 키를 한 묶음으로 모읍니다.**
테이블 배열
`[[dependencies]]`처럼 대괄호를 겹쳐 쓰는 표기입니다. 같은 제목을 되풀이하면 배열의 원소가 하나씩 늘어납니다.
인라인 테이블
`{ a = 1, b = 2 }`처럼 한 줄로 쓰는 테이블입니다. **짧은 설정에 어울리지만 줄을 나눠 쓸 수는 없습니다.**
기본 문자열
큰따옴표로 감싼 문자열로, 그 안에서는 `\n` 같은 이스케이프가 듣습니다.
리터럴 문자열
작은따옴표로 감싼 문자열입니다. **어떤 이스케이프도 듣지 않으므로 윈도우 경로나 정규 표현식을 적기에 알맞습니다.**
날짜시각
TOML이 기본으로 갖춘 타입입니다. `1979-05-27T07:32:00Z` 같은 날짜나 시각을 따옴표 없이 적을 수 있습니다.

자주 묻는 질문

단순한 키-값 조합이 중심이고 여러 사람이 함께 편집하는 설정 파일(의존성 정의 등)에는 TOML이 적합합니다. 들여쓰기 실수로 인한 사고가 적기 때문입니다. 반대로 깊은 중첩 구조나 여러 문서를 하나로 결합해야 한다면 YAML이 표현력 면에서 더 우수합니다.

각 [[section]] 헤더 자체의 정렬은 수행하지만, 같은 이름의 섹션을 하나의 배열로 합쳐 JSON 객체로 변환하는 처리는 하지 않습니다. 복잡한 배열 테이블 구조는 줄 단위로 정렬된 결과를 직접 눈으로 확인한 뒤 사용해 주세요.

RFC 3339 형식으로 구문만 인식하여 값을 그대로 출력합니다. 다만 "2월 30일"처럼 달력상 잘못된 날짜까지는 검증하지 않습니다. 엄격한 날짜 검증이 필요하다면 별도로 확인해 주세요.

"""..."""나 '''...'''는 현재 지원하지 않으며, 해당 줄은 오류로 감지됩니다. 긴 텍스트를 다뤄야 한다면 한 줄로 작성 가능한 이스케이프 문자열 형식으로 바꾼 뒤 시도해 주세요.

아니요. 정렬 처리는 모두 사용 중인 브라우저 안(JavaScript)에서 완결되며, 서버로 전송되거나 저장되는 일은 전혀 없습니다. 인증 정보가 포함된 설정 파일이라도 안심하고 사용하실 수 있습니다.
툴군

여담 ― TOML이 "설정 파일의 공통어"가 된 이유

TOML은 GitHub 공동 창업자인 Tom Preston-Werner가 2013년에 고안한 포맷으로, 정식 명칭인 "Tom's Obvious, Minimal Language"가 설계 철학을 그대로 나타냅니다. JSON처럼 기계가 다루기 쉬우면서도, 사람이 있는 그대로 읽고 써도 헷갈리지 않는 구문을 목표로 만들어졌습니다.

보급을 결정지은 계기는 Rust의 패키지 매니저 Cargo가 설정 파일 형식으로 Cargo.toml을 채택한 것입니다. 이후 Python의 패키징 표준을 정한 PEP 518이 pyproject.toml을 도입하면서, 난립하던 setup.py・setup.cfg・requirements.txt를 하나로 통합하는 역할도 맡았습니다.

YAML과 가장 큰 차이는 "들여쓰기에 의미를 부여하지 않는다"는 설계에 있습니다. YAML은 들여쓰기 폭의 미세한 어긋남이 구문 오류나 데이터 구조 오인식을 일으키기 쉬운 반면, TOML은 [section]과 key = value의 조합만으로 계층을 표현하기 때문에 복사・붙여넣기로 인한 실수가 상대적으로 적다고 알려져 있습니다.

반면 TOML은 YAML에 비해 표현력이 다소 제한적입니다. 값을 재사용하는 앵커・별칭 기능이 없고, 복잡한 다계층 구조를 간결하게 작성하기 어려운 편이라, 용도에 따라 YAML・JSON과 구분해 사용하는 것이 실무에서의 정석으로 여겨집니다.