← 변환기로 돌아가기

도움말 사전

자막 변환의 기초부터 정규식 실전 패턴까지, 필요한 모든 지식을 카드로 정리했습니다

🔍
📖
자막 변환이란?
입문

자막 변환은 하나의 자막 포맷(예: SMI)을 다른 포맷(예: SRT)으로 바꾸는 작업입니다. 미디어 플레이어마다 지원하는 포맷이 다르기 때문에 변환이 필요합니다.

자막자막은 브라우저에서 모든 처리를 수행하므로 파일이 서버로 전송되지 않습니다. 파일을 업로드하고, 출력 포맷을 선택한 뒤, 변환 버튼을 누르면 끝입니다.

  • 1단계: 자막 파일 선택 또는 드래그 앤 드롭
  • 2단계: 출력 포맷과 옵션 설정
  • 3단계: 변환 → 다운로드
📄
지원하는 자막 포맷 한눈에 보기
입문
포맷특징용도
SRT가장 범용적인 텍스트 자막대부분의 플레이어
SMIHTML 기반, 다중 언어한국 자막 커뮤니티
VTT웹 표준 (HTML5 <track>)웹 동영상, 스트리밍
ASS/SSA스타일·이펙트 지원애니메이션 자막
SUB프레임 기반(MicroDVD)레거시 플레이어
SUPBlu-ray PGS 비트맵블루레이 디스크
키보드 단축키
입문
  • Ctrl+O — 파일 열기
  • Ctrl+Enter — 변환 실행
  • Ctrl+S — 결과 다운로드
  • Ctrl+T — 번역 실행
  • Ctrl+D — 다크/라이트 모드 전환
📝
SRT(SubRip) 포맷 구조
입문 포맷

가장 널리 쓰이는 자막 포맷입니다. 순번, 타임코드, 텍스트로 구성됩니다.

1 00:00:01,000 --> 00:00:04,000 첫 번째 자막 텍스트 2 00:00:05,500 --> 00:00:08,200 두 번째 자막 텍스트
  • 타임코드 형식: HH:MM:SS,mmm (콤마로 밀리초 구분)
  • 구분자: --> (앞뒤 공백 필수)
  • 자막 블록 사이에 빈 줄 필수
  • <b>, <i>, <u> 등 기본 HTML 태그 사용 가능
📝
SMI(SAMI) 포맷 구조
입문 포맷

한국 자막 커뮤니티에서 가장 많이 사용되는 HTML 기반 포맷입니다.

<SAMI> <BODY> <SYNC Start=1000> <P Class=KRCC>첫 번째 자막</P> </SYNC> <SYNC Start=5500> <P Class=KRCC>두 번째 자막</P> </SYNC> </BODY> </SAMI>
  • 시간 단위: 밀리초 (Start=1000 → 1초)
  • Class로 언어 구분 (KRCC=한국어, ENCC=영어)
  • 자막 숨김: 빈 <P Class=KRCC> </P>
  • HTML 스타일링 가능: <font color=...>
🌐
VTT(WebVTT) 포맷 구조
중급 포맷

HTML5 <video> 태그의 <track> 요소에 사용되는 웹 표준 자막 포맷입니다.

WEBVTT 00:00:01.000 --> 00:00:04.000 첫 번째 자막 00:00:05.500 --> 00:00:08.200 두 번째 자막
  • 파일 첫 줄에 반드시 WEBVTT 헤더 필요
  • 타임코드 형식: HH:MM:SS.mmm (점으로 밀리초 구분 — SRT와 다름!)
  • CSS로 스타일링 가능: ::cue 셀렉터
  • 위치 지정: position:, line: 등 메타데이터 지원
🎬
ASS/SSA 포맷 구조
중급 포맷

풍부한 스타일과 이펙트를 지원하는 포맷입니다. 주로 애니메이션 자막(팬섭)에서 사용됩니다.

