CodeKitHub
テキストツール

バイトカウンター — 文字数とバイトサイズの比較

最終更新:

テキストを入力または貼り付けると、その文字数と、UTF-8・UTF-16で実際に占めるバイト数をリアルタイムで確認できます。非ASCII文字(アクセント記号、CJKテキスト、絵文字)が含まれると、この2つの数値はすぐに乖離します。

0
文字数
0
UTF-8 バイト数
0
UTF-16 バイト数

このツールとは?

純粋なASCIIテキスト(英字、数字、基本的な句読点)では、文字数とバイト数は同じ数値になります——UTF-8では各文字がちょうど1バイトを占めるためです。アクセント付き文字、中国語/日本語/韓国語の文字、キリル文字、アラビア語、絵文字、その他ほとんどの非ASCII文字が含まれると、この前提は成り立たなくなります。1文字がUTF-8で2、3、または4バイト、UTF-16で2または4バイトを占めることがあります。

これは、システムが文字数ではなくバイト数で上限を設けている場合に重要です——SMSメッセージ、データベースの列サイズ、APIペイロードの上限、一部のソーシャルプラットフォームはすべて文字数ではなくバイト数で計測するため、同じテキストでも含まれる言語や記号によって知らないうちに上限を超えてしまうことがあります。

なぜこれを使うのか?

  • TwitterやXのAPI連携ツールを自作していて、日本語の投稿がバイト数ベースの上限に引っかかって送信エラーになる理由を突き止めたいとき、文字数とUTF-8バイト数の差を一目で確認できます。
  • 多言語対応のECサイトで、日本語の商品名がデータベースのVARCHAR(255)(バイト単位で定義されている場合)に収まるか事前にチェックしたいとき。
  • 海外向けSMS通知システムを実装していて、絵文字や日本語を含むメッセージが何セグメントに分割され課金されるか、送信前に見積もりたいとき。
  • APIのペイロードサイズ制限に引っかかったエラーを調査していて、日本語の文字数は少ないのにバイト数だけが妙に大きいことに気づいたとき。
  • 海外のシステムに絵文字混じりのユーザー名を登録しようとして、想定より少ない文字数しか入力できないと言われたとき、絵文字が内部的に何バイト・何コードユニットとして扱われているかを確認できます。
  • 顧客データや社内システムの文字列を扱う場合でも、入力内容はブラウザ内で処理されるだけなので、外部にテキストを送信せず安心してチェックできます。

使い方

  1. テキストをボックスに入力または貼り付けます。
  2. その下に表示される文字数、UTF-8バイト数、UTF-16バイト数を確認します——入力に応じてリアルタイムに更新されます。

入力

Hello, 世界! 🌍

出力

12文字、UTF-8で19バイト、UTF-16で26バイト

ASCII部分(「Hello, 」と「! 」)はUTF-8で1文字あたり1バイトです。各中国語文字は3バイト、絵文字は4バイトを占めるため、バイト数が文字数よりも顕著に多くなっています。

よくある使い方

  • 多言語対応の商品説明文が、文字数ではなくバイト長で定義されたデータベースの列に収まるかを確認する。
  • SMSは料金請求とセグメント分割がバイトサイズで行われ、非ラテン文字はセグメントごとの上限が異なるため、SMSセグメント数を見積もる。
  • 送信前にAPIペイロードやフォームフィールドがバイトベースのサイズ制限内に収まっているか確認する。
  • 「短く見える」文字列が、バイトベースの長さチェックを行うシステムによって拒否される理由を理解する。

文字種別のUTF-8バイト数目安

同じ「1文字」でも、含まれる文字の種類によってUTF-8で使うバイト数は大きく異なります。目安は次の通りです。

文字の種類UTF-8でのバイト数
半角英数字・基本記号1バイトA, 1, !, スペース
全角記号・キリル文字・ギリシャ文字など2バイト×、é、Ж
ひらがな・カタカナ・漢字・全角記号(!など)3バイトあ、ア、漢、!
絵文字・一部の特殊記号4バイト🌍、🎉

よくある質問

なぜ文字数とバイト数が一致しないのですか?

Unicodeテキストはバイトとして保存され、各文字が必要とするバイト数はエンコーディングと文字自体によって決まります。UTF-8では、ASCII文字は1バイト、アクセント付きラテン文字やキリル文字/ギリシャ文字/ヘブライ文字/アラビア文字の多くは2バイト、CJK文字の多くは3バイト、絵文字は通常4バイトです。文字数は保存方法に関係なく、単に記号の数を数えます。

バイト制限のあるフィールドにはどちらのバイト数を使うべきですか?

システムがテキストの保存や送信に実際に使用しているエンコーディングを使ってください——ほとんどの現代のWeb API、データベース、ファイルはUTF-8を使用するため、通常はUTF-8バイト数が関係する数値です。一部の古いシステム(Windows/Java内部の文字列処理など)はUTF-16を使用します。

絵文字は正しくカウントされますか?

されます。多くの絵文字は内部的にUTF-16の「サロゲート」コード単位のペアとして保存されており、単純な計算方法では2文字とカウントされてしまいます。このツールはUnicodeコードポイントを正しくカウントするため、絵文字は1文字としてカウントされ、人が実際に見る文字数と一致します。

これは文字数カウンターツールと同じですか?

いいえ——文字数カウンターは文章作成のための単語数や文数に焦点を当てています。このツールは特に、単語数の要件ではなく技術的な制限に関わる、バイトサイズと文字数の比較を扱います。

テキストはどこかにアップロードされますか?

されません。カウントはブラウザ内でJavaScript組み込みのテキストエンコーダーを使ってローカルに行われ、サーバーには何も送信されません。

ひらがな・カタカナ・漢字はそれぞれ何バイトになりますか?

UTF-8では、ひらがな・カタカナ・漢字はいずれも基本的に1文字あたり3バイトを占めます。これはCJK統合漢字だけでなく、ひらがな・カタカナのブロックも同様にUTF-8で3バイトエンコードされる範囲に含まれるためです。半角カナ(「ア」など)は例外的に2バイトになる点に注意してください。

全角記号や半角記号でバイト数は変わりますか?

はい、大きく変わります。「!」のような全角記号はUTF-8で3バイトを占めますが、半角の「!」はASCII文字として1バイトです。同じ見た目に近い記号でも全角か半角かでバイト数が3倍近く変わるため、SMSやバイト制限のあるフィールドでは全角・半角の使い分けが実際の容量に影響します。

Shift_JISなど日本語特有の文字コードでのバイト数も計算できますか?

いいえ、このツールが計算するのはUTF-8とUTF-16のバイト数のみです。Shift_JISやEUC-JPなど他の文字コードでは1文字あたりのバイト数がさらに異なります(Shift_JISでは全角文字が基本2バイト)。古いシステムとの連携でShift_JIS基準のバイト数が必要な場合は、そのエンコーディングに対応した別の計算方法が必要です。

改行やスペースもバイト数にカウントされますか?

はい。半角スペースや改行(LF)は1バイト、全角スペースは3バイトとしてカウントされます。長文を貼り付けた際、見た目には気づきにくい改行やスペースの積み重ねがバイト数を押し上げていることもあるため、制限ギリギリの場合はこうした不可視文字にも注意が必要です。

関連ツール