Skip to content

YouTube JSON3를 SRT 자막으로 변환

YouTube timedtext JSON3 이벤트를 번호와 HH:MM:SS,mmm 타이밍이 포함된 기본 SRT 자막으로 바꿔 보세요.

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

또는 클릭하여 찾아보기

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

핵심 엔진 아키텍처

JSON에서 SRT로 변환 안내

YouTube timedtext JSON3는 tStartMs, dDurationMs, segs 텍스트 조각이 있는 events 배열로 자막을 저장합니다. 이 도구는 해당 구조를 분석해 텍스트 조각을 합치고 종료 시간을 계산한 뒤, 번호와 시작/종료 타임스탬프가 있는 SRT 자막을 만듭니다. 처리는 모두 브라우저에서 완료됩니다.

페이로드 & 구문 검사기

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

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

밀리초 동기화
input.json
JSON 입력
{
"events": [
{ "tStartMs": 1000, "dDurationMs": 3000,
"segs": [{ "utf8": "Hello, world!" }] },
{ "tStartMs": 4500, "dDurationMs": 3500,
"segs": [{ "utf8": "This is a subtitle file." }] }
]
}
output.srt
SRT 출력
1
00:00:01,000 --> 00:00:04,000
Hello, world!
 
2
00:00:04,500 --> 00:00:08,000
This is a subtitle file.
 
3
00:00:08,500 --> 00:00:12,000
Converted locally!
사양 시트

JSON vs SRT 기술 사양

표준 규격 준수
입력 형식

JSON

JSON

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

출력 형식

SRT

SRT

SRT(SubRip)는 순차 번호, HH:MM:SS,mmm --> HH:MM:SS,mmm 형식의 타임스탬프 줄, 한 줄 이상의 자막 텍스트로 구성되는 일반 텍스트 자막 형식입니다. 많은 영상 재생기와 편집 도구에서 널리 쓰이는 교환 형식이지만, 실제 가져오기 여부는 각 도구의 지원 범위에 따라 다릅니다.

형식 차이점

JSON3는 events, tStartMs, dDurationMs, segs를 사용하고 SRT는 번호가 있는 일반 텍스트 큐를 사용합니다
JSON3는 YouTube 내부 API 데이터이고 SRT는 널리 쓰이는 자막 교환 형식입니다
JSON3는 텍스트를 utf8 조각으로 나눠 저장하고 SRT는 각 큐를 하나의 자막 텍스트로 표시합니다
JSON3는 재생기나 편집기 지원이 드물지만 SRT는 VLC, 스마트TV, 편집 도구, 미디어 서버에서 자주 지원됩니다

변환 문제 해결 및 주의 사항

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

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를 SRT HH:MM:SS,mmm 타이밍으로 변환합니다
dDurationMs가 없는 유효 이벤트는 기본 3000ms 지속 시간을 사용합니다
utf8 텍스트 조각을 순서대로 합치고 줄바꿈은 공백으로 정리합니다
tStartMs가 숫자가 아니거나 segs가 배열이 아니거나 텍스트가 비어 있는 이벤트는 건너뜁니다
events 배열 순서대로 항목을 유지하고 SRT 번호를 1부터 다시 매깁니다
파일을 서버로 업로드하지 않고 브라우저에서 처리합니다
무료로 사용할 수 있고 회원가입, 워터마크가 없으며 파일당 최대 50MB까지 지원합니다

변환하는 이유

JSON3는 YouTube timedtext 워크플로에서 쓰이는 전용 구조입니다. SRT는 영상 자막 교환에 널리 쓰이는 단순한 형식입니다.
VLC, MPV, MPC-HC 같은 데스크톱 재생기는 JSON3를 직접 열지 못하는 경우가 많고 SRT는 자주 지원합니다.
Plex, Emby, Jellyfin 같은 미디어 서버나 다양한 스마트TV 환경에서는 외부 자막으로 SRT를 기대하는 경우가 많습니다.
Premiere Pro, DaVinci Resolve 같은 편집 도구는 SRT 가져오기를 지원하는 경우가 많지만 JSON3는 일반적으로 인식하지 않습니다.
FFmpeg, HandBrake, MKVToolNix 같은 도구는 SRT를 다루는 사례가 많아 자동화 워크플로에 활용하기 좋습니다.
JSON3, VTT, SRT가 섞인 자료를 하나의 기본 텍스트 형식으로 정리하면 후속 도구에서 다루기 쉬울 수 있습니다.
Scenarios

일반적인 활용 사례

영상 편집 가져오기

YouTube JSON3를 SRT로 변환한 뒤 SRT 가져오기를 지원하는 Premiere Pro, DaVinci Resolve 같은 편집 도구에서 사용하세요.

미디어 서버 라이브러리

Plex, Emby, Jellyfin 라이브러리에서 쓸 수 있도록 JSON3 자막을 SRT 파일로 정리하세요. 실제 인식 여부는 각 서버 설정에 따라 다릅니다.

모바일 영상 재생

JSON3를 직접 열지 못하는 모바일 재생기에서 시도해 볼 수 있도록 널리 쓰이는 SRT 형식으로 변환하세요.

인코딩 파이프라인

FFmpeg, HandBrake, MKVToolNix 같은 도구에서 SRT 자막을 입력으로 사용하는 워크플로에 맞추세요.

자막 정리

YouTube에서 내려받은 JSON3 자막을 번호와 타임스탬프가 있는 기본 SRT 형태로 정리해 보관하거나 다시 가공하세요.

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

    시작/종료 밀리초를 HH:MM:SS,mmm 형식으로 변환하고 번호, 타임스탬프, 텍스트로 SRT 블록을 만듭니다.

자주 묻는 질문

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 같은 텍스트 없는 마커도 SRT 출력에 영향을 주지 않습니다.

유효한 텍스트 이벤트만 결과에 남으며 events 배열에 나온 순서를 따릅니다. SRT 번호는 입력 번호와 관계없이 1부터 다시 매겨집니다.

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

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