같은 설정을 YAML로 쓰는 도구와 JSON으로 쓰는 도구, TOML을 요구하는 도구가 한 프로젝트 안에 뒤섞이는 일은 흔합니다. Kubernetes 매니페스트와 GitHub Actions 워크플로는 YAML, package.json 과 API 응답은 JSON, Rust의 Cargo.toml 이나 Python의 pyproject.toml 은 TOML입니다.
이 도구는 세 형식을 서로 변환하고, 입력 형식을 자동으로 감지하며, 문법 오류가 있으면 원인을 그 자리에서 알려 줍니다. 들여쓰기 폭을 바꾸거나 키를 알파벳순으로 정렬해 диff를 줄이는 것도 한 번의 클릭으로 가능합니다. YAML의 앵커·별칭은 펼쳐서 변환하고, 중첩된 구조는 깊이에 관계없이 처리합니다.
사용 방법
- 원본 붙여넣기 — 왼쪽에 설정 내용을 붙여넣습니다. 원본 형식은 자동 감지가 기본값이며, 감지 결과가 입력창 아래 배지로 표시됩니다. 의도와 다르게 감지되면 드롭다운에서 형식을 직접 지정하세요.
- 대상 형식 선택 — JSON·YAML·TOML 중 원하는 출력을 고릅니다. 변환은 입력할 때마다 즉시 다시 계산되므로 원본을 고치면서 결과를 바로 확인할 수 있습니다.
- 들여쓰기와 정렬 조정 — 들여쓰기를
min으로 두면 JSON이 한 줄로 압축됩니다. 키 정렬을 켜면 모든 객체의 키가 알파벳순으로 재배열되어, 두 설정 파일을 비교할 때 순서 차이로 생기는 잡음이 사라집니다. - 결과 확인 후 저장 — 복사하거나 파일로 내려받습니다. 서로 바꾸기 버튼을 누르면 결과가 입력으로 이동하고 방향이 뒤집혀, 왕복 변환이 제대로 되는지 검증할 수 있습니다.
자주 묻는 질문
YAML의 주석이 변환하면 사라집니다.
JSON에는 주석 문법이 없기 때문에 구조적으로 보존이 불가능합니다.
YAML → YAML 변환에서도 주석은 사라집니다. 파서가 문서를 데이터 구조로 읽어 들인 뒤 다시 직렬화하는 방식이라 주석은 데이터가 아니어서 버려집니다. 주석을 유지해야 한다면 변환 결과를 새 파일로 쓰지 말고, 원본 파일을 직접 편집하면서 이 도구는 검증·미리보기 용도로만 쓰는 것을 권합니다.
TOML로 변환하니 오류가 납니다.
TOML은 다른 두 형식보다 표현할 수 있는 구조가 제한적입니다.
최상위가 반드시 테이블(객체)이어야 하므로 배열이나 단일 값으로 시작하는 문서는 변환할 수 없습니다. null 에 해당하는 값도 TOML에는 없고, 서로 다른 타입이 섞인 배열도 표준에서 허용되지 않습니다. 이런 데이터가 포함되어 있으면 오류가 표시되니, 해당 항목을 제거하거나 문자열로 바꾼 뒤 다시 시도하세요.
`NODE_VERSION: 20` 이 문자열이 아니라 숫자로 바뀝니다.
YAML은 따옴표 없는 값의 타입을 추론합니다. 20 은 정수, true·no·on 은 불리언, null·~ 는 null로 읽힙니다.
문자열로 유지하려면 원본에서 NODE_VERSION: "20" 처럼 따옴표로 감싸야 합니다. 이 추론 규칙은 실무에서 사고를 자주 일으킵니다. 노르웨이 국가 코드 NO 가 불리언 false로 읽히는 이른바 'Norway 문제'가 대표적이고, version: 1.10 이 숫자 1.1로 축약되는 경우도 흔합니다. 버전·코드·ID처럼 의미가 문자열인 값은 항상 따옴표를 붙이세요.
알아두면 좋은 개념
세 형식의 설계 의도
JSON은 기계 간 데이터 교환을 위해 만들어져 문법이 단순하고 파서가 빠릅니다. 대신 주석이 없고 사람이 길게 쓰기엔 번거롭습니다.
YAML은 사람이 읽고 쓰기 좋게 설계되어 들여쓰기로 구조를 표현하고 주석과 여러 줄 문자열을 지원합니다. 그만큼 문법이 복잡하고 타입 추론에 함정이 많습니다. TOML은 그 중간에서 '설정 파일'에 초점을 맞춰, 명확한 타입과 평평한 섹션 구조로 모호함을 줄였습니다. 깊게 중첩된 데이터에는 잘 맞지 않습니다.
YAML 들여쓰기 규칙
YAML은 탭 문자를 들여쓰기로 인정하지 않습니다. 반드시 공백을 써야 하며, 에디터가 탭을 삽입하도록 설정되어 있으면 파싱 오류가 납니다. 같은 레벨의 항목은 들여쓰기 폭이 정확히 같아야 합니다.
리스트 항목의 - 는 들여쓰기의 일부로 볼 수도, 아닐 수도 있어 두 스타일이 모두 유효합니다. 이 도구의 출력은 일관된 규칙으로 재생성하므로, 원본의 들여쓰기가 뒤섞여 있었다면 변환 후 정돈된 형태를 얻을 수 있습니다.
앵커와 별칭으로 중복 줄이기
YAML에는 &이름 으로 노드를 표시하고 *이름 으로 재사용하는 앵커·별칭 기능이 있습니다. <<: *기본값 형태의 병합 키와 함께 쓰면 Docker Compose나 CI 설정의 중복을 크게 줄일 수 있습니다.
다만 JSON과 TOML에는 대응하는 개념이 없으므로, 변환 시 참조가 모두 펼쳐져 실제 값이 반복 출력됩니다. 원본보다 결과가 길어졌다면 앵커가 펼쳐진 것이며, 데이터 자체는 동일합니다.