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 코드 구문 및 구조 검사
헤더 정의, 타임스탬프 구문, 큐 페이로드 형식을 나란히 비교하여 코드 수준의 대응 관계를 보여줍니다
JSON vs VTT 기술 사양
JSON
JSON3는 YouTube timedtext API에서 제공하는 자막 형식입니다. 파일은 events 배열이 있는 JSON 객체이며, 각 이벤트에는 tStartMs(시작 밀리초), dDurationMs(지속 밀리초), segs(텍스트 조각 배열)가 있을 수 있습니다. segs의 각 조각은 utf8 필드로 텍스트를 담습니다. 일반적으로 youtube-dl, yt-dlp 같은 도구로 내려받습니다.
VTT
VTT(WebVTT)는 웹 영상 자막에 널리 쓰이는 텍스트 형식입니다. 파일은 첫 줄에 WEBVTT가 있어야 하고, 각 큐는 HH:MM:SS.mmm --> HH:MM:SS.mmm 타임스탬프와 자막 텍스트로 구성됩니다. 이 도구는 이 기본 구조만 생성하며 스타일 블록, 큐 설정, NOTE 주석은 추가하지 않습니다.
형식 차이점
변환 문제 해결 및 주의 사항
플레이어 호환성, 문자 인코딩, 타이밍 동기화에 대한 실용적인 해결책
플레이어에서 자막 싱크가 어긋나거나 점차 느려지는 현상
비디오 프레임레이트 차이(23.976 fps와 25 fps 등)로 인해 발생할 수 있습니다. 당사의 자막 싱크 조절 도구를 통해 전체 오프셋을 손쉽게 보정할 수 있습니다.
한글 자막이 깨져서 물음표나 특수문자로 표시되는 경우
EUC-KR이나 ANSI로 저장된 과거 파일은 깨질 수 있습니다. 본 사이트는 표준 UTF-8로 정규화하여 출력합니다.
여러 인물이 동시에 말할 때 자막이 겹쳐 보이는 문제
포맷마다 다중 자막 처리 방식이 다릅니다. 온라인 자막 편집기에서 개별 라인의 타이밍을 미세 조정할 수 있습니다.
영상 편집 프로그램(프리미어, 다빈치 리졸브)에서 가져오기 오류
전문 편집 소프트웨어의 엄격한 포맷 표준을 고려하여 프리미어, 다빈치 리졸브 등에서 안정적으로 열리는 표준 결과물을 생성합니다.
기능
변환하는 이유
일반적인 활용 사례
HTML5 동영상 삽입
웹사이트의 video 요소에 track으로 연결할 수 있는 기본 VTT 자막을 준비하세요. 실제 표시 방식은 브라우저와 플레이어 설정에 따라 다릅니다.
웹 플레이어 자막
Video.js, Plyr, JW Player처럼 WebVTT를 읽는 플레이어에서 쓸 수 있도록 JSON3 자막을 변환하세요.
자막 업로드 준비
YouTube Studio, Vimeo, 강의 플랫폼처럼 VTT를 받아들이는 업로드 기능에 쓸 파일을 만들어 보세요. 세부 요구 사항은 각 플랫폼의 현재 안내를 확인하세요.
웹 접근성 자료
웹에서 재생하는 교육 영상이나 소개 영상에 텍스트 트랙으로 사용할 수 있는 기본 VTT 자막을 정리하세요.
자막 형식 정리
YouTube에서 내려받은 JSON3를 웹 중심 워크플로에서 다루기 쉬운 VTT 형태로 변환해 보관하세요.
관련 포맷
JSON(YouTube JSON3)
입력 형식입니다. YouTube timedtext API의 events 배열과 segs 텍스트 조각을 포함합니다.
SRT(SubRip)
웹 브라우저가 아니라 데스크톱 재생기, 미디어 서버, 스마트TV 환경이 대상이라면 고려할 수 있는 대안입니다.
ASS(Advanced SubStation Alpha)
글꼴, 색상, 위치 같은 스타일 정보가 필요할 때 고려할 수 있는 형식입니다. 이 변환은 기본 VTT 텍스트만 만듭니다.
사용 방법
- 1
.json 또는 .json3 파일을 도구 영역에 올리거나 드래그합니다.
- 2
파서가 JSON 구조를 읽고 events 배열을 순서대로 확인합니다.
- 3
tStartMs가 숫자가 아니거나 segs가 배열이 아니면 해당 이벤트를 건너뜁니다.
- 4
segs의 utf8 값을 이어 붙이고 줄바꿈은 공백으로 바꾼 뒤 앞뒤 공백을 제거합니다.
- 5
텍스트가 비어 있는 이벤트는 결과에 넣지 않습니다.
- 6
dDurationMs가 숫자이면 해당 값을 사용하고, 없으면 3000ms를 기본 지속 시간으로 사용합니다.
- 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를 받아들이는 업로드 기능에서 시도해 볼 수 있지만, 플랫폼마다 요구 사항이 바뀔 수 있으므로 업로드 전에 현재 안내를 확인하세요.