목차▾
자막 변환 방법
자막 변환은 동영상에 맞춰 글자가 나오는 시각과 내용을 적은 자막 파일을 다른 형식으로 다시 쓰는 일입니다. 영상은 건드리지 않고 자막 파일만 바꾸므로 변환은 금방 끝나고, 시각을 함께 옮기면 어긋난 싱크도 맞출 수 있습니다.
- 위 변환 영역에서 SMI·SRT·VTT 자막 파일을 고릅니다. 여러 개를 한꺼번에 넣을 수 있습니다.
- 바꿀 형식을 고릅니다. 처음 넣은 파일이 SMI·VTT면 SRT가, SRT면 SMI가 먼저 선택됩니다.
- 여러 언어가 든 SMI라면 언어를 고릅니다. 미리보기 글자가 깨져 보이면 인코딩을 직접 고릅니다.
- 필요하면 싱크를 초 단위로 옮기고, 미리보기 표에서 시작·끝 시각과 내용을 확인합니다.
- 다운로드를 누릅니다. 파일이 여러 개면 전체 ZIP으로 한꺼번에 받을 수 있습니다.
결과 파일 이름은 원래 이름에서 확장자만 바뀝니다(movie.smi → movie.srt). Microsoft의 SAMI 문서는 Windows Media Player가 영상과 이름이 같고 같은 폴더에 있는 SMI(.smi) 파일을 자막으로 찾는다고 설명합니다(.sami 확장자는 자동으로 찾지 않음). 영상 파일 이름을 바꿨다면 자막 파일 이름도 같게 맞춰 두세요.
SMI·SRT·VTT는 무엇이 다른가요?
세 형식 모두 글자만 든 텍스트 파일이지만 시각을 적는 방법과 여러 언어·서식을 다루는 방법이 다릅니다. SMI(SAMI)는 Microsoft가 공개한 SAMI 1.0 형식으로 HTML과 비슷한 태그를 씁니다. SRT는 DVD의 이미지 자막과 시각을 뽑아내던 SubRip 프로그램에서 나온 형식으로, 미국 의회도서관의 디지털 형식 자료는 "아주 단순한 텍스트 형식이지만 표준화가 잘 되어 있지 않다"고 적고 있습니다. VTT(WebVTT)는 W3C가 정한 웹 동영상 자막 형식이고, HTML의 <track> 요소가 쓰는 형식입니다.
| 구분 | SMI(SAMI) | SRT(SubRip) | VTT(WebVTT) |
|---|---|---|---|
| 시각 표기 | <SYNC Start=1000> 밀리초, 시작만 | 시작·끝 00:00:01,000(쉼표) | 시작·끝 00:00:01.000(점, 시 생략 가능) |
| 자막이 사라지는 때 | 다음 SYNC가 바꾸거나 로 지움 | 끝 시각 | 끝 시각 |
| 여러 언어 | 한 파일에 언어 Class로 여러 언어 | 언어 구분 없음(언어마다 파일) | 파일 하나에 자막 한 벌 |
| 서식 | HTML 태그(b·i·u·font 등) | 굵게·기울임·밑줄·색 정도(재생기마다 다름) | b·i·u, 클래스(c)·화자(v)·루비 등 |
| 문자 인코딩 | 문서에 정한 것 없음 | 정한 것 없음 | UTF-8만 |
이 도구는 자막 파일만 읽습니다. 영상 파일 안에 든 내장 자막은 꺼낼 수 없고, MKV MP4 변환도 MKV 내장 자막은 결과 MP4에 담지 않으므로 따로 받은 자막 파일을 영상과 함께 두고 쓰세요.
SRT 파일 구조
SRT 파일은 자막 하나마다 번호, 시각 줄, 내용을 차례로 적고 빈 줄로 다음 자막과 나눕니다. 시각은 시:분:초,밀리초이고 시작과 끝 사이에 -->를 씁니다. 내용은 여러 줄이어도 되지만 내용 안에 빈 줄이 있으면 자막이 거기서 끝난 것으로 읽힙니다.
1
00:00:01,000 --> 00:00:03,500
안녕하세요.
반갑습니다.
2
00:00:04,000 --> 00:00:06,000
<i>기울임 자막</i>텍스트 파일이므로 메모장 같은 편집기로 열어 글자를 고칠 수 있습니다. 같은 내용을 VTT로 바꾸면 맨 위에 WEBVTT 줄이 붙고 밀리초 앞의 쉼표가 점으로 바뀌며, SMI로 바꾸면 <SYNC Start=1000> 다음에 내용이 오고 자막이 끝나는 3,500ms에 빈 자막 SYNC가 들어갑니다.
유튜브 고객센터의 「지원되는 자막 파일」 안내에는 SRT·SMI(SAMI)·VTT가 모두 들어 있습니다. 다만 SRT는 기본 형식만 지원하고 마크업 등 스타일 정보를 인식하지 않으며 일반 UTF-8 파일이어야 한다고 적혀 있으므로, 유튜브에 올릴 SRT는 서식 태그를 지워 만들면 됩니다.
SMI를 SRT·VTT로 바꿀 때 달라지는 점
SAMI 1.0 문서에 따르면 <SYNC Start=>의 값은 영상이 시작한 뒤 지난 시간(밀리초)이고, 그 시각이 되면 SYNC 뒤의 내용이 화면에 나옵니다. 자막을 지울 때는 내용 자리에 빈칸 문자 참조 를 씁니다. 끝 시각을 따로 적지 않으므로 이 도구는 다음 SYNC의 시각을 앞 자막의 끝 시각으로 씁니다. 같은 내용이 여러 SYNC에 걸쳐 이어지면 자막 하나로 합칩니다.
- 마지막 자막: 뒤에 지우는 SYNC가 없으면 끝을 알 수 없어 3초 동안 보이게 하고, 화면에 그렇게 했다고 알려 줍니다.
- 여러 언어: SMI는 STYLE 부분에 언어 Class(예:
.KRCC·.ENCC)를 정의하고 문단마다<P Class=KRCC>처럼 언어를 붙입니다. SAMI 1.0 문서에 따르면 재생 엔진은 고른 언어의 문단만 보여 주고, 언어를 고르지 않으면 처음 정의된 Class를 씁니다. 이 도구도 처음 정의된 언어를 먼저 고르고, 목록에서 다른 언어나 모든 언어 함께(위아래로)를 고를 수 있습니다. Class가 없는 문단은 모든 언어에 보이는 것으로 읽습니다. - 언어마다 SYNC를 따로 쓴 파일: 같은 시각에 한국어 SYNC와 영어 SYNC를 따로 적은 파일도 언어별로 나눠 읽으므로 한쪽 언어가 사라지지 않습니다.
- 서식: 굵게·기울임·밑줄과
<font color>글자 색은 서식 유지를 고르면 SRT에 그대로 남습니다. WebVTT에는 font 태그가 없고 색은 클래스와 스타일 시트로 정하는 방식이라 VTT로 바꿀 때 글자 색 지정은 빠집니다. 그 밖의 태그(span·글꼴 이름·크기 등)는 지우고 글자만 남깁니다. - SRT·VTT를 SMI로: SMI는 SYNC마다 화면 전체를 바꾸므로 시간이 겹치는 자막은 겹치는 구간을 나눠 위아래로 합칩니다. 자막 사이에 빈 시간이 있으면
SYNC를 넣고, Windows Media Player가 SAMI 태그를 대문자로 요구할 수 있다는 문서 내용에 따라 SAMI·SYNC·P 태그는 대문자로 씁니다.
한글 자막이 깨질 때(EUC-KR·UTF-8)
자막 파일의 글자는 정해진 규칙(문자 인코딩)에 따라 바이트로 저장됩니다. 한국어 자막에는 EUC-KR(윈도우 코드 페이지 949, CP949)로 저장된 것도 UTF-8로 저장된 것도 있습니다. SRT는 인코딩 표준이 없고 SAMI 1.0 문서에도 정해 둔 인코딩이 없어 같은 확장자라도 파일마다 다를 수 있습니다. 다른 규칙으로 읽으면 한글이 엉뚱한 글자로 보입니다.
- 파일 맨 앞에 BOM(바이트 순서 표시)이 있으면 그에 맞는 UTF-8·UTF-16으로 읽습니다.
- BOM이 없으면 UTF-8 규칙에 어긋나는 바이트가 하나도 없는지 검사해, 맞으면 UTF-8로 읽습니다.
- UTF-8로 읽을 수 없으면 EUC-KR(CP949)로 읽습니다.
판별 결과는 파일 정보에 표시되고, 미리보기가 깨져 보이면 인코딩 목록에서 직접 고를 수 있습니다(일본어 Shift_JIS, 중국어 GB18030·Big5 등). 웹 브라우저의 EUC-KR 해석 규칙(WHATWG Encoding 표준)은 KS X 1001 완성형과 통합형 한글 코드(윈도우 코드 페이지 949)를 함께 읽으므로 '똠·뷁'처럼 완성형에 없는 글자도 깨지지 않습니다. 결과 파일은 UTF-8로 저장합니다. WebVTT는 UTF-8만 허용하는 형식이고, 유튜브도 SRT를 UTF-8로 올리라고 안내합니다.
자막 싱크 맞추는 법과 계산 예시
자막 싱크가 맞지 않으면 먼저 어긋난 방향과 크기를 봅니다. 대사보다 자막이 늦게 나오면 음수를 넣어 앞당기고, 대사보다 먼저 나오면 양수를 넣어 늦춥니다. 모든 자막의 시작·끝 시각에 같은 값을 더합니다.
00:00:10,000 --> 00:00:12,500 자막은 00:00:08,500 --> 00:00:11,000이 됩니다.앞당긴 결과 0초보다 앞으로 완전히 밀려난 자막은 영상이 시작하기 전이라 빼고, 0초에 걸친 자막은 0초부터 보이게 합니다. 영상 앞부분을 잘라 냈다면 잘라 낸 길이만큼 음수로 넣으면 됩니다. 예를 들어 동영상 자르기로 앞 12.3초를 잘라 냈다면 -12.3을 넣습니다.
처음에는 맞다가 뒤로 갈수록 점점 벌어지는 자막은 편집이나 재생 속도가 다른 영상에 맞춰 만든 자막일 수 있어 한 값만 더해서는 맞지 않습니다. 이때는 두 지점으로 맞추기에서 멀리 떨어진 자막 두 개(보통 첫 자막과 마지막 자막)를 골라 영상에서 실제로 나와야 하는 시각을 넣습니다. 두 시각을 잇는 비율로 모든 자막을 늘이거나 줄입니다.
| 자막 | 원래 시작 | 보정 뒤 시작 |
|---|---|---|
| 기준 자막 1(첫 자막) | 00:00:10,000 | 00:00:12,000 |
| 중간 자막 | 00:00:55,000 | 00:00:58,500 |
| 기준 자막 2(마지막 자막) | 00:01:40,000 | 00:01:45,000 |
위 예에서 원래 10초와 100초 사이 90초가 보정 뒤 12초와 105초 사이 93초가 되므로 비율은 93 ÷ 90 = 1.03333입니다. 원래 55초 자막은 12초 + (55초 - 10초) × 1.03333 = 58.5초로 옮겨집니다.
자주 묻는 질문
SMI를 SRT로 바꾸면 무엇이 달라지나요?▾
SMI는 자막이 나오는 시각만 적고 다음 SYNC가 앞 자막을 지우는 방식이라, SRT로 바꿀 때 다음 SYNC 시각을 끝 시각으로 씁니다. 뒤에 SYNC가 없는 마지막 자막은 끝을 알 수 없어 3초 동안 보이게 하고 화면에 알려 줍니다. 여러 언어가 든 SMI는 언어 하나를 고르거나 모든 언어를 위아래로 합쳐 한 파일로 만듭니다. 굵게·기울임·밑줄·글자 색 태그는 유지하거나 지울 수 있습니다.
변환한 자막의 한글이 깨져요.▾
원본 파일의 인코딩을 잘못 읽은 경우입니다. 이 도구는 BOM, UTF-8 규칙 검사, EUC-KR(CP949) 순서로 인코딩을 자동 판별하고 결과를 파일 정보에 표시합니다. 미리보기 글자가 깨져 보이면 인코딩 목록에서 EUC-KR이나 UTF-8을 직접 골라 보세요. 결과 파일은 UTF-8로 저장됩니다.
한국어·영어가 같이 든 SMI에서 한국어만 뽑을 수 있나요?▾
네. 파일을 고르면 SMI의 STYLE에 정의된 언어 Class(예: KRCC·ENCC)를 읽어 언어 목록과 자막 수를 보여 줍니다. 한국어를 고르면 한국어 자막만, 모든 언어 함께를 고르면 두 언어를 한 자막에 위아래로 담은 파일을 만듭니다.
자막 싱크는 어떻게 맞추나요?▾
자막이 영상보다 늦게 나오면 음수(예: -1.5초)를 넣어 앞당기고, 빨리 나오면 양수를 넣어 늦춥니다. 모든 자막의 시작·끝이 같은 만큼 옮겨지며, 0초 앞으로 완전히 밀려난 자막은 빠지고 0초에 걸친 자막은 0초부터 보입니다. 처음엔 맞다가 뒤로 갈수록 어긋나면 두 지점으로 맞추기를 쓰세요.
유튜브에 올릴 자막은 어떤 형식이 좋나요?▾
유튜브 고객센터의 「지원되는 자막 파일」 안내에는 SRT·SMI(SAMI)·VTT가 모두 들어 있습니다. SRT는 기본 형식만 지원하고 마크업 등 스타일 정보를 인식하지 않으며 일반 UTF-8 파일이어야 한다고 안내하므로, SRT로 올릴 때는 서식 태그 지우기를 고르면 됩니다. SMI는 굵게·기울임·밑줄과 font 태그의 color 속성 정도의 간단한 서식을 지원한다고 적혀 있습니다.
자막 파일이 서버에 업로드되나요?▾
아니요. 파일 읽기, 인코딩 판별, 변환, 싱크 조절, ZIP 만들기까지 모두 이 브라우저 안에서 처리하며 자막 파일은 모아모앙 서버로 전송되지 않습니다.
영상 안에 든 자막도 꺼낼 수 있나요?▾
아니요. 이 도구는 SMI·SRT·VTT 자막 파일만 읽습니다. MKV·MP4 같은 영상 파일 안에 든 내장 자막이나 화면에 입혀진 자막은 꺼낼 수 없습니다.
SAMI의 SYNC·Class· ·대문자 태그·같은 이름 파일 찾기는 Microsoft Learn 「Understanding SAMI 1.0」, WebVTT의 시각·머리·cue 설정·UTF-8·태그는 W3C 「WebVTT: The Web Video Text Tracks Format」, SRT의 구조와 유래·인코딩은 미국 의회도서관 「SubRip Subtitle format (SRT)」(FDD000569), HTML track 요소의 형식은 MDN 「<track>」, 유튜브 지원 형식은 유튜브 고객센터 「지원되는 자막 파일」, EUC-KR 해석 규칙과 BOM은 WHATWG 「Encoding Standard」에서 확인했습니다(2026년 10월 확인). 계산 예시는 이 페이지의 변환 코드로 구했습니다. 자막 파일은 브라우저 안에서만 처리하며 서버로 전송하지 않습니다.