YAML TOML 변환기

YAML과 TOML을 즉시 양방향 변환합니다. 중첩 객체, 배열, 일반 데이터 타입 지원. 무료, 브라우저에서 처리, 업로드 불필요.

  • 브라우저에서 처리
  • 데이터가 브라우저 밖으로 나가지 않습니다
  • 무료 · 회원가입 불필요
YAML과 TOML 칸 전체를 라벨과 텍스트 그대로 이동합니다. 새 첫 번째 칸으로 포커스가 옮겨집니다. 대기 중인 변환은 취소되며 바꾸기 자체는 변환하지 않습니다.
두 칸과 상태를 지우고 대기 중인 변환을 취소합니다. 도구 안에서 Ctrl+L(Mac은 ⌘+L)로도 지울 수 있습니다.
루트가 매핑인 YAML 문서 하나를 붙여 넣으세요. 입력을 멈추고 0.3초 뒤 TOML이 갱신됩니다. TOML에 원래 값 그대로 담을 수 없으면 변환을 멈추고 필드 경로를 표시합니다.
직접 편집한 내용을 포함하여 YAML 칸의 현재 텍스트 전체를 복사합니다. 빈 칸은 복사할 수 없습니다.
TOML을 붙여 넣으세요. 입력을 멈추고 0.3초 뒤 YAML이 공백 두 개 들여쓰기로 갱신됩니다. 긴 줄은 접지 않으며 YAML에 원래 값을 담을 수 없으면 변환을 멈춥니다.
직접 편집한 내용을 포함하여 TOML 칸의 현재 텍스트 전체를 복사합니다. 빈 칸은 복사할 수 없습니다.
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.

변환 예시

YAML 입력

database:
  host: localhost
  port: 5432
  enabled: true
tags:
  - web
  - backend

TOML 출력

tags = [ "web", "backend" ]

[database]
host = "localhost"
port = 5432
enabled = true

날짜와 시간

YAML 타임스탬프는 문자열이 아니라 TOML 날짜로 출력합니다.

release:
  date: 2026-10-01
  at: 2026-10-01 09:30:00 +9
  utc: 2026-10-01T00:30:00Z
  label: "2026-10-01"
  ratio: .inf
[release]
date = 2026-10-01
at = 2026-10-01T09:30:00.000+09:00
utc = 2026-10-01T00:30:00.000Z
label = "2026-10-01"
ratio = inf

날짜만 있으면 TOML 로컬 날짜가 됩니다. 날짜·시간은 오프셋을 유지해 +09:00으로 씁니다. 오프셋이 없는 날짜·시간은 Z를 붙입니다. YAML 타임스탬프 타입이 이를 UTC로 정의하기 때문입니다. 따옴표로 감싼 “2026-10-01”은 문자열로 남고, .inf는 TOML inf가 됩니다. TOML 날짜는 밀리초까지만 담으므로 09:30:00.123456Z처럼 더 정밀한 타임스탬프나 2026-02-31처럼 없는 날짜가 있으면 변환을 멈춥니다.

반대 방향에서는 TOML 파서가 밀리초 아래 자릿수를 버리므로 더 정밀한 시간이 있으면 TOML → YAML 변환을 멈춥니다. [build] 테이블의 started = 2026-10-01T09:30:00.123456Z는 변환하지 않았습니다: YAML에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /build/started: 2026-10-01T09:30:00.123456Z — 밀리초보다 정밀합니다 메시지를 냅니다. TOML 로컬 날짜·시간에는 오프셋이 없고 YAML은 오프셋 없는 타임스탬프를 UTC로 읽으므로, [build] 테이블의 started = 2026-10-01T09:30:00도 변환하지 않았습니다: YAML에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /build/started: 2026-10-01T09:30:00 — 로컬 날짜·시간입니다. YAML은 오프셋이 없는 시간을 UTC로 읽습니다 메시지와 함께 멈춥니다. YAML → TOML에서는 YAML의 -0.0이 부호를 유지한 TOML -0.0이 되고, ratio: 1.0처럼 값이 정수인 부동소수점도 부동소수점(ratio = 1.0)으로 남습니다.

