ファイルを選択
  1. base64hub
  2. テキストツール
  3. サイズ計算

Base64 サイズ計算ツール

サイズをバイト、KB、MB で入力するか、ファイルをドロップすると、パディングの有無、改行、data URI プレフィックスを含めた Base64 の正確な長さがわかります。逆方向モードでは Base64 の長さからバイト数を求めます。

無料 登録不要・制限なし ローカル アップロードなし 正確 パディング、改行、プレフィックスも計算 更新日 2026/10/27
読み取るのはサイズだけで、ファイルの中身は開きません。

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 のサイズを計算する方法

  1. バイト数 → Base64 の長さ を選んだまま 元のサイズ を入力し、単位 を選びます。単位 の設定では、サイズの測り方に合わせて 1 KB = 1000 B か 1 KiB = 1024 B を選んでください。
  2. または、ファイルをボックスにドロップします。読み取るのはサイズだけで、ファイルの中身は開きません。
  3. 表を確認します。パディングあり・なしの長さ、増加率(%)、任意の折り返し(1 行の長さ と 改行コード を設定)、MIME メールの行、PEM 本体、ファイルの MIME タイプ付きの data: URI、引用符を含む JSON 文字列が並びます。
  4. 逆方向の計算には Base64 の長さ → バイト数 に切り替え、長さを入力し、改行を含むかどうかを指定して、パディング の状態を選びます。既知、不明(0~2 個)、なしのいずれかです。Base64 そのものを貼り付ければ正確な値が出ます。

表の下のライブ数式は、入力した数値で計算をもう一度示します。コードのコメントやチケットに書くときに便利です。

公式と 33% になる理由

Base64 は 3 バイトごとに 4 文字に変換し、1 文字が 6 ビットを運びます。最後のグループは = で 4 文字に揃えられるので、次のようになります。

padded   = 4 × ⌈n ÷ 3⌉
unpadded = ⌈4n ÷ 3⌉
decoded  = (characters × 3 ÷ 4) − number of "=" signs

大きな入力では一律 33.3% の増加です。小さな入力ではパディングが支配的になり、1 バイトが 4 文字になるので増分は 300% です。次の表は、計算ツールと同じコードで作成しました。

元のサイズBase64(パディングあり)パディングなしMIME(76 + CRLF)PEM(64 + LF)
1 バイト4244
100 バイト136134138138
1,000 バイト(1 KB)1,3361,3341,3701,356
1,024 バイト(1 KiB)1,3681,3661,4021,389
1,048,576 バイト(1 MiB)1,398,1041,398,1021,434,8961,419,949
5,000,000 バイト(5 MB)6,666,6686,666,6676,842,1066,770,834

改行は行と行の間だけで数え、最終行の後には付けていません。Python の base64.encodebytes など一部のエンコーダーは、最終行も含めすべての行を \n で終えるので、改行が 1 つ増えます。data URI の場合はプレフィックスを足してください。data:image/png;base64, は 22 文字です。

サイズ上限を見越した計画

何かが失敗する前に確かめておきたい、典型的な上限です。

  • リクエストボディの上限。 エンドポイントが 10,000,000 バイトまで受け付け、ファイルを JSON フィールドに入れる場合、ファイルは最大で約 7,500,000 バイトから JSON の残りの部分を引いた大きさです。逆方向モードに切り替えて上限値を入力し、フィールド名などの分を引いてください。
  • データベースのカラムと環境変数。 VARCHAR(255) に入る Base64 は最大 189 バイト分です。190 バイトだとすでに 256 文字が必要になります。
  • メール。 MIME の添付ファイルは 76 文字ごとに CRLF で折り返されるので、全体で約 37% 増えます。そのため、メッセージサイズの上限に対して送れるファイルは上限の約 73% までです。詳しくは メールの Base64 を参照してください。
  • HTML や CSS の data URI。 インライン化した画像は、どれもファイルより 3 分の 1 大きくなり、個別にキャッシュすることもできません。それでも得になる場合については data URI のパフォーマンス で解説しています。

コードで Base64 の長さを求める

どの言語でも、実際にエンコードせずに計算できます。

import math

def b64_len(n, padded=True):
    return 4 * math.ceil(n / 3) if padded else math.ceil(4 * n / 3)

print(b64_len(1048576), b64_len(1048576, padded=False))

これは 1398104 1398102 を出力します。JavaScript では、パディングありの長さは 4 * Math.ceil(n / 3) です。手元の文字列を確認するには、改行を取り除いたうえで len(s) * 3 // 4 - s.count("=") を計算すればデコード後のサイズがわかります。逆方向モードで 4 で割った余りが 1 になるような、ありえない長さと表示された場合は文字列が壊れています。Base64 検証ツール で問題の位置を調べてください。

よくある質問

Base64 の長さを求める公式は?

n バイトに対して、パディングありなら 4 × ⌈n ÷ 3⌉ 文字、パディングなしなら ⌈4n ÷ 3⌉ 文字です。改行、data: プレフィックス、JSON の引用符はこれとは別に加わります。

Base64 からデコードしたファイルの大きさは?

Base64 の文字数(改行を除く)に 3 を掛けて 4 で割り、末尾の = 1 つにつき 1 バイトを引きます。1,400,000 文字の文字列なら、パディングによって 1,049,998~1,050,000 バイトになります。

リクエスト上限 10 MB の API で送れる最大のファイルサイズは?

上限が 10,000,000 バイトなら、10,000,000 × 3 ÷ 4 = 7,500,000 なので約 7.5 MB です。そこから文字列を囲む JSON フィールドやヘッダーの分を引きます。正確な値は、上限値を長さとして逆方向モードに入力すれば求められます。

gzip で Base64 の増分は打ち消せますか?

転送時にはおおむね打ち消せます。gzip は Base64 を元のバイト列とほぼ同じサイズまで縮めます。ランダムな 1,000,000 バイトは Base64 で 1,333,336 文字になり、gzip すると 1,009,976 バイトです。ただし、JSON フィールド、データベースのカラム、圧縮しないリクエストなど、テキストそのものを数える上限では 3 分の 1 の増分がそのまま効きます。