TOML JSON 변환기

TOML과 JSON을 즉시 상호 변환합니다. 유효성 검사 포함. 무료, 브라우저에서 처리.

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

TOML의 활용 사례

Rust 프로젝트 설정(Cargo.toml), Python 패키지 설정(pyproject.toml), 정적 사이트 생성기 설정(Hugo, Zola) 등에서 널리 사용됩니다. 기존 JSON 설정을 TOML로 마이그레이션하거나 TOML 내용을 API에 전달할 때 변환이 필요합니다.

변환하면서 바뀌는 것

TOML에는 JSON에 없는 타입이 있고, 그 반대도 있습니다. 다음 입력은

# build settings
title = "x"
created = 2026-09-29T10:00:00Z
day = 2026-09-29

[server]
port = 8080

이렇게 변환됩니다.

{
  "title": "x",
  "created": "2026-09-29T10:00:00.000Z",
  "day": "2026-09-29",
  "server": {
    "port": 8080
  }
}
  • 주석은 사라집니다. JSON에는 주석이 없습니다.

  • 날짜와 시간은 문자열이 됩니다. 오프셋이 있는 날짜-시간에는 밀리초(.000Z)가 붙습니다. JSON을 다시 TOML로 바꾸면 TOML 날짜가 아니라 따옴표로 감싼 문자열이 됩니다.

  • 밀리초보다 정밀한 시간이 있으면 JSON으로 변환하지 않습니다. TOML 파서는 밀리초까지만 남기고 그 아래 자릿수를 버립니다(TOML 1.0은 파서에 이를 허용합니다). [build] 테이블의 started = 2026-10-01T09:30:00.123456Z는 변환하지 않았습니다: JSON에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /build/started: 2026-10-01T09:30:00.123456Z — 밀리초보다 정밀합니다 메시지를 냅니다. .120000처럼 끝에 붙은 0은 정보를 잃지 않으므로 변환합니다. 문자열과 주석 안의 날짜·시간은 텍스트이므로 검사하지 않습니다.

  • inf와 nan이 있으면 JSON으로 변환하지 않습니다. JSON에는 무한대와 NaN이 없고 JSON.stringify는 null로 씁니다. 다음 TOML은

    ratio = inf
    
    [limits]
    max = nan

    변환하지 않았습니다: JSON에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /ratio: inf — JSON으로 나타낼 수 없습니다(JSON.stringify는 null로 씁니다); /limits/max: nan — JSON으로 나타낼 수 없습니다(JSON.stringify는 null로 씁니다) 메시지를 냅니다.

  • ±(2^53 − 1)을 벗어나는 정수는 양방향 모두 변환하지 않습니다. TOML 1.0은 64비트 정수를 허용하지만, TOML 파서는 반올림하지 않고 integer value cannot be represented losslessly 오류로 멈춥니다. JSON → TOML에서는 JSON.parse가 반올림하므로 필드를 표시하고 멈춥니다. 1e400처럼 배정밀도 범위를 넘는 수도 표시합니다.

  • JSON의 null이 있으면 TOML로 변환하지 않습니다. TOML에는 null이 없습니다. 다음 JSON은

    {"user":{"id":9007199254740993,"nickname":null}}

    변환하지 않았습니다: TOML에서는 다음 값을 바꾸지 않고 나타낼 수 없습니다: /user/id: 정수 9007199254740993 — ±(2^53 − 1) 범위를 벗어나 JavaScript에서 반올림됩니다; /user/nickname: null — TOML에는 null이 없습니다 메시지를 냅니다. 큰 ID는 문자열로 쓰고 null을 바꾸거나 지운 뒤 다시 변환하세요.

  • 변환에 실패하면 출력 패널이 비워지고 복사 버튼이 비활성화되어 이전 결과를 잘못 복사하지 않습니다.

  • -0.0은 양방향 모두 부호를 유지합니다. JSON {"offset":-0.0}은 TOML 부동소수점 offset = -0.0이 되고, TOML offset = -0.0은 "offset": -0.0이 됩니다(JSON.stringify만 쓰면 0이 됩니다). JSON 정수 -0은 정수 0으로 씁니다. {"count":-0}은 count = 0이 됩니다. TOML 1.0은 -0과 +0을 0과 같은 정수로 정합니다.

FAQ

TOML이란 무엇입니까?

TOML(Tom's Obvious, Minimal Language)은 Rust의 Cargo, Python의 pyproject.toml 등에 사용되는 설정 파일 형식입니다. INI의 가독성과 JSON의 표현력을 겸비하고 있습니다.

TOML과 YAML의 차이는 무엇입니까?

TOML은 명시적인 타입 지정과 간단한 구문이 특징으로, YAML보다 모호함이 적습니다. YAML은 표현력이 더 높지만 들여쓰기에 주의가 필요합니다.

TOML의 날짜·시각 타입을 지원합니까?

네. RFC 3339 형식의 날짜·시각·datetime 타입 파싱을 지원합니다.

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

아니요. 모든 변환 처리는 브라우저 내에서 완결됩니다.