[Script Info] Title: Example ScriptType: v4.00+ [V4+ Styles] Format: Name,Fontname,Fontsize,... Style: Default,Arial,20,... [Events] Format: Layer,Start,End,Style,Name,Text Dialogue: 0,0:00:01.00,0:00:04.00,Default,,자막 텍스트
  • 타임코드 형식: H:MM:SS.cc (센티초, 1/100초)
  • 오버라이드 태그: {\b1} 굵게, {\i1} 이탤릭, {\c&H0000FF&} 색상
  • 줄바꿈: \N (하드), \n (소프트)
  • 다른 포맷으로 변환 시 스타일 정보가 손실될 수 있음
🎥
SUB(MicroDVD) 포맷과 FPS
중급 포맷

프레임 번호로 타이밍을 지정하는 레거시 포맷입니다. FPS(프레임 레이트)에 따라 시간이 달라집니다.

{0}{0}23.976 {100}{200}첫 번째 자막 {300}{450}두 번째 자막
  • 첫 줄 {0}{0}23.976은 FPS 정보 (없으면 자동 감지)
  • 시간 계산: 프레임 ÷ FPS = 초
  • 일반적인 FPS: 23.976(영화), 25(PAL), 29.97(NTSC)
  • FPS가 맞지 않으면 자막이 점점 어긋남 — 변환 시 정확한 FPS 설정 필수
💿
SUP(PGS) 블루레이 자막과 OCR
고급 포맷

Blu-ray 디스크의 PGS(Presentation Graphic Stream) 자막은 이미지(비트맵)입니다. 텍스트로 변환하려면 OCR이 필요합니다.

  • 자막자막은 브라우저에서 OCR 엔진(Tesseract.js)을 실행합니다
  • 언어를 정확히 선택하면 인식률이 크게 향상됩니다
  • 복합 언어(한+영)는 "한국어+English" 옵션 사용
  • OCR 결과에 오타가 있을 수 있으므로 검색/치환으로 후보정 권장
🔧
자막 인코딩 문제 해결하기
입문 인코딩

한국어 자막에서 글자가 깨지는 문제는 대부분 EUC-KR ↔ UTF-8 인코딩 불일치 때문입니다.

  • 증상: "한글" → "ÇѱÛ" 또는 "??" 로 표시
  • 원인: 파일은 EUC-KR인데 플레이어가 UTF-8로 읽거나 그 반대
  • 해결: 자막자막에서 출력 인코딩을 UTF-8로 설정 (현대 표준)
  • 구형 플레이어: EUC-KR이 필요한 경우 EUC-KR 선택

자막자막은 입력 파일의 인코딩을 자동 감지하므로, 출력 인코딩만 선택하면 됩니다.

📋
UTF-8 BOM이란?
중급 인코딩

BOM(Byte Order Mark)은 파일 시작에 붙는 3바이트(EF BB BF)로, "이 파일은 UTF-8"이라는 표시입니다.

  • 있으면 좋은 경우: 윈도우 메모장, 일부 레거시 소프트웨어
  • 없어야 하는 경우: 웹(VTT), 리눅스 환경, 프로그래밍
  • 자막자막의 UTF-8 출력은 BOM 없는 표준 UTF-8입니다
자막 싱크(타이밍) 조정하기
입문 싱크

자막이 영상보다 빠르거나 느릴 때 싱크를 조정합니다.

  • 자막이 빨리 나옴 → 음수(−) 값 입력 (예: -2.5초)
  • 자막이 늦게 나옴 → 양수(+) 값 입력 (예: +1.5초)

정확한 오프셋 찾는 법:

  • 영상에서 대사가 나오는 정확한 시점을 확인
  • 자막 파일의 해당 타임코드와 비교
  • 차이(초)를 싱크 조정 값으로 입력

예) 영상 대사 시점이 00:01:30이고 자막이 00:01:33이면 → -3초 입력

시간 범위 추출
중급 싱크

특정 구간의 자막만 추출할 수 있습니다. 조정/필터 탭에서 시작·종료 시간을 설정하세요.

  • 형식: HH:MM:SS.mmm
  • 시작만 입력: 해당 시점부터 끝까지
  • 종료만 입력: 처음부터 해당 시점까지
  • 둘 다 입력: 해당 구간만 추출

"시작점을 00:00으로 맞춤" 옵션