TOML로 나타낼 수 없는 값

변환 중 값이 바뀌면 아무것도 변환하지 않고, 상태 줄에 각 필드를 JSON Pointer로 표시하고 이유를 씁니다.

service:
  id: 9007199254740993
  owner: ~

변환하지 않았습니다: TOML에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /service/id: 정수 9007199254740993 — ±(2^53 − 1) 범위를 벗어나 JavaScript에서 반올림됩니다; /service/owner: null — TOML에는 null이 없습니다

TOML 패널은 비워지고 복사 버튼은 비활성화되어 이전 결과를 잘못 복사하지 않습니다. 큰 ID는 따옴표로 감싸고(id: "9007199254740993") null을 바꾸거나 지운 뒤 다시 변환하세요. −(253 − 1)부터 253 − 1까지의 정수는 그대로 변환됩니다.

제한 사항

  • 루트는 매핑이어야 하고 문서는 하나만 됩니다. ---로 구분한 여러 문서는 expected a single document in the stream, but found more 오류가 납니다.
  • 큰 정수는 양방향 모두 멈춥니다. TOML → YAML에서는 big = 9007199254740993이 integer value cannot be represented losslessly 오류와 줄 번호를 냅니다. YAML → TOML에서는 위처럼 필드를 표시합니다.
  • js-yaml 처리 한도. js-yaml 4.3.2는 중첩이 100단계를 넘거나, 병합 키(<<)가 처리하는 매핑과 키가 모두 10,000개를 넘거나, 병합 키 하나에 매핑을 100개 넘게 나열한 문서에서 멈춥니다. 오류에는 한도와 줄·열이 나옵니다.
  • 주석은 남지 않고 앵커는 펼쳐집니다.

YAML과 TOML 비교

YAML은 들여쓰기 기반 문법으로 가독성이 높아 Docker Compose, Kubernetes, GitHub Actions 등의 애플리케이션 설정에 널리 사용됩니다. TOML은 Rust(Cargo.toml), Python 패키징(pyproject.toml), Hugo, Zola 등 도구의 표준 설정 형식입니다. 이 도구는 두 형식이 공통으로 지원하는 데이터 타입을 상호 변환합니다.

FAQ

어떤 데이터 타입을 지원합니까?

문자열, 정수, 부동소수점(inf와 nan 포함), 불리언, 배열, 중첩 객체, 날짜를 양방향으로 변환합니다. YAML 날짜(2026-10-01 등)는 TOML 로컬 날짜로, YAML 날짜·시간은 오프셋을 유지한 채 출력합니다. YAML 앵커와 별칭은 변환 전에 해제됩니다. TOML의 날짜·시간은 따옴표 없는 ISO 8601 값(예: 2026-10-01T09:30:00.000+09:00)으로 출력되며, YAML 파서는 보통 타임스탬프로 읽습니다.

YAML에서 TOML 변환이 실패하는 이유는 무엇입니까?

TOML은 루트 문서가 키-값 매핑이어야 하므로 루트가 리스트나 스칼라인 YAML은 변환할 수 없습니다. 또한 변환 중 값이 바뀌는 경우에는 변환하지 않고 각 필드를 경로(/service/owner 등)로 보여 줍니다. 대상은 null(TOML에는 null이 없음), ±(2^53 − 1)을 벗어나는 정수, 밀리초보다 정밀한 타임스탬프, 존재하지 않는 날짜입니다. 이때 TOML 패널은 비워지고, 변환할 수 있는 입력이 될 때까지 복사 버튼이 비활성화됩니다.

YAML 다중 문서 스트림을 지원합니까?

아니요. 단일 문서 YAML만 지원합니다. ---로 구분된 다중 문서를 붙여 넣으면 'expected a single document in the stream' 오류가 나므로 문서를 하나씩 변환하세요.

데이터가 서버로 전송됩니까?

아니요. 모든 변환 처리는 브라우저 내에서 완결됩니다. 데이터가 기기를 벗어나지 않습니다.