SRT와 WebVTT 자막 파일의 차이와 웹 영상에 맞게 고르는 방법
일반 동영상 플레이어·편집기·업로드 서비스와 폭넓게 주고받을 때는 SRT가 편하고, HTML video의 track 요소에 직접 연결할 때는 UTF-8 WebVTT를 선택하세요. 웹용 변환에서는 첫 줄 WEBVTT, 마침표 밀리초, 올바른 MIME 유형과 CORS까지 확인해야 합니다.
두 형식은 모두 시작·종료 시간과 자막 문장을 담지만 문법과 실행 환경이 다릅니다. 확장자만 바꾸면 타임코드 구분자와 필수 헤더가 그대로 남아 브라우저가 파일을 거부할 수 있습니다.
먼저 보는 핵심 요약
- SRT는 널리 쓰이는 단순 자막 형식이고 WebVTT는 웹 미디어 자막을 위해 정의된 형식입니다.
- WebVTT는 WEBVTT 헤더와 마침표 밀리초를 사용하며 큐 설정과 제한된 마크업을 지원합니다.
- 형식 변환 후에는 첫 큐·중간 큐·마지막 큐의 싱크와 웹 서버 응답을 실제 플레이어에서 검사합니다.
SRT와 WebVTT의 기본 문법은 어떻게 다른가요?
SRT 큐는 보통 순번, 쉼표를 쓴 시작·종료 시간, 본문 순서로 적습니다. WebVTT 파일은 첫 줄에 WEBVTT가 필요하고 밀리초 구분자로 마침표를 씁니다. WebVTT 큐 식별자는 선택 사항이며 시간 뒤에 위치·정렬 같은 큐 설정을 붙일 수 있어 단순 확장자 변경만으로는 올바른 변환이 되지 않습니다.
웹 영상에는 왜 WebVTT를 선택해야 하나요?
HTML 표준의 track 요소는 WebVTT 자막 리소스를 사용하는 흐름으로 정의되어 있습니다. kind, srclang, label을 지정하면 브라우저 자막 메뉴에서 언어와 용도를 표시할 수 있습니다. SRT를 지원하는 플레이어나 서비스도 많지만 브라우저 기본 video에 직접 연결할 파일은 WebVTT로 준비하는 것이 호환성 판단을 단순하게 만듭니다.
스타일과 위치 정보는 변환할 때 무엇이 남나요?
기본 대사와 시간은 비교적 직접 옮길 수 있지만 프로그램마다 허용한 SRT 태그가 달라 색상·글꼴 표현이 손실될 수 있습니다. WebVTT의 cue 설정과 허용 마크업도 모든 플레이어가 똑같이 표현한다고 가정하면 안 됩니다. 전달 목적이 접근성 자막이라면 장식보다 정확한 문장, 화자 구분과 타이밍을 우선하세요.
문법이 맞는데 웹에서 자막이 안 나오는 이유
파일은 UTF-8로 저장하고 서버가 자막 리소스를 올바른 content type으로 응답하는지 확인해야 합니다. 영상과 자막의 출처가 다르면 교차 출처 요청 허용도 필요할 수 있습니다. 개발자 도구의 네트워크 탭에서 404, 차단된 CORS, 잘못된 MIME 응답을 먼저 보면 문법 문제와 배포 문제를 구분할 수 있습니다.
단계별로 확인하는 방법
- 사용 환경 고르기
편집·업로드·로컬 재생이면 SRT 지원 여부를, HTML video 연결이면 WebVTT 사용 조건을 확인합니다.
- 자막 문법 변환하기
WEBVTT 헤더와 타임코드 구분자를 바꾸고 빈 줄, 큐 순서와 종료 시간이 올바른지 검사합니다.
- UTF-8과 서버 응답 맞추기
파일을 UTF-8로 저장하고 웹 배포 시 MIME 유형, URL, CORS 응답을 확인합니다.
- 영상에서 세 구간 검수하기
첫 부분·중간·마지막 자막을 재생해 싱크, 줄바꿈, 화자 표시와 누락된 큐가 없는지 봅니다.
판단 기준을 한눈에 비교하기
| 확인 항목 | 판단 기준 |
|---|---|
| 파일 시작 | SRT는 보통 큐 순번으로 시작하고 WebVTT는 WEBVTT 헤더가 필요합니다. |
| 밀리초 표기 | SRT는 00:00:01,500처럼 쉼표를, WebVTT는 00:00:01.500처럼 마침표를 씁니다. |
| 주 사용처 | SRT는 편집기·업로드·로컬 플레이어에 널리 쓰이고 WebVTT는 웹 track 연결에 적합합니다. |
| 추가 표현 | WebVTT는 큐 위치·정렬 설정과 표준화된 자막 텍스트 문법을 제공합니다. |
실행 전 체크리스트
- WebVTT 파일 첫 줄이 WEBVTT로 시작하나요?
- 모든 시작 시간이 종료 시간보다 앞서고 큐 순서가 맞나요?
- 한글 파일을 UTF-8로 저장했나요?
- 실제 웹 플레이어에서 네트워크 응답과 자막 싱크를 확인했나요?
주의할 점
형식 변환은 자막 문장을 번역하거나 영상에 맞게 자동으로 재동기화하지 않습니다. 전체 자막이 일정 시간 밀렸거나 원본 프레임레이트가 바뀐 경우에는 별도의 타임코드 보정이 필요합니다.
함께 보면 좋은 글
자주 묻는 질문
SRT 파일의 확장자만 vtt로 바꾸면 되나요?
안 됩니다. WebVTT 헤더를 추가하고 타임코드의 밀리초 쉼표를 마침표로 바꿔야 합니다. 지원하지 않는 태그와 잘못된 빈 줄도 함께 점검해야 합니다.
WebVTT를 다시 SRT로 바꾸면 스타일이 모두 유지되나요?
기본 문장과 시간은 옮길 수 있지만 WebVTT의 큐 위치, 정렬과 일부 마크업은 SRT에서 같은 방식으로 표현되지 않습니다. 변환 후 중요한 위치와 화자 표시는 직접 확인하세요.
자막 한글이 깨질 때 타임코드도 바꿔야 하나요?
한글 깨짐은 우선 문자 인코딩 문제이므로 UTF-8로 다시 저장해야 합니다. 타임코드 문법은 별도 문제라서 형식에 맞는 쉼표 또는 마침표인지 따로 검사합니다.
브라우저에서 VTT URL은 열리는데 영상에 자막이 안 보이는 이유는 무엇인가요?
track의 src·kind·srclang 설정, 서버의 MIME 응답, 교차 출처 허용과 VTT 파싱 오류를 확인하세요. 개발자 도구 콘솔과 네트워크 탭에서 로드 실패인지 문법 실패인지 먼저 나누면 빠릅니다.
근거와 출처
- W3C WebVTT 사양 — 1차 출처, 조회일 2026-08-30
- WHATWG HTML track 요소 — 1차 출처, 조회일 2026-08-30
도구에서 직접 확인하기
설명한 기준을 실제 값에 적용하려면 SRT ↔ WebVTT 자막 변환기에서 작은 샘플부터 확인하세요. 원본과 결과를 나란히 비교한 뒤 실제 사용 환경에 적용하는 순서가 가장 안전합니다.
이 글은 알파카랩스 Utils의 텍스트 및 문자열 도구와 함께 보는 정보성 가이드입니다. 규격과 외부 서비스 정책은 바뀔 수 있으므로 중요한 결정 전에는 연결된 공식 출처의 최신 내용을 다시 확인하세요.