시간 범위를 입력하면 체크박스가 나타납니다.

  • 체크 해제 (기본): 원본 타임코드를 유지한 채 해당 구간만 잘라냅니다
  • 체크: 추출 시작점을 00:00:00으로 리베이스합니다. 영상을 분할한 뒤 해당 구간의 자막을 분할 영상에 맞추고 싶을 때 사용합니다

예) 10:00~20:00 구간을 추출하면서 체크를 켜면, 원래 10:05인 자막이 00:05부터 시작됩니다.

🔬
정규식(Regex) 기초
중급 정규식

정규식은 텍스트에서 패턴을 찾는 강력한 도구입니다. 검색/치환의 .* 버튼을 활성화하면 사용할 수 있습니다.

기호의미예시
.아무 문자 1개a.c → abc, a1c
*앞 문자 0회 이상ab*c → ac, abc, abbc
+앞 문자 1회 이상ab+c → abc, abbc
?앞 문자 0~1회colou?r → color, colour
[...]문자 클래스[aeiou] → 모음 매치
^줄의 시작^Hello
$줄의 끝end$
\d숫자 [0-9]\d+ → 123
\s공백 문자\s+ → 연속 공백
🔗
캡처 그룹과 역참조
중급 정규식

괄호 (...)로 매치한 부분을 치환에서 $1, $2로 재사용할 수 있습니다.

/* 이름 순서 바꾸기 */ 검색: (\w+)\s(\w+) 치환: $2 $1 결과: "John Smith" → "Smith John" /* 타임코드 형식 변환 */ 검색: (\d{2}):(\d{2}):(\d{2})\.(\d{3}) 치환: $1시간 $2분 $3초 결과: "01:23:45.000" → "01시간 23분 45초"
🗑
HTML/스타일 태그 제거
중급 정규식

자막에 포함된 HTML 태그나 스타일 코드를 일괄 제거하는 패턴입니다.

/* 모든 HTML 태그 제거 */ 검색: <[^>]+> 치환: (빈칸) /* font 태그만 제거 (내용 보존) */ 검색: </?font[^>]*> 치환: (빈칸) /* ASS 오버라이드 태그 제거 */ 검색: \{[^}]*\} 치환: (빈칸) 예시: "{\b1}굵은{\b0} 텍스트" → "굵은 텍스트"
🗑
괄호 안 내용 제거 (주석·CC 정보)
중급 정규식

청각 장애인용(SDH/CC) 자막의 화자명, 효과음 등을 제거할 때 유용합니다.

/* 대괄호 안 내용 제거 [음악], [웃음] 등 */ 검색: \[[^\]]*\]\s* 치환: (빈칸) /* 소괄호 안 내용 제거 (나레이션) 등 */ 검색: \([^)]*\)\s* 치환: (빈칸) /* 화자명 제거: "철수:" 형태 */ 검색: ^[가-힣a-zA-Z\s]+:\s* 치환: (빈칸)
🧹
공백·줄바꿈 정리 패턴
중급 정규식
/* 연속 공백을 하나로 */ 검색: \s{2,} 치환: (공백 1개) /* 줄 앞뒤 공백 제거 */ 검색: ^\s+|\s+$ 치환: (빈칸) /* 빈 줄(공백만 있는 줄) 제거 */ 검색: ^\s*$ 치환: (빈칸) /* ♬, ♪ 등 음악 기호 제거 */ 검색: [♪♬♩♫]+\s* 치환: (빈칸)
🕒
타임코드 관련 정규식
고급 정규식

SRT/VTT 타임코드를 직접 조작하는 패턴입니다. (일반적인 싱크 조정은 내장 기능 사용 권장)

