Skip to content

YouTube JSON3를 VTT 자막으로 변환

YouTube timedtext JSON3 이벤트를 필수 WEBVTT 헤더와 HH:MM:SS.mmm 타이밍이 포함된 기본 WebVTT로 바꿔 보세요.

JSON 파일을 여기로 드래그 앤 드롭

또는 클릭하여 찾아보기

최대 50MB .json, .json3, .xml, .html 파일 지원

핵심 엔진 아키텍처

JSON에서 VTT로 변환 안내

YouTube timedtext JSON3는 tStartMs, dDurationMs, segs 텍스트 조각이 있는 events 배열로 자막을 저장합니다. 이 도구는 해당 구조를 분석해 텍스트 조각을 합치고 큐 종료 시간을 계산한 뒤, WEBVTT 헤더가 있는 기본 WebVTT 파일을 만듭니다. 처리는 모두 브라우저에서 완료됩니다.

페이로드 & 구문 검사기

JSON → VTT 코드 구문 및 구조 검사

헤더 정의, 타임스탬프 구문, 큐 페이로드 형식을 나란히 비교하여 코드 수준의 대응 관계를 보여줍니다

밀리초 동기화
input.json
JSON 입력
{
"events": [
{ "tStartMs": 1000, "dDurationMs": 3000,
"segs": [{ "utf8": "Hello, world!" }] },
{ "tStartMs": 4500, "dDurationMs": 3500,
"segs": [{ "utf8": "This is a subtitle file." }] }
]
}
output.vtt
VTT 출력
WEBVTT
 
00:00:01.000 --> 00:00:04.000
Hello, world!
 
00:00:04.500 --> 00:00:08.000
This is a subtitle file.
 
00:00:08.500 --> 00:00:12.000
Converted locally!
사양 시트

JSON vs VTT 기술 사양

표준 규격 준수
입력 형식

JSON

JSON

JSON3는 YouTube timedtext API에서 제공하는 자막 형식입니다. 파일은 events 배열이 있는 JSON 객체이며, 각 이벤트에는 tStartMs(시작 밀리초), dDurationMs(지속 밀리초), segs(텍스트 조각 배열)가 있을 수 있습니다. segs의 각 조각은 utf8 필드로 텍스트를 담습니다. 일반적으로 youtube-dl, yt-dlp 같은 도구로 내려받습니다.

출력 형식

VTT

VTT

VTT(WebVTT)는 웹 영상 자막에 널리 쓰이는 텍스트 형식입니다. 파일은 첫 줄에 WEBVTT가 있어야 하고, 각 큐는 HH:MM:SS.mmm --> HH:MM:SS.mmm 타임스탬프와 자막 텍스트로 구성됩니다. 이 도구는 이 기본 구조만 생성하며 스타일 블록, 큐 설정, NOTE 주석은 추가하지 않습니다.

형식 차이점

JSON3는 events 배열을 사용하고 VTT는 WEBVTT 헤더와 큐 블록을 사용합니다
JSON3는 tStartMs와 dDurationMs를 저장하고 VTT는 HH:MM:SS.mmm --> HH:MM:SS.mmm 타임스탬프를 저장합니다
JSON3는 YouTube timedtext용 구조이고 VTT는 웹 영상용 개방형 텍스트 형식입니다
브라우저 track 요소는 JSON3를 직접 불러오지 않으며 WebVTT를 일반적으로 지원합니다

변환 문제 해결 및 주의 사항

플레이어 호환성, 문자 인코딩, 타이밍 동기화에 대한 실용적인 해결책

4 가지 주의 사항
GOTCHA #1

플레이어에서 자막 싱크가 어긋나거나 점차 느려지는 현상

비디오 프레임레이트 차이(23.976 fps와 25 fps 등)로 인해 발생할 수 있습니다. 당사의 자막 싱크 조절 도구를 통해 전체 오프셋을 손쉽게 보정할 수 있습니다.

GOTCHA #2

한글 자막이 깨져서 물음표나 특수문자로 표시되는 경우

EUC-KR이나 ANSI로 저장된 과거 파일은 깨질 수 있습니다. 본 사이트는 표준 UTF-8로 정규화하여 출력합니다.

GOTCHA #3

여러 인물이 동시에 말할 때 자막이 겹쳐 보이는 문제

포맷마다 다중 자막 처리 방식이 다릅니다. 온라인 자막 편집기에서 개별 라인의 타이밍을 미세 조정할 수 있습니다.

GOTCHA #4

영상 편집 프로그램(프리미어, 다빈치 리졸브)에서 가져오기 오류

전문 편집 소프트웨어의 엄격한 포맷 표준을 고려하여 프리미어, 다빈치 리졸브 등에서 안정적으로 열리는 표준 결과물을 생성합니다.

기능

YouTube JSON3 events 배열과 segs 텍스트 조각을 자동으로 분석합니다
tStartMs와 dDurationMs를 VTT HH:MM:SS.mmm 타이밍으로 변환합니다
dDurationMs가 없는 유효 이벤트는 기본 3000ms 지속 시간을 사용합니다
utf8 텍스트 조각을 순서대로 합치고 줄바꿈은 공백으로 정리합니다
tStartMs가 숫자가 아니거나 segs가 배열이 아니거나 텍스트가 비어 있는 이벤트는 건너뜁니다
events 배열 순서대로 큐를 출력하며 첫 줄에 WEBVTT 헤더를 추가합니다
파일을 서버로 업로드하지 않고 브라우저에서 처리합니다
무료로 사용할 수 있고 회원가입, 워터마크가 없으며 파일당 최대 50MB까지 지원합니다

