핵심 요약
영상이 브라우저에서 재생된다면 WebVTT가 필요합니다. 그 외 거의 모든 곳에서는 SubRip(.srt)이 안전한 선택인데, 가장 단순하고 가장 널리 통용되는 포맷이기 때문입니다. SubViewer(.sbv)는 유튜브 스튜디오가 내려주는 파일 형식으로, 대개 최종 목적지가 아니라 중간 단계로 쓰입니다. ASS와 SSA는 스타일과 위치 지정이 필요한 자막을 위해 존재합니다. 풍부한 포맷을 SRT로 변환하면 타이밍과 텍스트는 남지만 나머지는 영구히 사라집니다. SRT를 WebVTT로 바꾸는 데는 아무런 손실이 없습니다.
대부분 이 질문에 정면으로 부딪히는 게 아니라 옆에서 맞닥뜨립니다. 자막 파일이 있어서 써보려 했는데 뭔가가 거부한 거죠. 이제 상대편이 뭘 원하는지 알아야 하는데, 그러자고 파일 포맷을 새로 공부하고 싶진 않을 겁니다.
그래서 이 글은 포맷이 아니라 목적지를 기준으로 정리했습니다. 파일이 어디로 가는지 찾아서 거기 적힌 포맷을 쓰고, 변환할 때 뭘 잃는지 궁금할 때만 나머지를 읽으면 됩니다. 이 부분이 생각보다 중요한데, 변환이 양방향으로 똑같지 않기 때문입니다. 어떤 방향은 손실이 전혀 없고, 어떤 방향은 조용히 되돌릴 수 없는 것들을 지워버립니다.
파일이 어디로 가는지부터 확인하세요
포맷은 취향의 문제가 아닙니다. 그 파일을 읽어야 하는 대상이 정하는 것이고, 그 대상은 보통 답이 하나뿐입니다. 거기서부터 거꾸로 생각하세요.
- 웹페이지에 올라가는 영상. WebVTT입니다. 웹이 쓰는 포맷이라 브라우저 플레이어는 대개 다른 걸 받아들이지 않습니다.
- 데스크톱이나 셋톱 미디어 플레이어, 혹은 영상 파일 옆에 나란히 두는 자막 파일. SubRip입니다. 가장 단순한 포맷이고 별다른 문제없이 인식될 가능성이 가장 높습니다.
- 플랫폼의 업로드 양식. 페이지에 별다른 안내가 없다면 SubRip입니다. 플랫폼마다 다르기 때문에, 그 플랫폼이 정확히 어떤 포맷을 받는지는 업로드 페이지나 도움말 링크만이 확실히 알려줍니다.
- 스타일이나 위치 지정을 그대로 유지하고 싶은 경우. ASS나 SSA입니다. 더 단순한 포맷으로는 이걸 담을 수 없습니다.
- 유튜브 스튜디오가 준 파일에서 시작하는 모든 경우. 그 파일은 SubViewer이며, 일단 SubRip으로 변환해두는 것이 대개 다른 곳에서 받아들여지는 가장 빠른 길입니다.
목적지가 위 목록에 없고 별다른 안내도 없다면 기본값은 SubRip입니다. 이 기본값의 대가는 실재하지만 크지 않습니다. SRT는 스타일이나 위치 지정을 표현할 수 없어서, 자막은 플레이어가 평소에 두는 자리에 플레이어 자체의 글꼴로 나타납니다. 대화 자막이라면 대개 이게 원래 원하던 결과이기도 합니다.
실제로 쓰게 될 두 가지, SubRip과 WebVTT
SubRip은 텍스트 파일이 가질 수 있는 가장 단순한 형태에 가깝습니다. 각 큐(자막 단위)는 자기 줄에 적힌 번호로 시작하고, 시작과 종료 시각이 담긴 타이밍 줄이 이어지고, 한두 줄의 텍스트가 온 다음, 빈 줄이 다음 큐와의 사이를 구분합니다. 밀리초는 초와 쉼표로 구분됩니다. 큐 사이의 이 빈 줄은 구조적으로 꼭 필요한 부분이라서, SRT를 손으로 고치다가 이 줄을 건드리면 겉으로는 아무 문제 없어 보이는데 실제로는 깨지는 일이 생깁니다.
SubRip의 장점은 읽는 소프트웨어에 아무것도 요구하지 않는다는 점입니다. 해석해야 할 스타일도, 지켜야 할 위치 지정도, 파싱해야 할 헤더도 없습니다. 구조를 큐 단위로 자세히 알고 싶다면 SRT 포맷을 한 줄씩 뜯어본 글을 참고하세요.
WebVTT는 웹의 포맷이고 겉모습은 SubRip과 사촌지간처럼 닮았습니다. 파일은 자기 줄에 단독으로 WEBVTT라는 단어로 시작하는데, 이건 장식이 아니라 플레이어가 이 파일을 식별하는 방식입니다. 밀리초는 쉼표가 아니라 마침표로 구분됩니다. 큐 번호는 선택 사항이라서, 유효한 VTT 파일에 번호가 있을 수도 있고 없을 수도 있으며 둘 다 정상입니다. 이 외에도 WebVTT는 위치 지정과 스타일을 담을 수 있어서, 웹페이지의 자막이 화면 하단 중앙이 아닌 다른 자리에 나타날 수 있는 것도 이 때문입니다.
두 포맷의 실질적인 차이는 문장 하나로 정리될 만큼 작지만, 재생을 실패하게 만들 만큼은 충분히 큽니다. 선택하기 전에 전체를 확인하고 싶다면 WebVTT와 SubRip을 나란히 비교한 글이 있습니다.
이유가 있어서 등장하는 두 가지, SubViewer와 ASS
.sbv 확장자를 쓰는 SubViewer는 유튜브 스튜디오가 내보내는 형식입니다. 직접 선택한 게 아니라 다운로드 버튼을 눌렀더니 이게 나온 것뿐이죠. 이 포맷에는 큐 번호가 전혀 없고, 타이밍 줄의 두 시각은 화살표가 아니라 쉼표로 구분되며, 시간(hour) 표시에는 0을 채우지 않습니다. 사람이 읽기엔 전혀 문제없지만, 이 포맷을 원산지 밖에서 원하는 곳은 비교적 적습니다.
그래서 SBV는 목적지라기보다는 경유지에 가깝습니다. 유튜브 스튜디오에서 자막을 뽑아 다른 곳에서 쓰려 한다면 SubRip으로 변환하는 과정은 짧고 안전하며, 정확히 그 작업만 해주는 SBV to SRT 변환기도 있습니다.
ASS나 SSA가 정말 필요한 경우
.ssa와 .ass 형태의 SubStation Alpha는 뭔가 특정한 모습으로 보여야 하는 자막을 위한 포맷입니다. 스타일, 위치 지정, 가라오케 효과까지 구조화된 Events 섹션 안에 담습니다. 파일을 직접 열어볼 일이 없더라도 알아두면 좋은 특징이 하나 있는데, Events 섹션은 파일 안에서 자신만의 열(column) 순서를 스스로 선언하기 때문에, 이 파일을 읽는 쪽은 타이밍과 텍스트가 어디 있을지 짐작하기 전에 그 선언부터 읽어야 한다는 점입니다.
겉모습 자체가 내용의 일부일 때, 예를 들어 표지판을 그 위치에 맞춰 번역해 넣거나, 두 화자를 다른 색으로 구분하거나, 텍스트를 화면의 특정 위치에 맞춰 등장시켜야 할 때 ASS나 SSA가 필요합니다. 자막이 그냥 화면 하단의 대화라면 필요 없고, 굳이 쓰면 다른 곳에서 받아들여지기가 오히려 더 어려워질 뿐입니다.
변환에 대가가 따르는지를 결정하는 단 하나의 규칙
포맷마다 표현할 수 있는 것이 다릅니다. 목적지 포맷이 원본 포맷이 담고 있던 모든 것을 담을 수 있을 때만 변환에 손실이 없습니다. 담을 수 없을 때, 그 나머지 정보는 품질이 떨어지는 게 아니라 그냥 사라집니다.
더 풍부한 포맷에서 SubRip으로 변환하는 건 정의상 손실이 있습니다. 스타일, 위치 지정, 효과는 이를 표현할 방법이 없는 포맷 안에서 갈 곳이 없으니, 변환기가 그냥 버립니다. 남는 건 타이밍과 텍스트뿐인데, 대부분의 목적에서는 이게 파일의 본질이기도 합니다. 다만 이 손실은 변환된 파일 안에서 영구적이며, 나중에 다시 되돌린다고 해서 스타일이 돌아오지는 않습니다. 확장자만 다른 스타일 없는 파일이 하나 더 생길 뿐입니다.
반대 방향인 SubRip에서 WebVTT로의 변환은 무손실입니다. 변환 과정에서 WEBVTT 헤더 줄이 추가되고 밀리초 구분자가 쉼표에서 마침표로 바뀔 뿐입니다. 큐 번호는 사라지는데, WebVTT가 이를 선택 사항으로 취급하고 어차피 아무도 필요로 하지 않는 정보이기 때문입니다. 큐의 순서 자체가 번호가 알려주던 정보를 이미 다 말해줍니다. 의미 있는 건 아무것도 사라지지 않으니, 이 변환만큼은 별생각 없이 해도 됩니다.
여기서 나오는 습관은 이렇습니다. 원본 파일은 남겨두세요. 변환은 복사본으로 하세요. 위치 지정 정보가 오직 스타일이 적용된 ASS 파일 안에만 있다면, 그걸 SRT로 덮어쓰는 건 한 번만 내릴 수 있는 결정입니다.
변환 작업 자체는 이 사이트의 무료 자막 변환기가 전부 브라우저 안에서 처리하므로 파일이 어디로도 업로드되지 않고 계정도 필요 없습니다. 이런 브라우저 도구들은 텍스트 파일을 변환할 뿐 음성을 텍스트로 옮기지는 않습니다. 자막 파일이 아예 없는 영상이 있다면, iOS, Android, macOS용 SozAI 트랜스크립션 앱이 파일, 녹음, 유튜브 링크를 화자 구분, 요약, 그리고 99개 이상 언어에 걸친 번역까지 포함한 텍스트로 바꿔줍니다.
내 파일이 실제로 어떤 포맷인지 확인하는 법
확장자는 내용을 보장하지 않습니다. .vtt를 .srt로 이름만 바꾼 파일은 여전히 WebVTT이고, 바뀐 건 이름표뿐입니다. 이게 중요한 이유는, 플레이어가 파일을 거부했을 때 사람들이 가장 먼저 시도하는 게 바로 이름 바꾸기인데, 이건 절대 통하지 않는 유일한 방법이기 때문입니다. 플레이어는 이름을 읽는 게 아닙니다. 앞의 몇 줄을 읽다가 예상과 다른 헤더나 구분자를 발견하고 포기하는 겁니다.
텍스트 편집기로 파일을 열어 맨 위를 보면 바로 알 수 있습니다.
- 첫 줄이 WEBVTT면: 확장자가 뭐든 WebVTT입니다.
- 자기 줄에 단독으로 있는 번호 다음에, 밀리초 앞에 쉼표가 있는 타이밍 줄이 오면: SubRip입니다.
- 번호가 없고, 두 타임스탬프가 쉼표로 구분되고, 시간(hour)에 0을 채우지 않으면: SubViewer입니다.
- 열 순서를 스스로 선언하는 줄이 있는 Events 섹션이 있으면: SubStation Alpha의 두 형태 중 하나입니다.
30초만 들여다보면 많은 추측이 필요 없어지고, 다운로드 버튼이 약속한 것과 다른 파일을 준 경우도 이 방법으로 바로 잡아낼 수 있습니다.
변환으로 고칠 수 없는 것들
변환은 그릇을 바꿀 뿐 내용을 바꾸지 않습니다. 타이밍이 영상과 어긋나 있다면 새 포맷에서도 똑같이 어긋난 채로 남습니다. 변환기는 주어진 숫자를 그대로 옮길 뿐 영상이 어떻게 생겼는지는 전혀 모르기 때문입니다. 오타가 난 이름, 빠진 줄, 너무 길게 이어지는 큐도 모두 그대로 넘어옵니다.
변환은 또한 플레이어가 지원하지 않는 포맷을 억지로 받아들이게 만들지도 못합니다. 브라우저 플레이어가 WebVTT를 원한다면, SBV를 SRT로 바꿔봐야 전반적으로는 더 널리 통용되는 포맷이 되었을 뿐 그 특정 목적지에는 여전히 맞지 않습니다. 인기 있는 포맷이 아니라 목적지가 요구하는 포맷을 향해 변환하세요.
그리고 역방향 변환은 손실이 있었던 변환이 지워버린 것을 절대 되살리지 못합니다. 스타일과 위치 지정이 한 번 파일에서 사라지면, 그걸 간직한 유일한 사본은 원본뿐이고, 그것도 원본을 남겨뒀을 때만 그렇습니다. 스타일이 적용된 자막을 다룰 때는 ASS나 SSA 파일을 원본으로 취급하고, 거기서 내보낸 모든 파일은 언제든 다시 만들 수 있는 사본으로 취급하세요. 그러면 변환이 잘못돼도 대가가 몇 분에 그치지, 오후 전체를 날리지 않습니다.

