블로그/2026년 5월 15일·8 분 읽기

SMS 글자 수 제한 2026: GSM-7 vs UCS-2 완전 가이드

단일 SMS는 GSM-7 인코딩에서 160자, UCS-2 인코딩에서 70자입니다. 통신사가 어떤 인코딩을 선택할지는 메시지 내용에 따라 자동으로 결정됩니다. 모든 글자가 GSM-7 기본 알파벳 안에 있으면 160자를 모두 사용할 수 있습니다. 단 하나의 글자라도 그 알파벳 밖이라면 메시지 전체가 UCS-2로 다시 인코딩되어 한도가 70자로 떨어집니다.

한국어로 SMS를 보내면 한글이 GSM-7 알파벳 밖이므로 항상 UCS-2가 적용됩니다. 즉, 한국어 단일 SMS는 70자 이내여야 합니다. 70자를 넘으면 메시지는 분할 세그먼트로 쪼개집니다. 각 세그먼트는 수신 기기가 메시지를 다시 합칠 수 있도록 6바이트 헤더를 포함하므로, 분할 SMS는 세그먼트당 GSM-7에서 153자, UCS-2에서 67자만 사용합니다.

SMS 한도 빠른 참조

시나리오한도비고
단일 SMS, GSM-7160자일반 라틴 텍스트, 이모지/곡선 따옴표 없음
단일 SMS, UCS-270자한글, 이모지 등 GSM-7 외 모든 문자
분할 세그먼트, GSM-7153자6바이트 UDH가 세그먼트당 7자 차지
분할 세그먼트, UCS-267자6바이트 UDH가 세그먼트당 3자 차지
최대 세그먼트 (대부분 통신사)6-10개초과 시 잘리거나 거부될 수 있음
이모지UCS-2 유닛 2개메시지 전체를 UCS-2로 강제
iMessage / KakaoTalk / WhatsApp20,000자+SMS가 아님. 완전히 다른 규칙

GSM-7 인코딩: 160자 표준

GSM-7은 GSM 03.38 표준에 정의된 기본 SMS 인코딩입니다. 문자당 7비트로 패킹해 1,120비트(140바이트) SMS 페이로드에 160자가 들어갑니다. 알파벳은 128개의 기본 문자와 10자 확장 테이블을 가집니다. 이 138자 밖의 문자가 있으면 UCS-2로 전환됩니다.

기본 알파벳은 악센트 없는 라틴 문자(A-Z, a-z), 0-9 숫자, 일반 구두점, 공백, 줄바꿈, 캐리지 리턴, 소수의 유럽 악센트 문자, 과학 표기에 사용되는 그리스어 대문자, 몇몇 통화/기호 문자를 다룹니다.

GSM-7 확장 문자 (각 2자로 계산)

기술적으로는 GSM-7이지만 확장 테이블에 있어 각각 2자로 계산됩니다.

  • 중괄호 { }, 대괄호 [ ], 파이프 |, 백슬래시 \, 틸드 ~, 캐럿 ^
  • 유로 기호 EUR
  • 폼 피드(form feed)

UCS-2 인코딩: 70자로 떨어지는 순간

UCS-2는 16비트(2바이트) Unicode 인코딩입니다. 같은 140바이트 SMS 페이로드에 세그먼트당 70 UCS-2 코드 유닛, 분할 시 67개가 들어갑니다. 통신사는 단 하나의 문자가 GSM-7 밖에 있는 순간 UCS-2로 전환합니다. 부분 변환은 없습니다. 한 글자가 메시지 전체를 뒤집습니다.

가장 일반적인 UCS-2 트리거는 발신자가 생각하지 않는 문자들입니다. Word와 macOS가 자동으로 직선 따옴표 대신 넣는 곡선 따옴표, em-dash와 en-dash, 줄임표 문자, 모든 이모지, 그리고 비라틴 문자(키릴, 그리스 소문자, 아랍어, 히브리어, 태국어, CJK). 한국어는 항상 UCS-2입니다.

분할 SMS: 왜 세그먼트가 153/67자인가

메시지가 단일 SMS 한도를 초과하면 세그먼트로 분할되고 각 세그먼트가 별도의 SMS로 무선 전송됩니다. 수신자 휴대폰이 올바른 순서로 다시 조립할 수 있도록 각 세그먼트는 참조 번호, 총 세그먼트 수, 위치를 담은 사용자 데이터 헤더(UDH)를 포함합니다.

