Skip to main content
X 上の投稿には最大 280 文字 を含めることができます。ただし、すべての文字が同じカウントになるわけではありません — 絵文字、URL、特定の Unicode 範囲には特別なカウントルールがあります。

文字の重み

X は加重された文字カウントシステムを使用します。ほとんどの文字は 1 としてカウントされますが、一部は 2 としてカウントされます:
文字の種類重み最大文字数
ラテン文字、句読点、一般的な記号1280
絵文字2140 絵文字
CJK (中国語、日本語、韓国語)2140 文字
その他の Unicode2 (デフォルト)異なります
アプリで正確に文字数をカウントするには、オープンソースの twitter-text ライブラリを使用してください。

絵文字のカウント

すべての絵文字は、複雑さに関係なく 2 文字 としてカウントされます:
絵文字表示文字カウントUnicode
👾単一の絵文字2U+1F47E
🙋🏽肌の色付き2🙋 + 🏽 修飾子
👨‍🎤ZWJ で結合2👨 + ZWJ + 🎤
👨‍👩‍👧‍👦家族シーケンス24 絵文字 + 3 ZWJ
ゼロ幅接合子 (ZWJ) は絵文字を視覚的に結合しますが、カウントには加算されません。

URL の取り扱い

すべての URL は t.co 短縮機能でラップされ、元の長さに関係なく 23 文字 としてカウントされます:
https://example.com                    → 23 文字
https://example.com/very/long/path     → 23 文字
これは投稿テキストで検出された有効な URL すべてに適用されます。

特別なケース

コンテンツカウントルール
返信の @mentions返信の先頭に自動入力される @mentions はカウントされません
新しい @mentions手動で追加する @mentions は通常通りカウントされます
メディア添付メディア (公式クライアント経由) は 0 文字としてカウント
ハッシュタグ通常通りカウント (# + タグテキスト)

テキストエンコーディング

X API には UTF-8 エンコーディングが必要です。文字長は Unicode Normalization Form C (NFC) を使用して計算されます。 café の例:
形式バイト文字数
NFC (合成)c a f é4
NFD (分解)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 ライブラリ

テキスト解析用の公式オープンソースライブラリ。

設定ファイル

文字重みの定義と Unicode 範囲。