Cập nhật lần cuối:
Giới hạn ký tự SMS: Cách hoạt động của độ dài tin nhắn và giá cả
SMS vẫn được dùng nhiều trong liên lạc doanh nghiệp, ngay cả khi các ứng dụng nhắn tin ngày càng phổ biến. Lợi thế của SMS là khả năng tiếp cận: chỉ cần biết số điện thoại là tin nhắn đến được ứng dụng mặc định của máy, không cần cài đặt ứng dụng, không cần kết bạn trước và không cần kết nối internet. Hiểu giới hạn ký tự là rất quan trọng vì vượt quá giới hạn sẽ chia tin nhắn thành nhiều phần, mỗi phần được tính phí riêng.
Lịch sử 140 byte - Tại sao 160 ký tự?
Ý tưởng về SMS được Friedhelm Hillebrand và Bernard Ghillebaert - hai người tham gia công tác chuẩn hóa GSM - phác thảo vào năm 1984. Mục tiêu là cho một đoạn văn bản ngắn đi ghép vào khe trống của các tín hiệu điều khiển vốn đã chạy sẵn để thiết lập cuộc gọi thoại. Đổi lại việc không phải dựng thêm kênh truyền riêng, độ dài cho phép bị giới hạn ở mức vừa khít định dạng tín hiệu hiện có. Hillebrand kể rằng ông đã viết thử ra các mẫu bưu thiếp và tin nhắn telex, rồi kết luận rằng dưới 160 ký tự là đủ cho phần lớn nội dung cần truyền.
Khi đưa phán đoán đó vào đặc tả, nó trở thành khung 140 byte (1.120 bit). Dữ liệu SMS được chuyển trên kênh tín hiệu SS7 (Signaling System No. 7) và payload của kênh này giới hạn ở 140 byte. Với mã hóa GSM-7 biểu diễn mỗi ký tự trong 7 bit, 1.120 ÷ 7 = 160 ký tự vừa khít. Nói cách khác, 160 ký tự và 70 ký tự (với văn bản Unicode) không phải là hai con số được quyết định riêng rẽ, mà là hai cách diễn đạt của cùng một khung 140 byte. Giới hạn của SMS về bản chất là số byte, không phải số ký tự - đây là điểm khởi đầu cho mọi việc vận hành.
GSM-7 so với UCS-2 - Cách mã hóa SMS hoạt động
Mã hóa SMS chuyển đổi tự động dựa trên các ký tự trong tin nhắn của bạn. Hiểu cơ chế này là bước đầu tiên để quản lý ký tự hiệu quả.
GSM-7 là mã hóa 7-bit bao gồm chữ cái Latin, chữ số và ký hiệu cơ bản. Nó được định nghĩa bởi tiêu chuẩn GSM 03.38 với bộ ký tự cơ bản gồm 128 ký tự và bộ mở rộng sử dụng chuỗi thoát. Các ký tự mở rộng (ví dụ: {, }, [, ], |, ~, ^, \, €) tiêu thụ 2 vị trí ký tự (14 bit) mỗi ký tự.
Tin nhắn chứa ký tự ngoài bộ GSM-7 - chẳng hạn như emoji, ký tự CJK hoặc chữ Ả Rập - kích hoạt chuyển sang mã hóa UCS-2 ở 16 bit mỗi ký tự. Điều này giảm giới hạn xuống 70 ký tự (1.120 ÷ 16 = 70). Điểm quan trọng là ngay cả một ký tự UCS-2 duy nhất cũng buộc toàn bộ tin nhắn sang mã hóa UCS-2, như được giải thích trong hướng dẫn ký tự so với byte.
| Mã hóa | Bit/Ký tự | Giới hạn SMS đơn | Giới hạn nối/Phân đoạn | Ký tự được hỗ trợ |
|---|---|---|---|---|
| GSM-7 | 7 bit | 160 ký tự | 153 ký tự | Chữ cái Latin, chữ số, ký hiệu cơ bản |
| GSM-7 mở rộng | 14 bit | (tiêu thụ 2 vị trí) | - | { } [ ] | ~ ^ \ € |
| UCS-2 | 16 bit | 70 ký tự | 67 ký tự | Emoji, CJK, tiếng Ả Rập, tất cả Unicode |
SMS nối - Thông số kỹ thuật
Tin nhắn vượt quá một phân đoạn được gửi dưới dạng SMS nối, chia thành nhiều phân đoạn. Mỗi phân đoạn bao gồm User Data Header (UDH) 6 byte chứa số tham chiếu, tổng số phân đoạn và số phân đoạn hiện tại. Phần overhead 6 byte (48 bit) này giảm dung lượng sử dụng được: GSM-7 giảm từ 160 xuống 153 ký tự mỗi phân đoạn ((1.120 - 48) ÷ 7 = 153), và UCS-2 giảm từ 70 xuống 67 ký tự ((1.120 - 48) ÷ 16 = 67).
Giới hạn theo nhà mạng - phần giống nhau và phần cần tự kiểm tra
Phần giống nhau giữa các nhà mạng là phần kỹ thuật: giới hạn ký tự được suy ra từ khung 140 byte của chuẩn mã hóa, nên bản thân mức trần 160 / 70 ký tự không khác nhau theo nhà mạng. Cách tính phí theo bậc tương ứng với số phân đoạn cũng là mô hình chung. Ngược lại, số tiền của mỗi bậc, số phân đoạn tối đa có thể nối và phạm vi áp dụng của dung lượng miễn phí hay các khoản giảm giá thì khác nhau theo từng nhà mạng, và có những mục không được ghi rõ trên trang chính thức (tính đến tháng 8 năm 2026). Điều kiện của thuê bao đang dùng cần được xác nhận trên trang giá của chính nhà mạng đó.
Một ví dụ có công bố số liệu là SMS trong nước của NTT DOCOMO: giới hạn khi nối là 670 ký tự với văn bản Unicode (1.530 ký tự nếu chỉ dùng chữ số và chữ cái nửa chiều rộng), tương ứng 10 tin nhắn với 67 ký tự (153 ký tự) mỗi phân đoạn. Ở nhà mạng này còn có ngoại lệ theo đường truyền: khi gửi qua liên lạc vệ tinh thì không dùng được SMS dài, chỉ tối đa 70 ký tự. Nắm được cảm giác rằng giới hạn được quyết định bởi "đi qua đường nào" chứ không phải bởi "gói thuê bao nào" sẽ giúp giảm sự cố khi vận hành.
Tùy thiết bị và phiên bản hệ điều hành của người nhận, SMS nối có thể bị hiển thị rời rạc thành nhiều tin. Với các máy cũ, có trường hợp không hỗ trợ SMS nối, nên với tin nhắn quan trọng thì gói gọn trong một tin (dưới 70 ký tự) là cách chắc chắn.
Với SMS quốc tế, cách xử lý thay đổi theo quốc gia đích và nhà mạng trung chuyển. Số phân đoạn tối đa có thể nối, cách xử lý tin nhắn có emoji và cách hiển thị số gửi đều phụ thuộc vào cấu hình phía nhận, nên cùng một nội dung gửi trong nước không chắc sẽ đến nguyên dạng. Khi gửi ra nước ngoài, cách chắc chắn là gửi thử qua đúng đường truyền sẽ dùng thật và kiểm tra hiển thị trên máy thực trước khi phát đi.
Cấu trúc giá SMS
Mỗi phân đoạn SMS được tính phí riêng lẻ. Một tin nhắn GSM-7 161 ký tự trở thành hai phân đoạn, gấp đôi chi phí. Đối với chiến dịch SMS doanh nghiệp, điều này có ý nghĩa ngân sách đáng kể - một ký tự duy nhất vượt quá giới hạn có thể gấp đôi chi phí mỗi tin nhắn trên hàng nghìn người nhận.
Cước gửi SMS là hình thức tính theo lượng, tỷ lệ với số phân đoạn. Ví dụ, cước gửi SMS trong nước của NTT DOCOMO tính đến tháng 8 năm 2026 được chia thành 10 bậc, từ 3,3 yên (đã gồm thuế) đến 33 yên (đã gồm thuế) cho mỗi lần gửi, và các mốc chia bậc là 70 / 134 / 201 ký tự (160 / 306 / 459 nếu chỉ dùng chữ số và chữ cái nửa chiều rộng) - trùng khớp với ranh giới phân đoạn đã tính ở phần trên. Bậc đầu là 3,3 yên, bậc thứ hai 6,6 yên, bậc thứ ba 9,9 yên, và các bậc dài nhất nằm trong khoảng 13,2 đến 33 yên. Phía nhận không bị tính phí. Bảng giá trông như bảng số ký tự, nhưng thực chất là bảng số phân đoạn.
Vì sao SMS dễ được đọc - liên hệ với giới hạn ký tự
SMS vẫn được dùng trong doanh nghiệp vì chỉ cần biết số điện thoại là tin nhắn đến thẳng ứng dụng tin nhắn mặc định của máy, không đòi hỏi thủ tục trước như cài ứng dụng hay kết bạn. Ngay khi đến, thông báo hiện lên và phần đầu nội dung được đưa luôn lên màn hình thông báo. Tính chất "được đọc ngay trên màn hình thông báo" này là điểm mạnh thực tế của SMS.
Chính ở đây giới hạn ký tự phát huy tác dụng. Khung 70 ký tự với văn bản Unicode hoạt động như một áp lực buộc người gửi chỉ viết đúng việc cần nói và hành động kế tiếp (mở liên kết, gọi lại). Ngược lại, khi chia tin dài ra để gửi, ở những máy không hỗ trợ nối tin chúng sẽ hiện thành các tin riêng biệt và thứ tự đến có thể bị đảo. Từ đó suy ra một nguyên tắc: tin nhắn nào càng cần chắc chắn truyền đạt thì càng nên gói trong một tin.
SMS doanh nghiệp và tin nhắn A2P
SMS doanh nghiệp được phân loại là tin nhắn A2P (Application-to-Person). Các trường hợp sử dụng phổ biến bao gồm nhắc nhở cuộc hẹn, thông báo giao hàng, mã xác thực và tin nhắn tiếp thị.
Đối với việc gửi SMS A2P, loại ID người gửi ảnh hưởng đáng kể đến khả năng gửi thành công. Sử dụng mã ngắn hoặc số điện thoại địa phương được nhà mạng phê duyệt giúp giảm nguy cơ bị bộ lọc spam chặn. Tin nhắn gửi từ số quốc tế có tỷ lệ bị chặn cao hơn do lọc ở cấp nhà mạng.
Với SMS tiếp thị, khoảng 120–140 ký tự (GSM-7) là một mức tham chiếu dễ dùng khi soạn nội dung. Cách phân bổ này chỉ là ước lượng khi biên tập: lời chào (15–20 ký tự), nội dung chính (65–75 ký tự), lời kêu gọi hành động (25–30 ký tự) và hướng dẫn hủy đăng ký (15 ký tự) - tổng lại vẫn nằm trong một phân đoạn duy nhất. Nên tránh viết sát mức trần, vì chỉ cần một ký tự phát sinh là tin nhắn bị chia phân đoạn. Nếu nội dung có trường chèn động, hãy kiểm tra trước trường hợp giá trị dài nhất.
Emoji và SMS - Cạm bẫy chuyển đổi mã hóa
Rủi ro lớn nhất với emoji trong SMS là chuyển đổi mã hóa tự động. Thêm một emoji duy nhất vào tin nhắn GSM-7 sẽ buộc toàn bộ tin nhắn sang UCS-2, giảm giới hạn từ 160 xuống 70 ký tự.
Như được trình bày chi tiết trong hướng dẫn đếm Unicode emoji, mức tiêu thụ ký tự của emoji rất khác nhau. Emoji cơ bản (ví dụ: 😀) tiêu thụ 2 vị trí ký tự UCS-2. Emoji kèm bộ điều chỉnh tông da (ví dụ: 👍🏽) tiêu thụ 4 vị trí - 2 cho bàn tay và 2 cho bộ điều chỉnh tông da. Còn chuỗi ZWJ (ví dụ: 👨👩👧👦) tiêu thụ 11 vị trí: bốn hình người × 2 vị trí, cộng 3 ký tự nối ZWJ. Đối với SMS doanh nghiệp, tránh hoàn toàn emoji là cách tiếp cận an toàn nhất.
Nguyên nhân khiến tin nhắn bị chuyển sang UCS-2 ngoài ý muốn thường là những ký tự "trông gần giống nhau" nhưng khác mã. Hay gặp nhất là dấu nháy đơn phải ’ (U+2019) do trình xử lý văn bản hoặc ứng dụng email tự động thay thế, dấu cách toàn chiều rộng (U+3000), dấu ba chấm dạng một ký tự … (U+2026) và dấu ngã dài 〜 (U+301C). Ngược lại, dấu nháy đơn (U+0027) và dấu gạch nối (U+002D) nhập trực tiếp từ bàn phím nằm trong bộ ký tự cơ bản của GSM-7 nên không gây chuyển mã. Ký hiệu tiền tệ cũng không đồng nhất: ¥ và £ nằm trong bộ cơ bản nên chiếm 1 vị trí, còn € thuộc bộ mở rộng nên chiếm 2 vị trí. Văn bản sao chép từ trình soạn thảo văn bản hoặc thân email dễ còn sót những ký tự Unicode khó phân biệt như vậy, nên việc kiểm tra trước khi gửi là không thể bỏ qua.
Thiết kế mã xác thực SMS (OTP)
Mật khẩu một lần (OTP) dựa trên SMS cho xác thực hai yếu tố đòi hỏi lập ngân sách ký tự cẩn thận. Tin nhắn OTP phải bao gồm mã, mô tả ngắn gọn và cảnh báo bảo mật - tất cả trong giới hạn ký tự.
Độ dài mã là điểm cân bằng giữa bảo mật và khả năng sử dụng. Mã 4 chữ số chỉ có 10.000 tổ hợp, còn mã 6 chữ số có 1.000.000 tổ hợp - mức chống tấn công dò toàn bộ chênh nhau 100 lần. Mã gửi qua SMS được xếp vào loại bí mật đi theo một kênh khác với kênh xác thực chính (out-of-band authenticator). Hướng dẫn SP 800-63B (bản thứ 4) của NIST Hoa Kỳ quy định bí mật xác thực do phía xác minh sinh ra phải có độ dài từ 6 chữ số thập phân trở lên - đây là yêu cầu bắt buộc (SHALL) - và nếu bí mật ngắn hơn 64 bit thì việc giới hạn số lần thử cũng là bắt buộc. Nghĩa là chỉ tăng số chữ số thôi thì chưa đủ: nó chỉ có ý nghĩa khi đi kèm cơ chế siết số lần thử. Vượt quá 8 chữ số thì lỗi nhập liệu tăng lên, nên 6 chữ số cộng với giới hạn số lần thử là mức hợp lý trong thực tế.
Ví dụ tin nhắn OTP (42 ký tự): "Mã của bạn là 123456. Hết hạn sau 5 phút. Không chia sẻ." Tin nhắn này vừa thoải mái trong một phân đoạn GSM-7 duy nhất, giữ chi phí ở mức một tin nhắn cho mỗi lần xác thực.
RCS so với SMS - Tin nhắn thế hệ tiếp theo
| Tính năng | SMS | RCS |
|---|---|---|
| Giới hạn ký tự | 160 (GSM-7) / 70 (UCS-2) | Dài hơn SMS rất nhiều (khác nhau theo từng dịch vụ) |
| Phương tiện | Chỉ văn bản | Hình ảnh, video, âm thanh, tệp |
| Tương tác | Không | Nút, carousel, phản hồi nhanh |
| Xác nhận đã đọc | Không | Có |
| Truyền tải | Tín hiệu SS7 | Dựa trên IP (kết nối dữ liệu) |
| Điều kiện để đến được | Chỉ cần số điện thoại là đến ứng dụng mặc định của máy | Cần thiết bị và nhà mạng của cả hai phía hỗ trợ |
RCS vượt xa SMS về mặt tính năng, nhưng thực tế có dùng được hay không phụ thuộc vào thiết bị và nhà mạng của người nhận. Tại Nhật Bản, dịch vụ "+Message" do NTT DOCOMO, KDDI và SoftBank cùng cung cấp từ năm 2018 là dịch vụ tuân theo RCS (tính đến tháng 8 năm 2026). Điểm khó cho phía gửi là không thể xác nhận trước khi gửi rằng người nhận có đang ở trạng thái dùng được RCS hay không. Vì vậy khi soạn nội dung trong thực tế, cách an toàn là viết trước phần thân vừa trong 70 ký tự của SMS, còn các biểu đạt phong phú thì coi như điểm cộng nếu dùng được. Đường cơ sở cho những liên lạc nhất thiết phải đến vẫn nằm ở phía SMS.
Kỹ thuật SMS chuyên nghiệp
- Kiểm tra mã hóa trước khi gửi - Trước khi triển khai chiến dịch, hãy chạy tin nhắn qua trình kiểm tra GSM-7 để phát hiện các ký tự Unicode ẩn. Chỉ cần lẫn một dấu nháy đơn phải hoặc một dấu cách toàn chiều rộng là mã hóa đã chuyển sang UCS-2 và số phân đoạn tăng gấp đôi.
- Thiết kế ngân sách ký tự - Trước khi viết, hãy phân bổ trước số ký tự cho từng phần. Ví dụ phân bổ với SMS tiếp thị: lời chào (15–20), nội dung chính (65–75), lời kêu gọi hành động (25–30), hủy đăng ký (15) - tổng lại là 120–140 ký tự. Giữ trong 153 ký tự thì vẫn gọn trong một phân đoạn ngay cả khi header nối đã lấy bớt phần dung lượng. Cách phân bổ này chỉ là ước lượng khi biên tập, có thể chuyển đổi qua lại tùy ngành và nội dung cần thông báo.
- Kích thước token cá nhân hóa - Các trường động như
{first_name}có độ dài thay đổi. Hãy dự trù cho tên dài nhất có thể (15 ký tự) để tránh tin nhắn nhiều phần bất ngờ cho người nhận có tên dài hơn. - Cân nhắc thời điểm gửi - SMS có tính chất làm người nhận dừng tay vì tiếng thông báo, nên tránh gửi vào đêm khuya và sáng sớm. Gửi vào khoảng thời gian người nhận có thể hành động ngay tại chỗ (chẳng hạn giờ mở cửa của bộ phận hỗ trợ) sẽ dễ dẫn tới động tác kế tiếp như mở liên kết hay gọi lại. Nếu danh sách gửi có lẫn các khu vực lệch múi giờ, hãy chia việc gửi theo từng khu vực.
- Rút gọn URL thông minh - URL dài tiêu tốn không gian ký tự quý giá. Trình rút gọn URL có thể nén liên kết xuống 20–25 ký tự, giải phóng không gian cho tin nhắn. Tuy nhiên, một số nhà mạng đánh dấu URL rút gọn chung là spam, vì vậy tên miền ngắn có thương hiệu được ưu tiên.
Kết luận
Giới hạn ký tự SMS bắt nguồn từ khung 140 byte được quyết định ở giai đoạn phác thảo năm 1984, thể hiện qua hai mức trần phụ thuộc mã hóa: 160 ký tự cho GSM-7 và 70 cho UCS-2. Chuyển đổi mã hóa tự động, overhead header nối và lạm phát ký tự do emoji tạo ra những cạm bẫy vượt xa việc đếm ký tự đơn giản. Sử dụng Bộ đếm ký tự để xác minh độ dài tin nhắn trước khi gửi, và áp dụng các kỹ thuật kiểm tra mã hóa và lập ngân sách ký tự ở trên để tối ưu hóa cả chi phí lẫn khả năng gửi thành công.
Câu hỏi thường gặp
- SMS tối đa bao nhiêu ký tự?
- Một đoạn SMS hỗ trợ 160 ký tự (mã hóa 7-bit). Tin nhắn dài hơn sẽ được chia thành nhiều đoạn, tăng chi phí.
- Chi phí một tin nhắn SMS là bao nhiêu?
- Một đoạn (tối đa 160 ký tự) thường có giá vài cent. Tin nhắn dài hơn chia thành nhiều đoạn, mỗi đoạn tính phí riêng.