TOML 포맷터 & 검증기
TOML을 붙여넣고 포맷 버튼을 누르면 TOML 1.0 정규형으로 정리되고, 검증 버튼을 누르면 문법만 확인해요. 모든 처리는 브라우저 안에서 진행되며 업로드가 없어요.
- 왼쪽 텍스트 영역에 TOML을 붙여넣어 주세요.
- 포맷 버튼을 누르면 @iarna/toml을 거쳐 정규화된 레이아웃으로 출력돼요.
- 검증 버튼은 입력을 변경하지 않고 문법만 확인합니다.
- 오류는 발생한 줄과 열을 알려줘요.
어떤 도구인가요?
@iarna/toml의 TOML 1.0 모드로 파싱한 뒤 정규 레이아웃으로 다시 출력합니다 — 일반 키가 하위 테이블보다 먼저 오고, 따옴표 처리가 일관되며, 정수의 밑줄 구분자는 제거돼요. 검증 버튼은 입력을 바꾸지 않고 스펙에 따라 문법만 확인합니다. 주석은 파싱-덤프 왕복 과정에서 사라져요(대부분의 TOML 포맷터가 동일한 한계를 가집니다).
예시
정리되지 않은 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]` 을 작성한 이후의 모든 키는 그 섹션에 속해요. 일반 키는 첫 테이블 헤더보다 앞에 와야 합니다. 포맷터가 이를 자동으로 재정렬해 주지만, 입력 자체가 유효해야 해요.
- 시간대 없는 날짜시간. `d = 2026-04-26T12:00:00` (Z나 오프셋 없음) 은 "지역 날짜시간" 이에요. 파싱은 되지만 JSON 스타일 소비자는 지역성을 표현하지 못할 수 있어요. UTC 가 필요하면 `2026-04-26T12:00:00Z` 를 사용하세요.
- 인라인 테이블 확장. 인라인 테이블 `point = {x=1, y=2}` 은 닫혀 있고 자기 완결적이에요. 나중에 `point.z = 3` 으로 확장할 수 없어요. 확장이 필요하면 표준 `[point]` 블록 문법을 사용하세요.
- 트리플 쿼트 이스케이프 혼동. `"""..."""` (기본 다중 행)은 이스케이프를 처리하지만 `\'\'\'...\'\'\'` (리터럴 다중 행)은 처리하지 않아요. 두 규칙을 섞으면 가장 흔한 다중 행 문자열 오류가 발생합니다.
자주 묻는 질문
포맷이 데이터를 변경하나요?
레이아웃만 바뀝니다 — TOML 규칙에 따라 일반 키가 하위 테이블보다 앞에 오도록 정렬되고, 공백이 정규화되며, 정수의 밑줄(TOML 의미론)이 제거돼요. 값 자체는 변하지 않습니다.
TOML 주석은 보존되나요?
아니요. @iarna/toml 의 파싱-덤프 왕복은 주석을 유지하지 않아요. 주석을 보존하는 포맷이 필요하면 소스 위치 정보를 유지하는 다른 라이브러리를 사용해야 해요.
TOML 1.0 기준으로 검증하나요?
네. @iarna/toml 은 TOML 1.0 을 따라요 — 혼합 타입 배열, 도트 키, 개정된 문자열 규칙을 모두 허용합니다. TOML 0.5 전용 동작(동질 배열 필수)에 의존하는 입력도 여기서는 파싱되지만, 더 엄격한 0.5 파서에서는 깨질 수 있어요.
얼마나 큰 TOML 파일까지 처리되나요?
약 30 MB 까지는 무리 없이 동작해요. 대부분의 설정 파일은 1 MB 미만입니다.
TOML 이 어디론가 업로드되나요?
아니요. 모든 처리는 브라우저 안에서 진행돼요. 변환 버튼을 눌러도 어떤 서버에도 데이터가 전송되지 않습니다.
왜 포맷터가 키 순서를 바꾸나요?
TOML 1.0 은 같은 스코프 내에서 일반 키(원시 값)가 테이블 헤더보다 먼저 등장해야 한다고 요구해요. 포맷터는 일반 키를 하위 테이블 앞으로 정렬해 이 규칙을 적용합니다. 원본의 순서가 달랐다면 포맷 단계에서 정규화돼요.