UDH는 6바이트입니다. GSM-7에서는 7자에 해당해 세그먼트당 용량이 160자에서 153자로 줄어듭니다. UCS-2에서는 같은 6바이트가 3 UCS-2 코드 유닛이므로 70자에서 67자로 떨어집니다.

빠른 세그먼트 계산

  • 한글 100자 메시지: UCS-2 강제, 100 > 70, ceil(100 / 67) = 2세그먼트
  • 71자 영어 + 이모지: UCS-2 강제, 71 > 70, 2세그먼트
  • 320자 일반 ASCII: ceil(320 / 153) = 3세그먼트
  • 한글 정확히 70자: UCS-2 단일 SMS, 1세그먼트

멀티 세그먼트 SMS의 실제 비용

거의 모든 상업용 SMS API는 메시지가 아닌 세그먼트당 청구합니다. 가격 계산은 단순합니다. 총 비용 = 메시지당 세그먼트 수 × 수신자 × 세그먼트당 요금. 비싸지는 지점은 인코딩 함정입니다. 곡선 따옴표가 포함된 캠페인은 조용히 세그먼트 수를 두 배로 늘리고 청구액도 두 배로 만듭니다.

한국 통신사 기준으로는 SMS(80바이트, 한글 40자), LMS(2,000바이트, 한글 1,000자), MMS(이미지 포함)로 구분되며, LMS와 MMS는 일반적으로 SMS보다 단가가 높습니다.

UCS-2를 강제하는 흔한 문자

  • 한글: 자모와 완성형 음절 모두 GSM-7 밖이므로 항상 UCS-2 강제.
  • 곡선 따옴표: Word, Pages, macOS가 자동으로 직선 따옴표를 곡선으로 바꿉니다. SMS 발송 전 일반 텍스트 단계를 거치세요.
  • em-dash와 en-dash: 모두 UCS-2 강제. ASCII 하이픈에 양쪽 공백을 두거나 문장을 둘로 나누세요.
  • 줄임표 문자: 단일 글자 줄임표(…)는 UCS-2. ASCII 세 점(...)이 시각적으로 동일하면서 GSM-7입니다.
  • 모든 이모지: UCS-2를 강제하고 70자 중 2자를 소비. 피부톤과 복합 이모지는 4자 이상.
  • 비라틴 문자: 키릴, 그리스 소문자, 아랍어, 히브리어, 태국어, 데바나가리, 중국어, 일본어, 한국어 모두 UCS-2.

iMessage / KakaoTalk / WhatsApp: 한도가 적용되지 않는 경우

160/70 한도는 SMS가 GSM 제어 채널을 타고 140바이트 페이로드 제약을 받기 때문에 존재합니다. 데이터 기반 프로토콜로 옮기는 순간 이 한도들은 사라집니다.

  • iMessage: Apple의 서비스는 약 20,000자 한도. GSM-7 / UCS-2 구분 없음, 세그먼트 청구 없음.
  • RCS (Rich Communication Services): GSMA가 지원하는 SMS의 후속. 고정 글자 한도 없음(보통 8,000-20,000자). 리치 미디어, 읽음 확인, 입력 표시 지원. 안드로이드와 iOS 18+에서 광범위하게 지원.
  • WhatsApp: 메시지당 65,536자, 분할 없음, 인코딩 규칙 없음.
  • KakaoTalk: 한국에서 가장 널리 쓰이는 메신저로 사실상 한도가 없습니다(메시지당 약 5,000자). 비즈니스 메시지(알림톡)는 1,000자 한도.
  • Telegram, Signal, Messenger: 일반 사용에서 사실상 한도 없음(메시지당 4,000-20,000자 이상).

