YAML 유효성 검사기

YAML 구문을 온라인으로 검사. 줄과 열 번호가 포함된 상세 오류 메시지와 파싱된 구조 미리보기 제공. 무료, 브라우저에서 처리 — 데이터가 브라우저를 벗어나지 않습니다.

  • 브라우저에서 처리
  • 데이터가 브라우저 밖으로 나가지 않습니다
  • 무료 · 회원가입 불필요
「검증」 또는 Ctrl+Enter(Mac은 ⌘+Enter)를 누르세요. 유효한 YAML은 JSON 미리보기로 표시합니다. 오류에는 파서의 원인과 제공되는 줄·열·스니펫을 표시합니다. 문서에 오류가 있으면 각 문서의 결과와 제공되는 줄 범위를 보여 줍니다. 「지우기」는 입력, 상태, 오류, 미리보기, 정밀도 안내를 비웁니다. 이 도구 안에 포커스가 있으면 Ctrl+L(Mac은 ⌘+L)도 같은 작업을 합니다.
YAML 문서 하나 또는 ---로 나눈 여러 문서를 붙여 넣으세요. 구문만 검사하며 앱 스키마나 lint 규칙은 검사하지 않습니다. 편집만으로는 재검증하지 않으므로 「검증」을 눌러 결과를 갱신하세요.

YAML을 검증하면 여기에 파싱 구조나 구문 오류가 표시됩니다.

예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.

오류 출력 이해하기

유효성 검사 실패 시, 오류 박스에는 다음이 포함됩니다:

  • 원인 — 무엇이 잘못되었는지에 대한 설명 (예: 잘못된 들여쓰기, 예상치 못한 스트림 종료).
  • 줄 번호 & 열 번호 — 입력에서 오류의 정확한 위치.
  • 스니펫 — 파서가 제공하는 주변 컨텍스트. 종종 문제 문자를 가리키는 ^가 포함됩니다.

일반적인 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: 0777777511
time: 12:30"12:30" (문자열)750

YAML 1.1 파서로도 읽히는 파일이라면 "NO", "yes", "0777" 같은 값은 따옴표로 감싸세요.

자주 보는 오류 메시지

입력검증기 메시지
message: Error: something went wrongbad 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-31

    JSON 미리보기에서는 다음 값을 원래대로 보여 줄 수 없습니다: /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 내용은 사용자의 기기를 벗어나지 않습니다.