X(Twitter)文字数カウンター
はじめに
X はほとんどの人が知らないシステム – ウェイト付き文字 – で投稿を数えています。リンクは長さにかかわらずちょうど23文字に縮み、中国語・日本語・韓国語の字形と絵文字は英字の2倍の重さがあり、いくつかの Unicode 区間は特別扱いを受けます。その結果がこの限界です – 安全に280以下に見える下書きが拒否され、誰にも理由が見えません。
Toollect の X(Twitter)文字数カウンターは素朴な文字列長ではなく本物のルールを適用します。下書きを貼り付けると6つのカウンターが打鍵ごとに更新されます – ウェイト総計、ハッシュタグ数、メンション数、URL 数、改行数、段落区切り数 – 加えてパーサーが検出したすべてのハッシュタグ・メンション・リンクの一覧。検出境界はライブ x.com の挙動に対して一件ずつ検証済みで、二重ハッシュや単語に張り付いて無効になる断片といった変な角も含みます。
すべてブラウザ内でローカルに動きます。API キーも登録も不要で、リクエストは一切発生しません – 下書きが端末を出ることは決してなく、ネットワークを待つものがないので数字は即座に出ます。
使用例
予約投稿をチェックするソーシャルメディア運用者
スケジューリングツールは単純文字数を使うため X の下書きをよく誤算します。キューに入れる前にこのカウンターに通せば、ウェイト総計と URL 一覧が X が受け入れる正確な内容を教え、限界超過警告は下書きが線を越えた瞬間に出ます。
静かな切り詰めと戦う CJK 記者
日本語・中国語・韓国語の投稿は、英語が280に使う同じ予算で roughly 140 字程度しか入りません。下書きの横にウェイト数が見えることで、目に見えない倍増が公開後の発見ではなく計画可能なものになります。
ボットと自動化の開発者
ボットがプログラム的にポストを作るなら、このカウンターは仕様リファレンスとして機能します – 重み区間表、固定のリンクコスト、ハッシュタグ/メンション境界規則が、パーサーの実装を一行ずつ文書化しています。
クロスプラットフォームの執筆者
プラットフォーム間でメッセージを調整することは、異なる上限と異なる数学を尊重することです。姉妹ツールの Instagram Caption Analyzer と組み合わせれば、どのプラットフォームが何を重み付けするか推測せずに両方の宛先をチェックできます。
仕組み
カウンターは4つのステップをすべてブラウザ内で実行し、打鍵ごとにライブ更新します:
- テキストを正規化。 入力はまず Unicode NFC 形に変換されます – 分解された é(字母+結合アクセント)が2回ではなく1回数えられるように、X 自身が数える前に行うのと同じ正規化です。
- リンクを抽出してフラット化。 X が認識する各リンクを取り出し、一律23文字のコストに置き換えます – https:///http アドレスに加え、末尾が公式トップレベルドメイン一覧に載っている twitch.tv のようなプロトコルなしドメインも含まれます。文末ピリオドのような後続句読点はリンクではなく周囲のテキスト側に残ります。
- 書記素クラスタへ分割。 残りのテキストを Intl.Segmenter でユーザーが知覚する文字へ分割 – 7つのコードポイントからなる絵文字ファミリー、2つで構成される旗、肌色修飾付きの親指がそれぞれちょうど1ユニットになります。
- 各クラスタを重み付け。 絵文字を含むクラスタは2。それ以外は公式の軽い区間に対してコードポイントを合算 – 内なら1、外なら2です。ハッシュタグとメンションは、下で文書化する x.com の境界ルールに従ってリンク除去済みテキストから別途抽出されます。
オプション変更は即座に全チェーンを再実行します。設定する項目も選ぶモードもありません – 常に同じライブ x.com ルールが適用されます。
ウェイト付きカウントの規則
これはカウンターが適用する完全な重み表 – X の基盤である公開 twitter-text 設定に一致します。
| 文字 | 例 | 重み |
|---|---|---|
| U+0000 – U+10FF | ラテン、ギリシャ、キリル、ヘブライ、アラビア、ヒンディー、タイ語、句読点、数字 | 1 |
| U+2000 – U+200D | 一般句読点と zero-width joiner | 1 |
| U+2010 – U+201F | ダッシュとタイポグラフィ引用符 | 1 |
| U+2032 – U+2037 | プライム記号 | 1 |
| その他すべて | 中国語/日本語/韓国語、ハングル、絵文字、ほとんどの他の書記体系 | 2 |
表の上に三つの特別ルールがあります:
- リンクは必ず23。 パーサーが認識したアドレスは実際の長さに関係なく平準化されちょうど23文字になります – https:///http の URL に加え、twitch.tv のようなプロトコルなしドメインも対象です。末尾が実在しないトップレベルドメインのまがい物(foo.zzz)は普通のテキストのままです。
- 絵文字クラスタは原子的。 検出はグラフェムクラスタ単位 – 👨👩👧👦 は1クラスタ(重み2)として数えられ、旗も1つ、肌色修飾子は基本の絵文字と融合します。クラスタリングなしではこの家族は誤って11コードポイントも加算されていました。
- アクセントは数える前に折りたたまれる。 テキストは NFC に正規化されるため、分解されたアクセントで入力された café は5文字ではなく4文字として数えられます。
計算例 – 下書き ミッションの詳細 🚀 https://x.com/a/long/path :
| 部分 | 計算 | コスト |
|---|---|---|
ミッションの詳細 |
20の軽い文字 | 20 |
| 🚀 | 絵文字クラスタ1個 | 2 |
| スペース | 1 | 1 |
https://x.com/a/long/path |
平準化されたリンク | 23 |
| 合計 | 46 |
ハッシュタグとメンションの境界
検出は36件の検証済みテストケースを通じて観察されたライブ x.com の境界に従います – 一般的な想定に反するものも含まれます。表は決定的なケースを列挙します。
ハッシュタグ
| 入力 | 結果 | ルール |
|---|---|---|
冒頭または空白後の #Japan |
✓ | 標準ケース |
🇯🇵#Japan, !#Japan, .#Japan, ,#Japan, -#Japan |
✓ | 絵文字とこれらの句読点はハッシュをブロックしない |
abc#Japan, 123#Japan |
✗ | 直前に張り付く字母や数字は無効化する |
_#Japan |
✗ | アンダースコアもブロックする |
&@mention, &#Japan |
✗ | アンパサンドはブロックする(HTML エンティティ安全) |
@#Japan |
✓ | ハッシュ直前のアットマークはブロックしない |
##Japan, ##Japan, #Japan |
✓ | 追加のハッシュ – 半角でも全角でも – ブロックしない |
#Japan#, #Japan#Japan, #Ja#pan |
✗ | タグの直後に付くハッシュはそれを殺し、部分的な再試行は行われない |
#123, #123, #🇯🇵 |
✗ | タグには少なくとも一つの字母が必要で、そうでなければシーケンスは形成されない |
#1Direction, #日本語, #foo_bar |
✓ | 字母混じりの数字、Unicode タグ、アンダースコアすべて機能する |
#Japan# ファミリーはほとんどの人を驚かせます:タグテキスト自体は問題ないのに、タグの末端に直接別のハッシュが張り付くと X は候補全体を捨てます – パーサーが短い方への再試行を決してしないためです。
メンション
| 入力 | 結果 | ルール |
|---|---|---|
.@alice, ,@alice, ?@alice, :@alice, (@alice, /@alice, -@alice |
✓ | これらの句読点はメンションを許可する |
🇯🇵@alice |
✓ | 絵文字も許可する |
!@alice |
✗ | 感嘆符はメンションをブロックする – ハッシュタグより厳格 |
@@alice, #@alice, &@alice, abc@alice, 123@alice |
✗ | アット・ハッシュ・アンパサンド・単語文字はすべてブロックする |
@alice@bob |
✗ 両方 | ハンドルの直後にさらにアットが付く候補は破棄される |
@alice's post |
✓ alice | 所有形はハンドルの外に留まる |
@15chars_max_0000 (16文字) |
✓ 完全なハンドル | パーサーは最大20文字までマッチする – アカウント作成は15で止まるが検出はしない |
@12345678901234567890123 (23桁) |
✓ 最初の20 | 上限を超えた分はプレーンテキストになる |
メンションは意図的にハッシュタグより左側で厳格(! はここではブロック、あちらはしない)、右側では緩いです(@alice# はメンションを保持し、#Japan# はタグを失う)。両挙動ともコーディング前にライブ x.com で確認済みです。
文字数上限の神話
古いドキュメントや単純な思い込みから生き残った四つの信念。それぞれ現在の x.com では崩れます。
「返信の冒頭メンションはカウントされない。」 2017年は正しかったが今日は誤り。返信の冒頭にハンドルを入力・貼り付けすると、本文と同じように使用可能文字が減ります – このツールの構築中にライブ x.com で検証済み。この免除を繰り返すガイドは引退した規則を説明しています。
「英語以外はすべて2倍。」 倍増が始まる Unicode 地点があります。アラビア語、ヘブライ語、ヒンディー語、タイ語はすべて1重みゾーン内にあり、アラビア語の投稿は英語とほぼ同じテキスト量を運べます。2倍の重みを持つのは CJK、ハングル、絵文字、その境界を越えた書記体系です。
「投稿前にリンクを短縮する。」 2010年以来無意味です。X はすべてのリンクを独自の短縮器に置き換え、13文字でも300文字でも一律23を請求します。事前の短縮で変わるのはリンク先が分かりにくくなることだけです。
「画像や引用が文字を消費する。」 添付は無料 – 最大4枚の写真が無料で同行します – 引用された投稿の本文も自分の分には加算されません。実際に入力したテキストだけが数えられます。
Premium とロングポスト
X Premium の購読ですべての有料階級において上限が280から25,000文字へ引き上げられ、ポストが記事に近いものになります。ただし見出しの数字より二つの注意点が重要です。
第一に、X は280上限のウェイト付きルールを文書化していますが、25,000の上限がリンクや絵文字や CJK テキストをどう扱うかは一度も公開していません。ロングフォーム上限との完全な一致を主張するサードパーティカウンターは推測しているのです。このツールは意図的に、よく文書化された280のルールのみをモデル化します。
第二に、タイムラインはロングポストを約280文字で折りたたみます。それ以降に何を書いても、冒頭は他の誰かのポストと同じウェイト付きルールで注目を競います。クリックなしで読まれるべきものにとって280が依然として重要な数字であり – だからこそこのカウンターは Premium アカウントにも有用なのです。
使い方
- 下書きを入力または貼り付け ます。6つのカウンターが打鍵ごとに更新されます。
- 文字カードを見守る – ウェイト総計が280を越えると赤くなり、上のメッセージが超過分を説明します。
- 内訳リストを読む – パーサーが検出したすべてのハッシュタグ・メンション・リンクが下に現れ、重複は ×N マーク付きの1チップにまとめられます。
- 収まったら下書きをコピー – ボタンがテキストを選択してクリップボードに置くので、x.com やスケジューリングツールにそのまま貼れます。
- クリア でテキストと全カウンターを一括リセット。
設定項目もモードもありません – ツールは常に同じライブ x.com ルールを適用します。
チュートリアル
現実的な下書きで全体を通してみましょう。
ステップ 1 – 混合下書きを貼り付ける。
トレーニング完了 ✅ 完全レポート https://x.com 詳細は追って
汎用カウンターは38と報告します。文字カードは69。差は見えない計算です – 20のかな漢字がすべて倍重(+20)、チェック絵文字は独立クラスタとして2の重み(単純計数比+1)、リンクは13文字から23文字へ平準化(+10) – 合計+31。
ステップ 2 – リンクの平準化を見る。 短い住所をはるかに長いもので置き換えます:
トレーニング完了 ✅ 完全レポート https://defense.example.gov/news/2026/exercise-report 詳細は追って
リンクは40文字伸びましたが、文字カードは69から動きません – URL 検出一覧が新しい住所も同じ一律23のコストだと確認します。単純カウンターなら78へ跳ねます。だからこそ X では事前のリンク短縮は無意味なのです。
ステップ 3 – x.com 流にハッシュタグを追加。 #Japan #トレーニング を追記します。両方ともきれいに抽出され、それぞれ6と13のウェイト付き文字と区切りスペース2つを加算 – カードは90を示します。
ステップ 4 – 意図的にハッシュタグを壊す。 #Ja#pan と入力します。断片は一つもリストに現れません – タグ末端に張り付いたハッシュは候補全体を無効化します。動いていた版に戻しましょう。
ステップ 5 – 線を越える。 CJK の冒頭を複製してカードが赤くなり超過メッセージが出るまで増やします。緑に戻るまで削ってみてください – 数が減るのを見ると2倍換算が直感的に分かります。
ステップ 6 – コピーして出荷。 コピーを押し、x.com に貼り付けます – composer は一発で下書きを受け入れます。同じルール、同じ数。
プロのヒント
- リンクは1個23で予算化。 リンク1個で257文字、3個で211文字残ります。先に予算を確保すれば後から削る必要がありません。
- 複雑な絵文字は贅沢な出費と考える。 クラスタごとにコスト2、リアクション連鎖はすぐ膨らみます – 三つの紙吹雪は wow という単語より重い。
- フックを前に置く。 タイムラインは折り目あたりで切れます。重み付きの中間点より先にあるものはめったにクリックを得ません。結論を早く。
- ハッシュタグは清潔なひとつかみに。 X には厳格なハッシュタグ罰則がありませんが、単語途中のタグは決して解析されません – 各ハッシュの前に空白か行頭を。
- Word からの貼り付けも安心。 タイポグラフィ引用符とダッシュは1重みの句読点区間にあり、NFC 正規化は分解アクセントを1つへ畳みます。
- クロスポストには Caption Analyzer と組み合わせる。 同じ下書きでもプラットフォームの数学は違います – X は重み付けしリンクを平準化、IG は柔軟な2200に対する合計を追いかけます。
- 自分の目より赤いカードを信頼。 文字が「超え」と言えば投稿は超えています – ウェイト付きの計算は素朴なカウンターに見えないコストを見ています。
代替手段
| 選択肢 | ウェイト付きルール | 境界まで正確な検出 | ライブ内訳 | プライベート/オフライン |
|---|---|---|---|---|
| このツール | あり – ライブ x.com で検証 | あり – 36ケース実施済み | 6カウンター+項目リスト | あり |
| x.com composer 内蔵カウンター | あり | あり | 合計のみ、内訳なし | N/A(プラットフォーム上) |
| 汎用文字カウンター | なし – 単純長 | なし | 部分的 | 大抵 |
| スケジューラ内蔵チェック | まれ – 単純長 | なし | さまざま | いいえ |
| twitter-text ライブラリ | あり – リファレンス実装 | あり | 自分で構築 | ホスト次第 |
x.com 内蔵の composer は権威ありますが診断のない単一の数字だけです。汎用カウンターは下書きが拒否される原因を作ります – ウェイト付けを完全に無視するためです。スケジューラは同じ欠陥を引き継ぎます。twitter-text ライブラリは完全なエンジンを組み込みたい場合の真実の源です – 依存関係という代償で。このカウンターは実用的な中間点を占めます – 参照クラスのルール、ゼロ設定。
twitter-text ライブラリとの対比
X は正規の計数・抽出ルールを定義するオープンソースライブラリ twitter-text を公開しています – このカウンターは API を呼ぶ代わりにその公開仕様を実装します。
| 能力 | twitter-text ライブラリ | このカウンター |
|---|---|---|
| ウェイト付き長さ | 正確 – リファレンス実装 | 同じ重みと区間 |
| リンク検出 | 有効なトップレベルドメインの網羅的な文法 | プロトコルなしドメインは同じ公式サフィックス一覧で検証 – https リンクはこの検証を省略 |
| 絵文字クラスタリング | 設定駆動の解析 | 標準的な絵文字ブロック発見法によるグラフェム分割 |
| ハッシュタグ/メンション境界 | リファレンス regex | ライブ x.com テストから転写した境界(36ケース) |
| 統合 | ビルドにバンドルされる依存関係 | なし – ページを開いて入力 |
プロトコルなしドメインの検出は公式ライブラリと同じ土台を共有するようになりました – このカウンターは同じ公式 gTLD/ccTLD サフィックス一覧を組み込んでおり、twitch.tv はリンクとして数え、foo.zzz はテキストのまま、ライブラリの判定と完全に一致します。正直なギャップは二つ残ります – https リンクは妥当な形状ならサフィックス検証なしで受け入れられること、そして組み込んだ一覧はオープンソース版で凍結されているため、それ以降に登場したトップレベルドメインは欠ける可能性があることです。通常の投稿では数字は一致します。それ以外 – 重み、クラスタリング、境界 – は同じ仕様に従い、境界表はライブラリの転写ではなくライブプラットフォームでのテストから来ています。
カウンターとキャプションアナライザー
Toollect は同じテキストを受け付ける二つのソーシャル分析ツールを提供しており、分担を見ておく価値があります:
| 質問 | Caption Analyzer (Instagram) | このカウンター (X) |
|---|---|---|
| 上限 | 2,200文字 | 280ウェイト文字 |
| 計数基準 | UTF-16 長さ | ウェイト付きグラフェムクラスタ |
| 単純絵文字 | 2(星形面ユニット) | 2(クラスタ規則) |
| 複雑な絵文字ファミリー | コード単位ごとに重量 – 家族は2以上 | 常にクラスタあたりちょうど2 |
| リンク | 通常テキスト – 平準化なし | 各23固定 |
| プラットフォーム特有の上限 | 5ハッシュタガー指針 | 返信メンションはカウント;境界は上の表どおり |
どちらのアプローチも間違いではありません – 各々が自分のプラットフォームを映しています。Instagram の余裕ある上限は簡単な計数を許容し、X の厳しい予算には加重精度が必要だからです。
できないこと
- Premium ロングポストをモデル化しない。 25,000文字階層は存在しますが、X がどう数えるか一度も文書化していません – 検証不可能なルールを発明すれば正確性保証が崩れます。上の Premium とロングポスト参照。
- スレッド分割をしない。 上限超過は手動で削るかスレッドにすること。ツールは報告するだけで書き換えません。
- X サーバーとのビット単位の一致を保証しない。 プロトコルなしドメインは公式サフィックス一覧で検証されますが、https リンクはこの検証を省略し、組み込んだ一覧はオープンソース版で凍結されています。病的なアドレスが理論上異なる判定になる可能性があります。通常の投稿では一致します。
- ハンドルの存在確認をしない。 @nonexistent_account_12345 もメンションとして解析されます – 有効性はプラットフォーム照会であり文法の問題ではありません。
- bio・DM・名前の上限はチェックしない。 それらのフィールドは別の上限(160、10,000、50)で、この単一目的カウンターの範囲外です。
- 投稿や予約や保存をしない。 出力は知識でありアクションではありません。
- X と提携していません。 ルールは公開文書とライブ観察から書き写したもので、承認を意味しません。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 下書きは280未満に見えるのにカードが赤い | ウェイトコスト – リンク23、CJK・絵文字2 | 内訳リストを確認。リンクを差し替えるか2倍テキストを削って通す |
| URL リストに投稿するつもりだったリンクが表示される | 認識されたリンクはすべてカウント – twitch.tv のようなプロトコルなしドメインも含む | アドレスを下書きから外す言い回しに変えるか、23のコストを受け入れる |
| #123 が Hashtags の下に現れない | 純粋数字タグは X ではハッシュタグではない | タグに字母を加えるか、諦める |
| 絵文字の後のハッシュタグが欠ける | 起こらないはず – 絵文字プレフィックスは有効 | 字母・数字・アンダースコアがハッシュ直前に張り付いていないか確認。まだ失敗するなら正確な入力を報告してください |
| 別サイトのカウンターと数が少し違う | ほとんどの競合は単純長を使う | このカウンターは公式の重みを適用します。汎用合計より赤いカードを信頼 |
| アクセント付き単語の数が他と違う | 他のツールは NFC 正規化を省略 | このカウンターは最初に正規化します – その数は X と一致します |
| コピーが何もしなかった | ブラウザがクリップボード権限を拒否 | クリップボードアクセスを許可するか、手動選択+Ctrl/Cmd+C でコピー |
プライバシーとデータ処理
このツールは自分のトラフィックについて正直であり、当サイトのゼロリクエスト系ツールと同じく最も厳格なプライバシークラスに属します。
- 何もデバイスから出ません。 下書き・ハッシュタグ・メンション・カウントはすべてブラウザタブの中にだけ存在します。Toollect のサーバーも第三者のエンドポイントもアナリティクスも、入力したテキストには一切触れません。
- アカウント不要・保存なし・追跡なし。 タブを閉じればすべて消えます – 消すべき履歴がそもそも書かれていないからです。
- カウンターはオフラインでも動作します。 ページの読み込み後は接続を切っても計算を続けられます。
- クリップボードの使用は明示的です。 テキストがクリップボードへ行くのはコピーを押したときだけ – 自動では決してありません。
リンク分析にも同じプライバシー哲学が必要なら、当サイトの X(Twitter)URL パーサーがネットワークリクエストゼロで全業務を実行します。
技術仕様
詳細:
- 制限 – 280ウェイト文字;各リンクは23に平準化;他のユニットは範囲表に従い1または2
- 軽い範囲 – U+0000–U+10FF、U+2000–U+200D、U+2010–U+201F、U+2032–U+2037(重み1)。それ以外は2
- NFC 正規化 – 入力を NFC へ変換してから数えます
- 分割 – Intl.Segmenter の grapheme モード。VS16・ZWJ・keycap・U+1F000+・U+2600–27BF を含むクラスタは原子的に2。Segmenter 不在時はコードポイント反復へフォールバック
- リンク文法 – https:///http アドレス(先頭・空白・開括号が先行境界)または末尾が公式 gTLD/ccTLD 一覧に一致するプロトコルなしドメイン。ハイフン・アンダースコア・ピリオド・スラッシュの直後に張り付いたドメインは解析されません。末尾句読点はリンクから除外してテキストとして数える
- ハッシュタグ文法 – #/# に [\p{L}\p{N}_]+ で少なくとも一字母。直前の文字が字母・数字・underscore・& だと無効。直後にハッシュ記号があると無効。全角記号も受理
- メンション文法 – @/@ に [A-Za-z0-9_]{1,20}。直前の文字が単語文字・感嘆符・at・hash・& (全角相当含む)だと無効。直後に at がある候補も破棄
- 統計 – ウェイト総計、ハッシュタグ・メンション・URL・改行・段落区切り数、×N バッジ付き重複排除済みアイテム集計
- ネットワークトラフィック – ゼロ。全計算はローカル JavaScript
- ブラウザ対応 – Intl.Segmenter 対応のモダンブラウザ(Chrome 87+、Safari 14.1+、Firefox 125+)と Clipboard API
機能
- X の本物のウェイト付きルールでカウント – リンクはちょうど23、CJK と絵文字は2、ライブ x.com で検証済み
- 境界まで正確なハッシュタグとメンションの検出 – 🇯🇵#Japan から
- 入力しながら6つのライブ統計 – 文字数、ハッシュタグ、メンション、URL、改行数、段落区切り数
- Unicode 正確な設計 – 絵文字ファミリーは1クラスタとしてカウント、分解されたアクセントは正規化、アラビア語は1
- 今日の X を反映、2017年の伝説ではない – 返信の冒頭メンションも現在のプラットフォームと同じくカウント対象
- 無料・プライベート・即時 – すべてブラウザ内で動作、リクエストゼロ、APIキー不要、登録不要