YAML 유효성 검사기
YAML 구문을 온라인으로 검사. 줄과 열 번호가 포함된 상세 오류 메시지와 파싱된 구조 미리보기 제공. 무료, 브라우저에서 처리 — 데이터가 브라우저를 벗어나지 않습니다.
- 브라우저에서 처리
- 데이터가 브라우저 밖으로 나가지 않습니다
- 무료 · 회원가입 불필요
WeChat으로 스캔하여 공유
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.
오류 출력 이해하기
유효성 검사 실패 시, 오류 박스에는 다음이 포함됩니다:
- 원인 — 무엇이 잘못되었는지에 대한 설명 (예: 잘못된 들여쓰기, 예상치 못한 스트림 종료).
- 줄 번호 & 열 번호 — 입력에서 오류의 정확한 위치.
- 스니펫 — 파서가 제공하는 주변 컨텍스트. 종종 문제 문자를 가리키는
^가 포함됩니다.
일반적인 YAML 구문 오류
- 일관성 없는 들여쓰기 — YAML은 중첩에 공백만 사용해야 합니다 (탭 금지). 같은 레벨에서 2칸과 4칸 들여쓰기를 혼용하면 파싱 오류가 발생합니다.
- 키 뒤 콜론 누락 —
key value는 유효하지 않습니다.key: value로 작성해야 합니다. - 따옴표 없는 특수 문자 — 값에
:,#,[,],{,}등의 문자가 있으면 따옴표로 감싸거나 이스케이프해야 합니다. - 탭 문자 — YAML은 들여쓰기에 탭을 허용하지 않습니다. 모든 탭을 공백으로 교체하세요.
- 중복 키 — 동일한 매핑 블록 내의 중복 키는 YAML 1.2에서 기술적으로 유효하지 않습니다.
예시: 유효한 YAML
server:
host: localhost
port: 8080
tls: true
database:
driver: postgres
name: myapp
credentials:
user: admin
password: "s3cr3t"
allowed_origins:
- https://example.com
- https://api.example.com
예시: 유효하지 않은 YAML (들여쓰기 오류)
server:
host: localhost
port: 8080 # 오류: 추가 공백으로 들여쓰기 불일치
유효성 검사기는 불일치가 감지된 줄 번호와 열 번호를 보고하여 문제를 쉽게 찾아 수정할 수 있습니다.
문법이 맞아도 구조가 맞는 것은 아닙니다
검증기가 알려 주는 것은 문법 오류입니다. 파싱되는 YAML도 구조가 의도와 다를 수 있으니 「파싱 구조」 미리보기를 확인하세요. 다음 파일에서는 carrot의 들여쓰기가 두 칸 모자랍니다.
fruits:
- apple
vegetables:
- carrot
- spinach
결과는 「유효」이고 미리보기는 "vegetables": ["carrot - spinach"]입니다. 다음 줄이 carrot에 이어 붙어 문자열 하나가 되었습니다.
YAML 1.1과 1.2는 값을 다르게 읽습니다
이 도구는 YAML 1.2를 따르는 js-yaml 4.3.2을 씁니다. Python에서 흔히 쓰는 PyYAML은 YAML 1.1을 따릅니다. 같은 파일이라도 결과가 다릅니다.
| YAML | 이 도구 (js-yaml 4.3.2) | PyYAML 6.0.3 safe_load |
|---|---|---|
debug: yes | "yes" (문자열) | True |
country: NO | "NO" (문자열) | False |
octal: 0777 | 777 | 511 |
time: 12:30 | "12:30" (문자열) | 750 |
YAML 1.1 파서로도 읽히는 파일이라면 "NO", "yes", "0777" 같은 값은 따옴표로 감싸세요.
자주 보는 오류 메시지
| 입력 | 검증기 메시지 |
|---|---|
message: Error: something went wrong | bad indentation of a mapping entry (1:15). 값을 따옴표로 감싸기 |
host: 앞에 탭 | tab characters must not be used in indentation |
한 매핑에 timeout이 두 번 | duplicated mapping key |
server 뒤 콜론 누락, 다음 줄 들여쓰기 | end of the stream or a document separator is expected |
제한 사항
-
여러 문서는 하나씩 검증합니다.
---로 나눈 파일(Deployment와 Service가 함께 있는 Kubernetes 매니페스트 등)은 js-yaml의loadAll로 읽습니다. 모두 유효하면 미리보기는 문서마다 한 항목인 JSON 배열입니다. 오류가 있으면 각 문서를 줄 범위와 함께 나열하고 유효 여부나 오류를 표시하므로, 깨진 Service가 유효한 Deployment를 가리지 않습니다. -
문법만 검사합니다. Kubernetes, GitHub Actions, Docker Compose 스키마 검증이나 lint 규칙은 적용하지 않습니다. CI에서는 yamllint(
yamllint .)를 쓰세요. -
미리보기는 JSON입니다. 앵커와
<<병합 키는 펼쳐진 상태로 보이고 주석은 나오지 않습니다. JSON으로 원래대로 보여 줄 수 없는 값은 미리보기 위에 JSON Pointer 경로와 함께 표시하고, YAML은 여전히 유효로 판정합니다. 다음 YAML은size: .inf id: 9007199254740993 due: 2026-02-31JSON 미리보기에서는 다음 값을 원래대로 보여 줄 수 없습니다: /size: inf — JSON으로 나타낼 수 없습니다(JSON.stringify는 null로 씁니다); /id: 정수 9007199254740993 — ±(2^53 − 1) 범위를 벗어나 JavaScript에서 반올림됩니다; /due: 2026-02-31 — 올바른 날짜나 시각이 아닙니다메시지를 보여 줍니다. 미리보기의 해당 위치는null,9007199254740992,"2026-03-03T00:00:00.000Z"이므로 원래 데이터로 복사하지 마세요. 미리보기는 음수 0을-0.0으로 쓰고 타임스탬프를 UTC로 보여 줍니다(2026-10-01T09:30:00+09:00은"2026-10-01T00:30:00.000Z"로 표시). -
js-yaml 처리 한도. js-yaml 4.3.2는 중첩이 100단계를 넘거나, 병합 키(
<<)가 처리하는 매핑과 키가 모두 10,000개를 넘거나, 병합 키 하나에 매핑을 100개 넘게 나열한 문서에서 멈춥니다. 오류에는 “컬렉션 중첩이 100단계를 넘습니다(js-yaml 기본 한도)“처럼 한도와 줄·열이 나옵니다.
FAQ
YAML 유효성 검사기는 무엇을 확인하나요?
YAML 1.2를 준수하는 js-yaml 파서를 사용하여 구문 오류를 확인합니다. 잘못된 들여쓰기, 예상치 못한 문자, 중복 키, 누락된 콜론 등 모든 잘못된 YAML을 감지하고 정확한 줄 번호와 열 번호로 보고합니다.
YAML-JSON 변환기와 어떤 차이가 있나요?
변환기는 입력이 유효하다고 가정하고 형식을 변환합니다. 유효성 검사기는 YAML의 구문이 올바른지 집중적으로 확인하고, 문제를 수정할 수 있는 상세한 오류 메시지를 제공합니다. 이 도구는 'YAML 구문 오류 진단 및 수정' 사용 시나리오를 위한 것입니다.
「파싱된 구조」 미리보기란 무엇인가요?
YAML이 유효한 경우, 도구는 데이터를 파싱하여 형식화된 JSON 형식으로 표시합니다. 구조가 예상과 일치하는지 시각적으로 확인하고, JSON 결과를 복사하여 다른 곳에서 사용할 수 있습니다. .inf, ±(2^53 − 1)을 벗어나는 정수, 2026-02-31처럼 없는 날짜 등 JSON으로 원래대로 보여 줄 수 없는 값은 미리보기 위에 경로와 함께 표시합니다.
어떤 YAML 명세를 지원하나요?
js-yaml 4.x를 사용하며 YAML 1.2 명세를 구현합니다. 앵커, 별칭, 여러 줄 문자열, 블록/플로우 시퀀스, 명시적 타입 태그 등 일반적인 YAML 구문을 지원합니다. --- 로 나눈 여러 문서 파일은 loadAll로 읽고 문서마다 결과를 따로 보여 줍니다.
YAML 데이터가 서버로 전송되나요?
아니요. 유효성 검사는 JavaScript를 통해 브라우저에서 완전히 실행됩니다. YAML 내용은 사용자의 기기를 벗어나지 않습니다.