메인 콘텐츠로 건너뛰기
X의 포스트에는 최대 280자까지 입력할 수 있습니다. 그러나 모든 문자가 동일하게 계산되지는 않습니다—이모지, URL, 특정 Unicode 범위에는 특별한 계산 규칙이 적용됩니다.

문자 가중치

X는 문자 수를 가중치로 계산하는 시스템을 사용합니다. 대부분의 문자는 1로 계산되지만, 일부 문자는 2로 계산됩니다:
문자 유형가중치최대 문자 수
라틴 문자, 문장 부호, 일반 기호1280
이모지2이모지 140개
CJK(중국어, 일본어, 한국어)2140자
기타 유니코드2 (기본값)상황에 따라 다름
오픈 소스인 twitter-text 라이브러리를 사용해 App에서 문자를 정확하게 계산하세요.

이모지 계산

모든 이모지는 복잡도와 관계없이 2자로 계산됩니다.
EmojiDisplayCharacter countUnicode
👾단일 이모지2U+1F47E
🙋🏽피부 톤 포함2🙋 + 🏽 수정자(modifier)
👨‍🎤ZWJ로 결합2👨 + ZWJ + 🎤
👨‍👩‍👧‍👦가족 시퀀스2이모지 4개 + ZWJ 3개
Zero Width Joiner(ZWJ)는 이모지를 시각적으로만 결합하며, 문자 수에는 영향을 주지 않습니다.

URL 처리

모든 URL은 t.co 단축 서비스로 처리되며, 원래 길이와 관계없이 23자로 계산됩니다:
https://example.com                    → 23자
https://example.com/very/long/path     → 23자
이는 게시물 본문에서 감지되는 모든 유효한 URL에 적용됩니다.

특수 사례

콘텐츠계산 규칙
답글의 @멘션답글 시작 부분에 자동으로 추가되는 @멘션은 문자 수에 포함되지 않습니다
새 @멘션수동으로 추가한 @멘션은 일반적으로 문자 수에 포함됩니다
미디어공식 클라이언트를 통해 첨부된 미디어는 0자로 계산됩니다
해시태그일반 규칙대로 계산됩니다 (# + 태그 텍스트)

텍스트 인코딩

X API는 UTF-8 인코딩을 사용해야 합니다. 문자 길이는 Unicode 정규화 형식 C(NFC)를 사용해 계산됩니다. café 예시:
FormBytesCharacters
NFC (composed)c a f é4
NFD (decomposed)c a f e ́5
X는 NFC로 정규화하므로, 두 경우 모두 4개의 문자로 취급됩니다.

구현

정확한 문자 수 계산을 위해 공식 twitter-text 라이브러리를 사용하세요:
import { parseTweet } from 'twitter-text';

const result = parseTweet('Hello, world! 👋');
console.log(result.weightedLength); // 16
console.log(result.valid);          // true
이 라이브러리는 이모지 시퀀스, URL 감지, Unicode 정규화 등을 포함한 모든 엣지 케이스를 처리합니다.

리소스

twitter-text 라이브러리

텍스트 파싱을 위한 공식 오픈 소스 라이브러리입니다.

구성 파일

문자 가중치 정의 및 유니코드 범위를 제공합니다.