/* SRT 타임코드 매치 */ \d{2}:\d{2}:\d{2},\d{3} /* VTT 타임코드 매치 */ \d{2}:\d{2}:\d{2}\.\d{3} /* SRT→VTT 밀리초 구분자 변환 (콤마→점) */ 검색: (\d{2}:\d{2}:\d{2}),(\d{3}) 치환: $1.$2 /* 타임코드 라인 전체 매치 */ \d{2}:\d{2}:\d{2}[,.]\d{3}\s*-->\s*\d{2}:\d{2}:\d{2}[,.]\d{3}
🔄
텍스트 변환 패턴
중급 정규식
/* 전각 문자를 반각으로 (일본어/중국어 자막) */ 검색: ? 치환: ? /* 이중 따옴표 통일 (" " → " ") */ 검색: ["""] 치환: " /* 말줄임표 통일 (..., …, ‥ → ...) */ 검색: […‥]+|\.{2,} 치환: ... /* 줄바꿈 문자 통일 (CR+LF → LF) */ 검색: \r\n 치환: \n
🚫
광고·워터마크 텍스트 제거
중급 정규식

다운로드한 자막에 삽입된 광고성 텍스트나 사이트 주소를 제거하는 패턴입니다.

/* URL 제거 */ 검색: https?://[^\s<>]+ 치환: (빈칸) /* www 주소 제거 */ 검색: www\.[^\s<>]+ 치환: (빈칸) /* 특정 워터마크 문구 제거 */ 검색: (?i)subtitle(s)?\s*(by|from|:).* 치환: (빈칸) /* "자막 제공: OOO" 패턴 제거 */ 검색: (자막|번역|제공|출처)\s*[::]\s*.* 치환: (빈칸)
💡
전방탐색(Lookahead)과 후방탐색(Lookbehind)
고급 정규식

매치에는 포함하지 않으면서 조건을 검사하는 고급 패턴입니다.

/* 긍정 전방탐색 (?=...) */ "뒤에 ~가 오는 것만 매치" */ 검색: \d+(?=원) "1000원" → "1000" 매치 ("원" 제외) /* 부정 전방탐색 (?!...) */ "뒤에 ~가 오지 않는 것만 매치" */ 검색: \d+(?!원) "1000개" → "1000" 매치 /* 긍정 후방탐색 (?<=...) */ 검색: (?<=\$)\d+ "$500" → "500" 매치 ("$" 제외) /* 부정 후방탐색 (?<!...) */ 검색: (?<!#)\d{3} "456" 매치, "#123" 비매치
📋
다중 파일 일괄 변환과 병합
중급 고급

여러 자막 파일을 한 번에 처리할 수 있습니다.

  • 일괄 변환: 파일을 여러 개 선택하면 각각 독립적으로 변환됩니다
  • 병합: "다중 파일 병합" 옵션을 체크하면 모든 자막이 하나로 합쳐집니다

병합 모드 선택

  • 시간순 정렬: 모든 파일의 자막을 원본 타임코드 그대로 합쳐서 시간순으로 정렬합니다. 같은 영상에 여러 언어 자막이 있을 때 유용합니다
  • 순서대로 이어붙이기: 파일 순서대로 타임코드를 누적 오프셋하여 연결합니다. 영상을 A, B, C로 분할하고 각각 00:00부터 시작하는 자막을 만든 뒤, 다시 하나로 합칠 때 사용합니다

파일 순서 변경

파일 목록의 드래그 핸들()을 끌어서 파일 순서를 변경할 수 있습니다. "순서대로 이어붙이기" 모드에서는 이 순서가 곧 연결 순서가 됩니다.

🌐
자막 번역 기능 활용과 제한사항
중급 고급

파일을 업로드한 뒤 번역 카드에서 소스/타겟 언어를 선택하고 "번역하기"를 누르면 자막 텍스트가 번역됩니다.

기본 사용법

  • 번역 후 변환하면 번역된 텍스트가 출력 파일에 적용됩니다
  • "원본 복원" 버튼으로 언제든 원래 텍스트로 되돌릴 수 있습니다
  • 15개 이상의 언어를 지원합니다

번역 제한사항

항목제한
최대 자막 줄 수2,000줄 — 초과 시 앞부분만 번역됩니다
처리 단위200줄씩 청크 전송 — 진행 바로 확인 가능
번역 엔진외부 API 사용 (브라우저 처리 불가한 유일한 기능)

오류 발생 시 대처법

  • "HTTP 429" — API 요청 한도 초과. 1~2분 후 재시도하세요
  • "네트워크 오류" — 인터넷 연결을 확인한 뒤 다시 시도하세요
  • "HTTP 500/503" — 번역 서버 일시 장애. 잠시 후 재시도하세요
  • 번역이 중간에 멈춤 — 페이지를 새로고침하고 파일을 다시 업로드 후 재시도
  • 긴 자막 파일 — 2,000줄을 초과하면 시간 범위 추출로 구간을 나누어 번역하세요
🛠
어떤 출력 포맷을 선택해야 할까?
입문 고급
사용 환경추천 포맷
범용 (대부분의 플레이어)SRT
한국 자막 사이트 업로드SMI
웹 동영상, YouTubeVTT
스타일이 필요한 애니 자막ASS
인코딩 변환만 할 때원본 유지

"자동" 옵션은 입력 포맷에 따라 최적의 출력 포맷을 선택합니다 (SMI→SRT, SRT→SMI 등).

"자동" 변환 규칙
중급 고급

출력 포맷을 "자동"으로 설정했을 때의 변환 규칙:

  • SMI → SRT (가장 범용적인 포맷으로)
  • SRT → SMI (한국 자막 환경 고려)
  • VTT → SRT
  • ASS/SSA → SRT
  • SUB → SRT
  • SUP → SRT (OCR 후 텍스트화)
💡
자주 묻는 문제와 해결법
입문
  • 변환 후 타임코드가 사라졌어요 → 원본 파일이 손상되었을 수 있습니다. 다른 에디터에서 확인해보세요
  • SMI 파일이 한 줄로 표시돼요 → 인코딩을 UTF-8로 변환하면 해결됩니다
  • SUP 파일 OCR이 느려요 → 언어를 정확히 선택하면 속도가 빨라집니다. 파일 크기에 따라 수 분이 걸릴 수 있습니다
  • 다운로드가 안 돼요 → 팝업 차단을 확인하세요. 변환을 먼저 실행해야 합니다
🚀
효율적인 자막 작업 워크플로우
중급

자막 정리를 체계적으로 진행하는 권장 순서:

  • 1. 파일 업로드 후 미리보기로 원본 확인
  • 2. 검색/치환(정규식)으로 불필요한 태그·광고 제거
  • 3. 싱크 조정이 필요하면 오프셋 설정
  • 4. 필요시 번역 실행
  • 5. 출력 포맷·인코딩 설정 후 변환
  • 6. 미리보기에서 결과 확인 → 다운로드

영상 분할 후 자막 분할/합치기 워크플로우

긴 영상을 A, B, C로 분할한 경우:

  • 분할: 원본 자막을 업로드하고, 시간 범위 추출로 각 파트의 구간을 지정합니다. "시작점을 00:00으로 맞춤"을 체크하면 분할 영상에 맞는 타이밍으로 추출됩니다
  • 합치기: 분할된 자막 파일들을 모두 업로드하고, 병합 체크 후 "순서대로 이어붙이기" 모드를 선택합니다. 드래그로 파일 순서를 맞춘 뒤 변환하면 됩니다
🔒
개인정보와 보안
입문

자막자막은 100% 브라우저 내 처리를 원칙으로 합니다.

  • 업로드한 파일은 서버로 전송되지 않습니다
  • 모든 변환·OCR·검색/치환이 브라우저에서 실행됩니다
  • 번역 기능만 외부 API를 사용합니다 (번역 서비스 특성상 불가피)
  • 인터넷이 끊겨도 번역 외 모든 기능을 사용할 수 있습니다
📚
실전 정규식 레시피 모음
고급 정규식

바로 복사해서 쓸 수 있는 패턴 모음입니다.

/* 1. 한글만 남기기 */ 검색: [^가-힣\s.,!?] 치환: (빈칸) /* 2. 영어+숫자만 남기기 */ 검색: [^a-zA-Z0-9\s.,!?] 치환: (빈칸) /* 3. 중복 줄 표시 (같은 내용 연속) */ 검색: ^(.+)\n\1$ /* 4. 3글자 이하 짧은 자막 찾기 */ 검색: ^.{1,3}$ /* 5. 이모지/특수 유니코드 제거 */ 검색: [\u{1F600}-\u{1F9FF}] 치환: (빈칸) /* 6. 숫자에 천 단위 콤마 찾기 */ 검색: \d{1,3}(,\d{3})+ /* 7. "- " 로 시작하는 대사 구분선 제거 */ 검색: ^-\s* 치환: (빈칸)