文字数カウント
文字数・単語数・読了時間を数えます。絵文字や結合文字も、人が数えるとおりに1文字として数えます。
すべてブラウザ内で動作します。入力した内容はアップロードされません。
ReadoutKit / Takashi Yamazaki が執筆・保守しています
仕組みと使い方
「1文字」とは何か
「これは何文字ですか」という問いには、正解が複数あります。そしてその違いは些細ではありません。コンピュータが数えられる階層は3つあります。
- コード単位——テキストが格納されている形。JavaScript の
string.lengthが返す値です。絵文字は複数単位になることがあります。 - コードポイント——Unicode 規格上の1項目です。こちらのほうがましですが、結合文字を伴う文字は依然として2つに数えられます。
- 書記素クラスタ——読み手が「1文字」と呼ぶ単位です。上に大きく出ている文字数はこれを数えています。
| 文字列 | 中身 | 文字数 | コードポイント | コード単位 |
|---|---|---|---|---|
| café | é が1文字 | 4 | 4 | 4 |
| café | e + 結合アクセント | 4 | 5 | 5 |
| が | か + 結合濁点 | 1 | 2 | 2 |
| 𠮷 | 基本多言語面の外にある漢字 | 1 | 1 | 2 |
| 👍🏽 | 肌色を指定した絵文字 | 1 | 2 | 4 |
| 👨👩👧 | 家族(3人の絵文字の連結) | 1 | 5 | 8 |
| 🇯🇵 | 国旗(2つの地域指示記号) | 1 | 2 | 4 |
「か」+結合濁点の行が、日本語で最も引っかかる形です。表示は「が」1文字なのに、記憶上は2つ。Mac のファイル名からコピーした文字列や、古いシステムから書き出したデータはこの形になっていることがあり、同じ文章なのに貼り付け元によって文字数が変わります。
家族の絵文字は1文字・5コードポイント・8コード単位で、1つの絵に対して8倍の開きがあります。手元のカウンタでは収まっているのにフォームが弾く場合、理由はたいていこれです。フォームは記憶上の長さを数えていて、あなたは見た目の文字数を数えています。
全角の数え方
日本語のフォームは、全角文字——かな・漢字・全角記号——を2、半角文字を1として数えることがよくあります。下の表の「幅」がその数え方で、最後の列は、その方式の「100文字まで」に実際どれだけ入るかです。
| 文字列 | 中身 | 文字数 | 幅 | 100に入る数 |
|---|---|---|---|---|
| こんにちは | かな・漢字 | 5 | 10 | 50 |
| Hello | 半角英数 | 5 | 5 | 100 |
| ABC | 全角英数 | 3 | 6 | 50 |
| アイウ | 半角カナ | 3 | 3 | 100 |
つまり「100文字」の欄に入るのは、日本語なら50文字、半角英数なら100文字です。IME が出す全角英数は漢字と同じコストなので、ABCは弾かれてABCは通る、ということが起きます。半角カナは逆で、日本語に見えて英数と同じ1で数えられます。
このツールが幅と文字数を両方出しているのは、必要なのがたいてい両方だからです。片方はフォームが数えている値で、もう片方はあなたが書いた量です。
フォームに「長すぎる」と言われたら
解決の早い順に3つ確認してください。
文字数ではなく幅を見る。日本語のサービスのフォームに日本語を入れているなら、制限はほぼ確実に幅で、実際の許容量は表示の半分です。比べるべきは上の表の「幅」の列です。
絵文字を探す。記憶上の長さで数えるフォームにとって、家族の絵文字は1ではなく8です。絵文字をいくつか消すほうが、一文まるごと削るより多くの余地を生むことがあります。締切直前に発見したい事実ではありません。
濁点・アクセント付きの語を打ち直す。ファイル名やPDF、古いシステムから貼り付けた文字列は結合文字を含むことがあり、見えないところで1文字ぶん余計に消費します。打ち直せば正規化されます。
3つとも当てはまらない場合、フォームは自分で何かを付け足してから数えている可能性が高い——署名、トラッキング用の接尾辞、展開されたリンクなど——ので、手元のカウンタからは見えません。
区切りのない言語の単語数
単語数を数えるのは、空白で語を区切る言語では簡単で、そうでない言語では完璧には不可能です。日本語を空白で分割すると1単語しか返ってきません。本格的な形態素解析には辞書が必要で、ブラウザ内で完結させるツールが背負うには重すぎます。
そこで採った折衷案が、CJK の文字をそれぞれ1単語として数え、残りを通常どおり分割して足すというものです。「API を使う」なら4になります。形態素解析器と一致はしませんが、安定していて予測可能で、分量の見積もりには十分です。
意識すべき文字数制限
| 場所 | 実用上の上限 |
|---|---|
| 検索結果のページタイトル | 切り詰められるまでおよそ60文字(全角なら約30字) |
| メタディスクリプション | およそ160文字(全角なら約80字) |
| SNS投稿 | 多くのプラットフォームで280文字 |
検索エンジンは文字数ではなくピクセル幅で切り詰めるため、幅の広い文字が並ぶタイトルは早く切られます。60文字は目安であって、厳密な境界ではありません。
頻出語の一覧について
「よく出てくる語」のパネルは、書いている最中には見えない癖を捕まえる手早い方法です。ひとつの語だけが突出して多い場合、その文章はたいてい同じことを繰り返しているか、言いたいことにまだ到達できずに周回しています。3文字未満の語は除外しています。そうしないと助詞や冠詞で一覧が埋まってしまうためです。
よくある質問
- 絵文字が1文字として数えられないのはなぜですか?
- 多くのシステムが、見た目ではなく記憶上の長さを数えているためです。3人家族の絵文字は、読み手には1文字ですが、内部では見えない連結子でつながれた5つのコードポイントで、UTF-16 では8コード単位として格納されています。このツールは3つとも表示するので、フォームがどれを数えているかを判別できます。肌色付きの絵文字が1文字・2コードポイント・4コード単位になるのも同じ理由で、肌色は本体の絵文字に付く別の修飾子だからです。
- 見た目が同じ文字列で文字数が変わるのはなぜですか?
- 内部の綴りが違うためです。「が」は1つの文字として格納することも、「か」+結合濁点の2つとして格納することもできます。表示は同じで、文字数(書記素)も1で同じですが、コード単位では1と2に分かれます。アクセント付きのラテン文字も同様です。macOS のファイル名、PDF、古いシステムから貼り付けた文字列はこの形になっていることが多く、打ち直すのが最も速い対処です。
- 絵文字がここでは1文字なのに、他のツールでは8文字になるのはなぜですか?
- 多くのカウンターが UTF-16 のコード単位(JavaScript の .length が返す値)を数えているためです。家族の絵文字は複数のコードポイントを見えない結合子でつないで作られています。このツールは代わりに書記素クラスタ、つまり人が指させる単位で数えます。どちらの数字も嘘ではありませんが、画面で見えているものと一致するのは一方だけです。
- 投稿フォームや CMS はどの数え方を使っていますか?
- まちまちで、それがまさに問題です。コード単位で数えるもの、コードポイントで数えるもの、書記素で数えるものがあり、日本語のフォームでは全角を2文字として数えることも多くあります。このページでは文字数と全角換算を並べて表示しているので、相手のフォームがどちらの方式でも合わせられます。
- 日本語の単語数はどう数えていますか?
- 日本語や中国語は単語の間に空白を置かないため、空白で分割すると巨大な「1単語」が返ってきます。このカウンターは CJK の文字それぞれを1単語として数え、残りのテキストを空白で分割して足し合わせています。近似ではありますが、意味のない数字ではなく使える数字が出ます。
- 読了時間はどう計算していますか?
- 欧文は毎分約200語、和文は毎分約400字で計算しています。落ち着いた速さで音読した場合の慣例的な数値です。黙読はこれより速く、1.5倍程度になることが多いため、発表原稿や台本の上限の目安として使ってください。
- テキストはどこかに送信されますか?
- いいえ。すべての集計は入力に合わせてブラウザ内で実行されます。送信も保存もログ記録もありません。機密の文章の長さを確かめたいときに、知っておく価値のある点です。
出典
このツールが使っている計算式と税率・基準値は、下記の資料に基づいています。制度は改正されます。ここの数字と出典が食い違う場合は、出典が正しいものとお考えください。
2026年9月1日 時点で、下記の出典と数値を突き合わせています。
- Unicode Standard Annex #29: Unicode Text SegmentationUnicode Consortium
- The Unicode Standard, latest versionUnicode Consortium