結論

文字数カウントは、Word なら左下のステータスバー、Google ドキュメントなら Ctrl+Shift+C で数えられます。改行・空白・絵文字の数え方は道具ごとに違います。

この記事でわかること

  • Word・Google ドキュメントなど6つの道具の数え方
  • 改行・空白・絵文字など15種の文字の数え方の比較表
  • 同じ文章が17・24・31文字になる実測と、コピー用のHTML

2026年10月23日更新|各社の公式手順で確認・Node.js 22とChromiumで実測

文字数は、文章を書いている場所(Word・Google ドキュメントなど)の機能で数え、提出先の決まりに合わせて改行・空白を除くかを選びます。

flowchart TD
    A[数えたい文章] --> B[書いた場所の<br>文字カウントで数える]
    B --> C{改行・空白を<br>除く決まりがある?}
    C -->|ある| D[除いた数を使う]
    C -->|ない| E[そのままの数を使う]
    D --> F[どの道具で<br>数えたかを控える]

急いでいる人向けに、道具ごとの数え方を先にまとめます。

書いている場所 数え方 詳しい節
Word(Windows・Mac・Web) 左下のステータスバー。詳しくは[校閲]→[文字カウント] Word
Google ドキュメント(パソコン) [ツール]→[文字カウント]か Ctrl+Shift+C Google ドキュメント
Windows 11 のメモ帳 下のステータスバーに文字数が出る メモ帳
iPhone Pages の[表示オプション]→[単語数を表示] iPhone・Android
Android ドキュメント アプリの[その他]→[文字カウント] iPhone・Android
Mac Pages の[表示]→[単語数を表示] Mac
X(旧 Twitter) 日本語は1字を2と数え、280まで X の文字数
何も入っていない この記事のHTMLを保存してブラウザで開く 文字数カウントのHTML