변환하는 이유

HTML5 video의 track 요소는 브라우저가 이해할 수 있는 텍스트 트랙 형식을 기대하며, WebVTT가 일반적인 선택입니다.
JSON3는 YouTube timedtext 워크플로를 위한 구조여서 일반 웹 재생기에서 직접 사용할 수 없는 경우가 많습니다.
Video.js, Plyr, JW Player 같은 웹 플레이어는 WebVTT를 자막 소스로 사용하는 경우가 많습니다.
웹 기반 강의 플랫폼과 미디어 사이트는 자막 업로드에 VTT 계열 형식을 받아들이는 경우가 자주 있습니다.
VTT는 웹 접근성과 자막 표시를 위해 브라우저 생태계에서 널리 다루어지는 형식입니다.
JSON3에는 지속 시간과 텍스트 조각이 있지만, 이 변환은 웹 트랙에 필요한 기본 시간/텍스트 큐만 남깁니다.
VTT는 JSON3로 표현할 수 없는 위치, 스타일, 메타데이터를 지원합니다.
Scenarios

일반적인 활용 사례

HTML5 동영상 삽입

웹사이트의 video 요소에 track으로 연결할 수 있는 기본 VTT 자막을 준비하세요. 실제 표시 방식은 브라우저와 플레이어 설정에 따라 다릅니다.

웹 플레이어 자막

Video.js, Plyr, JW Player처럼 WebVTT를 읽는 플레이어에서 쓸 수 있도록 JSON3 자막을 변환하세요.

자막 업로드 준비

YouTube Studio, Vimeo, 강의 플랫폼처럼 VTT를 받아들이는 업로드 기능에 쓸 파일을 만들어 보세요. 세부 요구 사항은 각 플랫폼의 현재 안내를 확인하세요.

웹 접근성 자료

웹에서 재생하는 교육 영상이나 소개 영상에 텍스트 트랙으로 사용할 수 있는 기본 VTT 자막을 정리하세요.

자막 형식 정리

YouTube에서 내려받은 JSON3를 웹 중심 워크플로에서 다루기 쉬운 VTT 형태로 변환해 보관하세요.

Format Ecosystem

관련 포맷

사용 방법

  1. 1

    .json 또는 .json3 파일을 도구 영역에 올리거나 드래그합니다.

  2. 2

    파서가 JSON 구조를 읽고 events 배열을 순서대로 확인합니다.

  3. 3

    tStartMs가 숫자가 아니거나 segs가 배열이 아니면 해당 이벤트를 건너뜁니다.

  4. 4

    segs의 utf8 값을 이어 붙이고 줄바꿈은 공백으로 바꾼 뒤 앞뒤 공백을 제거합니다.

  5. 5

    텍스트가 비어 있는 이벤트는 결과에 넣지 않습니다.

  6. 6

    dDurationMs가 숫자이면 해당 값을 사용하고, 없으면 3000ms를 기본 지속 시간으로 사용합니다.

  7. 7

    출력 첫 줄에 WEBVTT를 넣고 각 큐를 HH:MM:SS.mmm --> HH:MM:SS.mmm 타임스탬프와 텍스트로 작성합니다.

자주 묻는 질문

JSON3는 YouTube timedtext API에서 제공하는 자막 형식입니다. events 배열이 있는 JSON 객체로 구성되며, 각 이벤트에는 tStartMs(시작 밀리초), dDurationMs(지속 밀리초), segs(텍스트 조각 배열)가 있을 수 있습니다.

각 이벤트의 utf8 조각을 순서대로 이어 붙입니다. 예를 들어 "Hello "와 "world"는 "Hello world"가 됩니다. 줄바꿈은 공백으로 바뀌고 앞뒤 공백이 제거됩니다.

dDurationMs가 숫자이면 시작 시간에 해당 지속 시간을 더해 종료 시간을 만듭니다. 값이 없으면 3000ms를 기본 지속 시간으로 사용합니다.

yt-dlp를 사용할 수 있습니다: yt-dlp --write-auto-sub --sub-format json3 <영상 URL>. 내려받은 .json3 파일을 이 도구에 바로 올려 변환하세요.

tStartMs가 숫자가 아니거나 segs가 배열이 아니면 건너뜁니다. segs가 있어도 utf8 값을 합친 뒤 텍스트가 비어 있으면 결과에 포함하지 않습니다. aAppend 같은 텍스트 없는 마커도 VTT 출력에 영향을 주지 않습니다.

이 도구는 필수 WEBVTT 헤더와 기본 큐 타임스탬프를 포함합니다. VTT를 받아들이는 업로드 기능에서 시도해 볼 수 있지만, 플랫폼마다 요구 사항이 바뀔 수 있으므로 업로드 전에 현재 안내를 확인하세요.

자막을 변환할 준비가 되셨나요?

JSON 파일을 여기에 놓고 VTT로 즉시 변환하세요.