SMS 비용을 줄이는 실용 팁

  • 일반 ASCII 사용. 발송 전에 곡선 따옴표, 멋진 대시, 줄임표 문자를 제거하세요.
  • 가치가 없으면 이모지 빼기. 모든 이모지는 UCS-2를 강제하고 최소 2자를 소비합니다.
  • 프로모션 SMS는 160자 이하 유지. 1 GSM-7 세그먼트 안에 머무는 것이 최고의 비용 최적화.
  • 한국어 SMS는 70자 이하 유지. UCS-2 단일 세그먼트를 목표로 하세요. 70자를 넘으면 즉시 비용이 두 배가 됩니다.
  • 링크 단축. UTM 파라미터가 붙은 https URL은 70자를 잡아먹습니다. 브랜드 단축 링크를 사용하세요.
  • 발송 전 글자 수 확인. 모든 캠페인을 인코딩을 감지하고 세그먼트를 보여주는 글자 카운터로 점검하세요.

SMS 메시지 길이와 세그먼트를 즉시 확인하세요.

글자 카운터 열기

관련 가이드

Frequently Asked Questions

단일 SMS는 GSM-7로 인코딩될 때 160자입니다. GSM-7은 일반 라틴 텍스트에 사용되는 7비트 알파벳입니다. 메시지에 GSM-7 알파벳 밖의 문자(대부분의 이모지, 곡선 따옴표, 악센트 문자, 키릴 문자, 한글/한자/일본어 등)가 하나라도 포함되면 통신사가 UCS-2(16비트 Unicode)로 전환하고 단일 세그먼트 한도가 70자로 떨어집니다.

한국어 SMS는 모두 UCS-2로 인코딩되므로 단일 세그먼트는 70자까지입니다. 분할 메시지(LMS가 아닌 일반 SMS)에서는 세그먼트당 67자가 사용됩니다. 국내에서는 통상 SMS(80바이트 / 한글 40자), LMS(2,000바이트 / 한글 1,000자), MMS(이미지 포함) 형식으로 구분되는데, 글로벌 SMS 표준과는 다소 다릅니다.

GSM-7에서 160자, UCS-2에서 70자를 초과하면 메시지가 분할(concatenated)됩니다. 각 세그먼트는 수신 기기가 다시 합칠 수 있도록 6바이트 사용자 데이터 헤더(UDH)를 포함하므로, 세그먼트당 가용 한도는 GSM-7에서 153자, UCS-2에서 67자가 됩니다.

시각적으로는 한 글자처럼 보이지만, 모든 이모지는 메시지 전체를 UCS-2 인코딩으로 강제 전환합니다. 대부분의 이모지는 2개의 UCS-2 코드 유닛(서로게이트 페어)을 사용하므로, 이모지 하나가 70자 한도에서 4자를 소비할 수 있습니다. 100자 GSM 메시지에 이모지 하나를 추가하면 1세그먼트 전송이 2세그먼트로 바뀝니다.

GSM-7은 약 128개의 기본 문자와 10개의 확장 문자로 구성된 7비트 인코딩으로, 일반 라틴 SMS에 최적화되어 있습니다. UCS-2는 GSM-7 알파벳 밖의 문자가 포함될 때마다 사용되는 16비트 Unicode 인코딩입니다. GSM-7은 세그먼트당 160자, UCS-2는 70자가 들어갑니다.

거의 모든 SMS API와 통신사는 메시지가 아닌 세그먼트 단위로 청구합니다. 320자 GSM 메시지는 3세그먼트(153+153+14)이며 3개로 청구됩니다. 이모지 하나가 포함된 71자 메시지도 이모지 때문에 UCS-2가 강제되어 70자를 넘으므로 2세그먼트로 청구됩니다. Twilio 미국 발신은 세그먼트당 약 $0.0079, 국제 요금은 $0.05에서 $0.50 이상까지 다양합니다.

iMessage, RCS, WhatsApp, KakaoTalk은 SMS가 아닙니다. 160/70 SMS 파이프가 아니라 데이터를 통해 작동하며 실질적 한도가 수만 글자 수준입니다(iMessage는 약 20,000자). GSM-7 / UCS-2 규칙은 메시지가 SMS로 폴백될 때만 적용됩니다.

기본 SMS로는 불가능합니다. 160/70 한도는 GSM 표준에 내장되어 있습니다. 긴 콘텐츠를 보내야 한다면 (1) 멀티 세그먼트 비용을 감수하거나, (2) 호스팅된 페이지로 링크하거나, (3) iMessage, RCS, KakaoTalk처럼 글자 수 제한이 없는 데이터 기반 채널로 옮기는 방법이 있습니다.