確認環境:Word・Google ドキュメント・メモ帳・Pages の手順とメニュー名は、Microsoft サポート、Google ドキュメント エディタ ヘルプ、Windows Insider ブログ、Apple の Pages ユーザガイド(iPhone・Mac)で確かめました。X の数え方は X の開発者向けドキュメント「Counting characters」と X ヘルプセンター、SEO は Google 検索セントラルで確かめました。数え方の違いは、Ubuntu 24.04.4 LTS で Python 3.11.15(grapheme 0.6.0・regex 2026.9.29)、Node.js 22.22.2(ICU 78.2)、twitter-text 3.1.0(X の公式ライブラリ)、GNU coreutils 9.4 の wc で同じ文字列を数えました。文字数カウントのHTMLは Chromium 141.0.7390.37 で動かし、playwright-core 1.64.1 で入力と結果を確かめました(確認日 2026年10月23日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「文字数カウントのやり方|Word・スマホ別の数え方と改行・絵文字の扱い」

文字数カウントとは(何を数えるか)

この節では、「文字数」が何を数えた数なのかと、道具によって数が変わる理由が分かります。

文字数カウントは、文章に含まれる文字の数を数えることです。ただし「1文字」の決め方は道具ごとに違い、改行・空白(スペース)を数えるか、絵文字を1文字と数えるかで結果が変わります。 レポートや応募書類の「〇〇字以内」は、提出先の決まりに合わせて数え、どの道具でどう数えたかを控えておくと、数が合わないときに説明できます。

1レポート・応募書類

「800字以内」などの指定に合わせる。改行や空白を含めるかは提出先の決まりを確かめる。原稿用紙で数える指定もある。

2SNS の投稿

X は日本語を1字につき2と数える独自の決まりがある。URL は長さに関係なく23と数える。

3Web サイトの入力欄

フォームの「200文字まで」は、プログラムの数え方で決まる。絵文字1つが2文字に数えられることがある。

4Web 記事・SEO

Google は「優先する文字数は無い」としている。字数は読者に必要な量で決める。

Wordで文字数を数える方法

この節では、Word で文書全体・選んだ範囲の文字数を数える手順が分かります。

Word は、入力している間、ウィンドウの左下のステータスバーに数を自動で表示します。 Microsoft サポートによると、対象は Word for Microsoft 365(Windows・Mac)、Word 2024、Word 2021、Word for the web です。

1

左下のステータスバーを見る

文書全体の数が表示されている。

全体

2

一部だけ数えるときは、文字を選ぶ

選んだ範囲の数と、文書全体の数が並んで表示される。

範囲

3

ステータスバーの数をクリックする

文字数・段落数・行数などの詳しい内訳が開く。[校閲]タブの[文字カウント]からも開ける。

内訳

4

テキストボックスや脚注を含めるか選ぶ

内訳の画面で、テキストボックスや脚注を合計に含めるかを切り替えられる。

設定

  • Microsoft サポートの「文字カウント」のページ(日本語)では、タブとボタンの名前が「レビュー」タブ・「Wordカウント」と訳されています。日本語の Word の画面では[校閲]タブにあります(Microsoft サポートの別のページでも[校閲]タブと書かれています)。
  • 内訳の画面では、ページ数・段落数・文字数などをまとめて見られます(Microsoft サポート)。提出先に空白や改行の決まりがあるときは、どの数が決まりに合うかを内訳の項目名で確かめます。 迷ったら、後の「何を1文字と数える?」の節の比較用の文字を貼り付けて、Word がどう数えるかを試せます。

Googleドキュメントで文字数を数える方法

この節では、Google ドキュメントで文字数を数える手順と、入力しながら数を出しておく方法が分かります。

パソコンでは、上部の[ツール]→[文字カウント]か、ショートカット Ctrl+Shift+C(Mac は ⌘+Shift+C)で、ページ数・ワード数・文字数・スペースを除く文字数が出ます。 Google のヘルプによると、一部を選んでいなければ、ヘッダー・フッター・脚注を除いた文書全体が数えられます。

1

[ツール]→[文字カウント]を選ぶ

ページ数・ワード数・文字数・スペースを除く文字数の画面が開く。

開く

2

[入力中に文字カウントを表示]をオンにする

同じ画面でオンにして[OK]を押すと、左下に数が出たままになる。

常に表示

3

左下の数をクリックする

ページ数・ワード数・文字数・スペースを除く文字数が出る。[文字カウントを非表示]で消せる。

内訳

  • Google のヘルプには「文字カウントは Google ドキュメントでのみ使用できます」とあります。スプレッドシートやスライドの文章は、ドキュメントに貼り付けて数えます。
  • スマホの Google ドキュメント アプリでの数え方は、次の「iPhone・Android」の節にあります。

Windowsのメモ帳で文字数を数える方法

この節では、Windows 11 のメモ帳で文字数を見る方法が分かります。

Windows 11 のメモ帳は、ウィンドウの下のステータスバーに文字数を表示します。 Windows Insider ブログ(2023年12月7日)は、メモ帳のバージョン 11.2311.29.0 でこの表示が加わったと発表しています。

状態 ステータスバーに出る数
何も選んでいない 文書全体の文字数
文字を選んでいる 選んだ範囲の文字数と、文書全体の文字数

Windows Insider ブログの説明は文字数の表示だけで、空白や改行を除いた数には触れていません。空白・改行を除いた数が要るときは、Google ドキュメントか、この記事の文字数カウントのHTMLに貼り付けると、除いた数も出ます。

iPhone・Androidで文字数を数える方法

この節では、スマホで書いた文章の文字数を数える方法が分かります。

iPhone は Apple の Pages、Android は Google ドキュメント アプリで数えられます。 iPhone の Google ドキュメント アプリでも同じ手順で数えられます。メモアプリで書いた文章は、全部選んでコピーし、どちらかのアプリに貼り付けて数えます。

端末・アプリ 手順(公式の表記) 出る数
iPhone・Pages 上部の[詳細]→[表示オプション]→[単語数を表示] カウンタをタップで文字数(空白あり・なし)など
iPhone・ドキュメント アプリ 文書を開く →[その他]→[文字カウント] ワード数・文字数・文字数(スペースを除く)
Android・ドキュメント アプリ 文書を開く →[その他]→[文字カウント] ワード数・文字数・スペースを除く文字数
  • Pages では、画面に出たカウンタをタップすると、ほかの統計(文字数の空白あり・なし、単語数、段落数、ページ数)に切り替えられます(Apple の Pages ユーザガイド)。
  • ドキュメント アプリも、一部を選んでいなければ、ヘッダー・フッター・脚注を除いた全体が数えられます。
  • この記事の文字数カウントのHTMLは、スマホのブラウザでも動きます。

Macで文字数を数える方法

この節では、Mac で使える数え方と、ターミナルでファイルの文字数を数える方法が分かります。

Mac では、Pages のツールバーの[表示]→[単語数を表示]で、カウンタが出ます。 カウンタの右の矢印から、文字数(空白あり・なし)、単語数、段落数、ページ数を選べます。消すときは[表示]→[単語数表示を非表示]です(Apple の Pages ユーザガイド)。

  • Word for Mac はステータスバーで、Google ドキュメントは ⌘+Shift+C で数えられます。
  • テキストファイルなら、ターミナルの wc -m ファイル名 で文字数が出ます。macOS の wc の man ページには、「今のロケールがマルチバイト文字に対応していなければ、-m は -c(バイト数)と同じ」とあります。日本語が正しく数えられないときは、ロケール(LANG)を確かめます。後の節で、同じことを Linux で確かめた結果を載せています。

何を1文字と数える?改行・スペース・全角半角・絵文字の表

この節では、改行・空白・全角と半角・絵文字・特別な漢字が、数え方ごとに何文字になるかが分かります。

人が見て1文字に見えるものが、プログラムでは2〜11文字に数えられることがあります。 原因は、コンピューターが文字をどの単位で持っているかの違いです。

  1. 1見た目の1文字(書記素クラスター)人が1文字と感じる単位。👨‍👩‍👧‍👦 も 🇯🇵 も1。JavaScript の Intl.Segmenter、Python の grapheme で数える
  2. 2コードポイント(Unicode の番号)Unicode が文字に付けた番号の数。肌の色つきの絵文字は2、家族の絵文字は7。Python の len、JavaScript の [...s].length
  3. 3UTF-16 のコード単位JavaScript の文字列の持ち方。𠮷 や 😀 は2つに分かれる(サロゲートペア)。JavaScript の length
  4. 4バイト数保存や通信の大きさ。UTF-8 では半角英数字が1、日本語の多くが3、絵文字が4。wc -c

次の表は、15種類の文字を、それぞれの数え方で実際に数えた結果です。「X」は X(旧 Twitter)の公式ライブラリ twitter-text が出した数(weightedLength)です。

文字 見た目 Python len JS length X
あいう(ひらがな) 3 3 3 6
ABC(半角英字) 3 3 3 3
ABC(全角英字) 3 3 3 6
ガ(半角カナ+半角濁点) 1 2 2 4
が(1文字の「が」) 1 1 1 2
が(「か」+濁点の記号) 1 2 2 2
全角スペース 1 1 1 2
改行(LF) 1 1 1 1
改行(CRLF。Windows の改行) 1 2 2 2
𠮷(つちよし) 1 1 2 2
😀 1 1 2 2
👍🏽(肌の色つき) 1 2 4 2
👨‍👩‍👧‍👦(家族) 1 7 11 2
🇯🇵(国旗) 1 2 4 2
葛󠄀(異体字セレクタつき) 1 2 3 4

「見た目」は Python の grapheme.length・regex の \X・JavaScript の Intl.Segmenter の3つで数え、3つとも同じ値でした。表から分かることです。

  • 全角と半角は、見た目・len・length ではどちらも1文字です。 半角を0.5文字と数えるのは、Shift_JIS のバイト数(半角1バイト・全角2バイト)で数える場合や、X のような独自の決まりの場合です。Python で Shift_JIS(cp932)にすると、ABC は3バイト、ABC とあいうは6バイト、アイウ は3バイトでした。
  • 改行は、ほとんどの数え方で1文字(CRLF なら2)に入ります。 提出先が改行を数えない決まりなら、改行を除いた数を使います。
  • 絵文字・𠮷・異体字は、数え方で1〜11と大きく変わります。 入力欄の上限を決めるときは、どの数え方かを決めておきます。

「が」が1文字と2文字の2通りあるのは、Unicode に「が」という1つの文字と、「か」+濁点の記号の組み合わせの2通りの書き方があるためです。見た目は同じなので、貼り付けた文章にどちらが入っているかは目では分かりません。X は数える前に組み合わせを1文字にまとめる(NFC という正規化)ため、どちらも2になりました。Unicode とサロゲートペアの仕組みは、関連記事「UnicodeとUTF-8の違いとは?UTF-16・サロゲートペアまで実行結果で理解」で扱っています。

同じ文章でも道具で文字数が違う理由(Python・JavaScript・wcで実測)

この節では、同じ文章を Python・JavaScript・wc で数えると、どれだけ数が変わるかを実物で確かめます。

改行を含む2行の文章を数えると、数え方によって 17・24・31・32・75 と5通りの数になりました。 数えたのは次の文章(最後に改行あり)です。

こんにちは、世界!👨‍👩‍👧‍👦
𠮷田さん🇯🇵

Python(len と grapheme)

import grapheme  # pip install grapheme

s = open("text.txt", encoding="utf-8").read()
print("len(s)             =", len(s))
print("grapheme.length(s) =", grapheme.length(s))
print("改行を除く          =", grapheme.length(s.replace("\n", "")))
print("UTF-8 のバイト数    =", len(s.encode("utf-8")))
len(s)             = 24
grapheme.length(s) = 17
改行を除く          = 15
UTF-8 のバイト数    = 75

Python の文字列はコードポイントの並びなので、len はコードポイントの数(24)を返します。見た目の1文字で数えるには、grapheme や regex の \X を使います。

JavaScript(length・[...s]・Intl.Segmenter)

import fs from "fs";
const s = fs.readFileSync("text.txt", "utf8");
const seg = new Intl.Segmenter("ja", { granularity: "grapheme" });
console.log("s.length          =", s.length);
console.log("[...s].length     =", [...s].length);
console.log("Intl.Segmenter    =", [...seg.segment(s)].length);
s.length          = 31
[...s].length     = 24
Intl.Segmenter    = 17
X(weightedLength)= 32

最後の行は、同じ文字列を twitter-text の parseTweet() に渡した結果です。MDN も、length は UTF-16 のコード単位の数で、文字数とは一致しないことがあると説明し、コードポイントで数えるなら [...str].length、書記素(見た目の1文字)で数えるなら Intl.Segmenter を使う例を載せています。MDN では Intl.Segmenter は「Baseline 2024」(2024年4月以降の主なブラウザーで動く)です。JavaScript の文字列の扱いは、関連記事「JavaScript 文字列操作 一覧|全メソッド早見表とNode 22実行結果」で扱っています。

wc -m(Linux・Mac のコマンド)

$ LANG=C.UTF-8 wc -m text.txt
24 text.txt
$ LC_ALL=POSIX wc -m text.txt
75 text.txt
$ wc -c text.txt
75 text.txt
$ LANG=C.UTF-8 wc -lm text.txt
 2 24 text.txt

wc -m は、UTF-8 のロケールではコードポイントの数(24)を、マルチバイト文字に対応しないロケール(POSIX)ではバイト数(75)を返しました。 日本語を数えて数が3倍近くになったら、ロケールを疑います。-l は改行の数(行数)です。wc のほかのオプションは関連記事「Linux cut・tr・wcの使い方|列の抜き出しと行数カウント早見表」で扱っています。

17見た目の1文字Intl.Segmenter・grapheme
24コードポイントPython の len・wc -m
31UTF-16 の単位JavaScript の length
数え方 結果 何を数えたか
Intl.Segmenter・grapheme 17 見た目の1文字(改行2つを含む)
上から改行を除く 15 見た目の1文字だけ
Python の len・[...s]・wc -m(UTF-8) 24 コードポイント
JavaScript の length 31 UTF-16 のコード単位
X(twitter-text) 32 日本語2・絵文字2・改行1の重み
wc -c・wc -m(POSIX) 75 UTF-8 のバイト数

X(旧Twitter)の文字数の数え方

この節では、X の投稿が何文字まで書けるのかと、日本語・絵文字・URL の数え方が分かります。

X は「重み付きの文字数」で数え、上限は 280 です。半角英数字や記号は1、日本語・中国語・韓国語の文字と絵文字は2と数えるので、日本語だけなら140文字まで書けます。 URL は長さに関係なく23と数えます(t.co で短くされるため)。X の開発者向けドキュメント「Counting characters」による決まりです。

文字の種類 数え方 日本語だけの上限
半角英数字・記号・半角スペース 1 ―
ひらがな・カタカナ・漢字・全角記号 2 140文字
絵文字(肌の色・家族の組み合わせも) 2 140個
URL 長さに関係なく23 ―
返信で自動で付く先頭の @ユーザー名 0 ―
公式アプリで付けた画像・動画 0 ―

X の公式ライブラリ twitter-text 3.1.0 で確かめた結果です。

あ×140                      weightedLength=280 valid=true
あ×141                      weightedLength=282 valid=false
a×280                      weightedLength=280 valid=true
a×281                      weightedLength=281 valid=false
あ×100+a×80                 weightedLength=280 valid=true
URL(20字)                   weightedLength= 23 valid=true
URL(75字)                   weightedLength= 23 valid=true
お知らせ+空白+URL                weightedLength= 32 valid=true
#文字数                       weightedLength=  7 valid=true
café(合成済み)                 weightedLength=  4 valid=true
café(e+結合記号)               weightedLength=  4 valid=true
  • 日本語は141文字目で上限(282)を超えました。 日本語100文字なら、半角英数字をあと80文字書けます。
  • 「お知らせ」(4文字×2=8)+空白(1)+75字の URL(23)で32になりました。
  • twitter-text の設定(config v3)では、重みが1になるのはコードポイント 0〜4351、8192〜8205、8208〜8223、8242〜8247 の範囲で、それ以外は2です。このため、半角カナ(ア など)も1字2と数えられます(上の表の ガ が4)。
  • X の有料プランでは、より長い投稿ができます。上限は X ヘルプセンターで確かめます(2026年10月23日時点で、英語版のページは4,000文字、日本語版のページは2,000文字と書いています)。

原稿用紙換算のやり方(400字詰め)

この節では、文字数から原稿用紙何枚分かを見積もる方法と、単純な割り算とずれる理由が分かります。

400字詰めの原稿用紙は20字×20行です。単純な目安は「文字数÷400」ですが、段落の最初の1マスを空け、段落の終わりは行の残りを空けるので、実際の枚数は割り算より多くなります。

単純な割り算

改行を除いた文字数÷400

下の例では 102字÷400=0.26枚

段落が多いほど実際とずれる

原稿用紙に書いた行数で数える

段落ごとに(1マス+文字数)÷20 を切り上げ

下の例では8行=160マス分

20行ごとに1枚

4つの段落、改行を除いて102文字の文章を、Python で数えました。

import math

def genko(text, cols=20, rows=20, indent=True):
    """400字詰め原稿用紙(20字×20行)に書いたときの行数と枚数。
    段落(改行で区切った1行)ごとに新しい行から書き、段落の頭を1マス空ける。"""
    lines = 0
    for para in text.split("\n"):
        if para == "":
            continue
        n = len(para) + (1 if indent else 0)
        lines += math.ceil(n / cols)
    return lines, math.ceil(lines / rows)

text = ("文字数を数える方法は、使う道具によって少しずつ違います。\n"
        "改行を数えるか、スペースを数えるかで、結果が変わります。\n"
        "提出先に決まりがあれば、それに合わせて数えます。\n"
        "迷ったら、どの道具で数えたかを書き添えます。")
chars = len(text.replace("\n", ""))
lines, sheets = genko(text)
print("改行を除いた文字数:", chars)
print("文字数÷400 の単純計算:", round(chars / 400, 2), "枚")
print("原稿用紙に書いたときの行数:", lines, "行 →", sheets, "枚(最後の行まで使うと", round(lines / 20, 2), "枚分)")
print("空いたマスを含めた字数:", lines * 20)
改行を除いた文字数: 102
文字数÷400 の単純計算: 0.26 枚
原稿用紙に書いたときの行数: 8 行 → 1 枚(最後の行まで使うと 0.4 枚分)
空いたマスを含めた字数: 160

102文字の文章が、原稿用紙では160マス分(8行)を使いました。 段落が4つあり、それぞれ2行目が途中で終わったためです。「原稿用紙2枚以内」のような指定では、行数で数えるほうが実際の枚数に近くなります。

  • 句読点が行の頭に来るときは、前の行の最後のマスに入れる書き方(ぶら下げ)があり、その分の行数が変わることがあります。上のプログラムは数えていません。
  • 「〇〇字以内」と「原稿用紙〇枚」は別の決まりです。どちらの指定かを確かめます。

コピーして使える文字数カウントのHTML

この節では、ブラウザで開くだけで文字数を数えられる、小さな HTML+JavaScript のコードと、Chromium で動かした結果が分かります。

次のコードを counter.html という名前で保存し、ブラウザで開くと、入力した文章の文字数がその場で数えられます。 外部のサーバーに文章を送らないので、社外に出せない文章も手元だけで数えられます。

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>文字数カウント</title>
<style>
  .cc { max-width: 640px; font-family: system-ui, sans-serif; }
  .cc textarea { width: 100%; min-height: 10em; box-sizing: border-box; font-size: 16px; padding: 8px; }
  .cc table { border-collapse: collapse; margin-top: 8px; }
  .cc th, .cc td { border: 1px solid #ccc; padding: 4px 10px; text-align: left; }
  .cc td { text-align: right; font-variant-numeric: tabular-nums; }
</style>
</head>
<body>
<section class="cc">
  <textarea id="cc-in" placeholder="ここに文章を貼り付けます"></textarea>
  <table>
    <tr><th>文字数(見た目の1文字ずつ)</th><td id="cc-all">0</td></tr>
    <tr><th>改行を除く</th><td id="cc-nobr">0</td></tr>
    <tr><th>空白と改行を除く</th><td id="cc-nosp">0</td></tr>
    <tr><th>行数</th><td id="cc-lines">0</td></tr>
    <tr><th>UTF-8 のバイト数</th><td id="cc-bytes">0</td></tr>
    <tr><th>原稿用紙(20×20)の行数・枚数</th><td id="cc-genko">0</td></tr>
    <tr><th>X の文字数の目安(URL は数えない簡易版)</th><td id="cc-x">0</td></tr>
  </table>
</section>
<script>
(() => {
  const $ = (id) => document.getElementById(id);
  // 見た目の1文字(書記素)に分ける。Intl.Segmenter が無いブラウザではコードポイントで分ける
  const seg = (typeof Intl !== "undefined" && Intl.Segmenter)
    ? new Intl.Segmenter("ja", { granularity: "grapheme" }) : null;
  const split = (s) => seg ? Array.from(seg.segment(s), (x) => x.segment) : Array.from(s);
  // X の重み:この範囲のコードポイントは1、それ以外は2(twitter-text の config v3)
  const light = [[0, 4351], [8192, 8205], [8208, 8223], [8242, 8247]];
  const weight = (cp) => light.some(([a, b]) => cp >= a && cp <= b) ? 1 : 2;
  const isEmoji = /\p{Extended_Pictographic}|\p{Regional_Indicator}/u;

  function count() {
    const text = $("cc-in").value.replace(/\r\n?/g, "\n"); // 改行を LF にそろえる
    const chars = split(text);
    const noBr = chars.filter((c) => c !== "\n");
    const noSp = noBr.filter((c) => !/^\s+$/u.test(c));
    const lines = text === "" ? 0 : text.split("\n").length;
    const bytes = new TextEncoder().encode(text).length;
    let gLines = 0;
    for (const p of text.split("\n")) {
      if (p !== "") gLines += Math.ceil((split(p).length + 1) / 20); // 段落の頭を1マス空ける
    }
    let x = 0;
    for (const c of split(text.normalize("NFC"))) {
      x += isEmoji.test(c) ? 2 : Array.from(c).reduce((n, ch) => n + weight(ch.codePointAt(0)), 0);
    }
    $("cc-all").textContent = chars.length;
    $("cc-nobr").textContent = noBr.length;
    $("cc-nosp").textContent = noSp.length;
    $("cc-lines").textContent = lines;
    $("cc-bytes").textContent = bytes;
    $("cc-genko").textContent = `${gLines}行・${Math.ceil(gLines / 20)}枚`;
    $("cc-x").textContent = `${x} / 280`;
  }
  $("cc-in").addEventListener("input", count);
  count();
})();
</script>
</body>
</html>

コードの要点です。

部分 していること
Intl.Segmenter 見た目の1文字に分ける。無いブラウザでは Array.from でコードポイントに分ける
/^\s+$/u 半角スペース・全角スペース・タブを空白として除く
replace(/\r\n?/g, "\n") Windows の改行(CRLF)を1文字にそろえる
TextEncoder UTF-8 にしたときのバイト数を数える
weight() と isEmoji X の重み(1か2)を足す。URL の23は数えない

Chromium で動かした結果

Chromium 141 でこのファイルを開き、入力欄に文章を入れて、表の数を読み取りました。ページのエラーは出ませんでした。

text.txt(最後の改行なし): 16 | 15 | 15 | 2 | 74 | 2行・1枚 | 31 / 280
原稿用紙の例: 105 | 102 | 102 | 4 | 309 | 8行・1枚 | 207 / 280
空白入り: 19 | 19 | 15 | 1 | 31 | 1行・1枚 | 25 / 280

左から、文字数・改行を除く・空白と改行を除く・行数・UTF-8 のバイト数・原稿用紙・X の目安です。「空白入り」は Hello world テスト です(半角スペース2つ・全角スペース・タブを含む)で、空白4文字を除いて15になりました。

X の目安の列は、15種類の文字と長い文章4つの計19通りで、twitter-text の weightedLength と19通りすべて一致しました。 URL を含む文章では、URL の実際の長さで数えるので、X の数より大きく出ます。

SEOに文字数は関係ある?(Googleの公式の見解)

この節では、Web 記事の文字数について Google が公式に何と言っているかが分かります。

Google は、検索で上位に出すために優先する文字数は無い、としています。 Google 検索セントラルの「有用で信頼性の高い、ユーザー第一のコンテンツの作成」には、自分の記事を見直す質問として「Google が優先する文字数があるとどこかで聞いたか読んだかしたために、特定の文字数になるように記事を書いていますか(そのような設定は存在しません)」とあります。

対象 Google の説明(Google 検索セントラル)
本文の文字数 優先する文字数は存在しない
メタ ディスクリプション 長さに制限は無い。検索結果では必要に応じて切り詰められる
title 要素 不必要に長いものは避ける。検索結果に全部は表示されないことがある

文字数が合わないときの確認

この節では、道具によって文字数が違うときに、どこを見ればそろうかが分かります。

数が合わないときは、多くの場合「改行」「空白」「絵文字」「数える範囲」のどれかの扱いが違います。 上から順に確かめます。

  • 1改行を数えているかwc -m や JavaScript の length は改行も1文字に数えた
  • 2空白を数えているかGoogle ドキュメント・Pages は空白あり・なしの2つの数を出す
  • 3数える範囲が同じかGoogle ドキュメントはヘッダー・フッター・脚注を除く。Word はテキストボックスや脚注を含めるか選べる
  • 4絵文字・𠮷・異体字が入っていないか数え方で1〜11文字に変わる(上の比較表)
  • 5Windows の改行(CRLF)ではないか改行1つが2文字に数えられることがある
  • 6コマンドのロケールが UTF-8 かwc -m が POSIX ロケールではバイト数を返した

自分の道具がどの数え方かを知るには、上の比較表の文字(たとえば 👨‍👩‍👧‍👦 や 𠮷)を1つだけ貼り付けて数えます。1なら見た目の1文字、7や2なら別の数え方です。

画像の中の文字は、そのままでは文字数カウントの対象になりません。文字として取り出し、間違いを直してから数えます。生成 AI に送る文章の長さは、文字数ではなく「トークン」で数えます。トークンの数え方は、関連記事「トークンとは|生成AIの数え方・日本語の文字数目安と節約方法」で扱っています。

よくある質問

Q. 字数カウントと文字数カウントは同じですか? A. 同じ意味で使われています。どちらも文章の文字の数を数えることです。数え方の違いは「何を1文字と数えるか」の節にまとめています。

Q. 文字数カウントで改行は含まれますか? A. 道具によります。wc -m や JavaScript の length は改行も1文字(Windows の改行は2文字)に数えました。提出先に決まりがあれば、それに合わせます。

Q. スペース(空白)は文字数に入りますか? A. 道具によります。Google ドキュメントと Pages は、空白を含めた数と含めない数の両方を出します。

Q. 句読点(、。)や「」は1文字ですか? A. 1文字です。「、。「」!」の5文字を Python の len・grapheme、JavaScript の length・Intl.Segmenter、wc -m で数えると、どれも5でした。X だけは1文字を2と数え、10でした。

Q. 半角は0.5文字ですか? A. 多くの道具では、半角も全角も1文字です。半角を0.5文字と数えるのは、Shift_JIS のバイト数で数える場合や、X(半角英数字が1、日本語が2)のような独自の決まりの場合です。

Q. 絵文字は何文字ですか? A. 見た目の1文字で数えると1です。JavaScript の length では 😀 が2、肌の色つきが4、家族の絵文字が11になりました。X では種類に関係なく2です。

Q. Wordで選んだ範囲だけの文字数を数えるには? A. 数えたい部分を選ぶと、左下のステータスバーに選んだ範囲の数と文書全体の数が並んで出ます。

Q. Googleドキュメントの文字数カウントのショートカットは? A. Windows・ChromeOS は Ctrl+Shift+C、Mac は ⌘+Shift+C です。

Q. iPhoneのメモで書いた文章の文字数を数えるには? A. 文章をコピーし、Pages か Google ドキュメント アプリに貼り付けて数えます。この記事の文字数カウントのHTMLを Safari で開いて貼り付けても数えられます。

Q. Xは何文字まで投稿できますか? A. 重み付きで280までです。日本語は1文字を2と数えるので、日本語だけなら140文字です。URL は長さに関係なく23と数えます。

Q. 原稿用紙1枚は何文字ですか? A. 400字詰めなら20字×20行で400マスです。段落の頭と終わりに空きができるので、書ける文字数は400より少なくなります。

Q. SEOでは何文字の記事がよいですか? A. Google は、優先する文字数は存在しないと公式に書いています。読者の疑問に答えるのに必要な量で書きます。

まとめ

  • Word は左下のステータスバー、Google ドキュメントは Ctrl+Shift+C、Windows 11 のメモ帳は下のステータスバー、スマホは Pages か Google ドキュメント アプリで数えられる。
  • 改行・空白・数える範囲の扱いが道具ごとに違う。Google ドキュメントと Pages は空白あり・なしの2つの数を出す。
  • 同じ2行の文章が、見た目の1文字で17、コードポイントで24、JavaScript の length で31、X で32、UTF-8 のバイト数で75になった。
  • X は重み付きで280まで。日本語・絵文字は2、URL は23。
  • 原稿用紙は行数で数えると実際に近い。102文字の例で160マス分を使った。
  • コピー用の HTML は、見た目の1文字・改行や空白を除いた数・バイト数・原稿用紙・X の目安を出し、X の目安は twitter-text と19通りすべて一致した。

次に読むとよい記事です。文字がコンピューターの中でどう表されているかは、関連記事「UnicodeとUTF-8の違いとは?UTF-16・サロゲートペアまで実行結果で理解」で扱っています。

参考・出典

確認日はいずれも 2026年10月23日です。

  • Microsoft サポート「単語数を表示する」:https://support.microsoft.com/ja-jp/office/show-word-count-3c9e6a11-a04d-43b4-977c-563a0e0d5da3
  • Microsoft サポート「文字カウント」:https://support.microsoft.com/ja-jp/article/017e8d0b-03f8-4438-b4ca-d771af50339f
  • Microsoft サポート「Word で文法やスペルなどをチェックする」:https://support.microsoft.com/ja-JP/Word/training/check-grammar-spelling-and-more-in-word
  • Windows Insider ブログ「Announcing Windows 11 Insider Preview Build 26010 (Canary Channel)」:https://blogs.windows.com/windows-insider/2023/12/07/announcing-windows-11-insider-preview-build-26010-canary-channel/
  • Google ドキュメント エディタ ヘルプ「ドキュメントのワード数を数える」:https://support.google.com/docs/answer/39003?hl=ja
  • Google ドキュメント エディタ ヘルプ「Google ドキュメントのキーボード ショートカット」:https://support.google.com/docs/answer/179738?hl=ja
  • Apple「iPhoneのPagesで単語数などの統計を表示する」:https://support.apple.com/ja-jp/guide/pages-iphone/tand47165437/ios
  • Apple「MacのPagesで単語数などの統計を表示する」:https://support.apple.com/ja-jp/guide/pages/tand47165437/mac
  • apple-oss-distributions/text_cmds「wc.1」:https://github.com/apple-oss-distributions/text_cmds/blob/main/wc/wc.1
  • X Developer Platform「Counting characters」:https://docs.x.com/fundamentals/counting-characters
  • twitter/twitter-text(GitHub):https://github.com/twitter/twitter-text
  • X ヘルプセンター「ポストする方法」:https://help.x.com/ja/using-x/how-to-post
  • MDN「String: length」:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/length
  • MDN「Intl.Segmenter」:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter
  • Unicode「UAX #29: Unicode Text Segmentation」:https://www.unicode.org/reports/tr29/
  • Google 検索セントラル「有用で信頼性の高い、ユーザー第一のコンテンツの作成」:https://developers.google.com/search/docs/fundamentals/creating-helpful-content?hl=ja
  • Google 検索セントラル「スニペットの管理・メタ ディスクリプションについて」:https://developers.google.com/search/docs/appearance/snippet?hl=ja
  • Google 検索セントラル「Google 検索結果のタイトルリンクの変更」:https://developers.google.com/search/docs/appearance/title-link?hl=ja

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「文字数カウントのやり方|Word・スマホ別の数え方と改行・絵文字の扱い」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?