ファイルサイズ単位換算(MB・MiB・GB・GiB)
KB・KiB・MB・MiB・GB・GiBのバイト数を瞬時に換算。境界値テスト設計・アップロード上限計算に。
—
—
—
—
—
—
—
—
他のオンラインツール
📖 つまずきやすいポイント
B・KB・KiB・MB・MiB・GB・GiB を相互に換算します。1000 進 (SI) と 1024 進 (二進接頭辞) の両方を並べて表示するので、どちらの意味で書かれた数字なのかを確かめられます。処理はブラウザ内で完結します。ただし、あなたが見ている「500MB」がどちらの意味かは、このツールには分かりません — 単位の表記だけでは判別できず、それを書いたソフトウェアの流儀を知る必要があります。容量にまつわるトラブルの大半は、計算間違いではなく、この「どちらの 1MB か」の食い違いです。
| ケース | 何が起きるか | どうする |
|---|---|---|
| 同じ「GB」でも 7% 以上ずれる | 1 GB は 1,000,000,000 バイト、1 GiB は 1,073,741,824 バイトで、その差は 7.4% です。接頭辞が 1 つ上がるごとに差は開き、TB と TiB では約 10% になります。問題は、多くのソフトが 1024 進で計算しながら「GB」と表示していることです — Windows のエクスプローラーがまさにこれで、1 GiB のファイルを「1 GB」と表示します。一方 ドライブメーカーと macOS は 1000 進を使います。だから「500GB のドライブを買ったのに 465GB しかない」は誤表示ではありません — 500,000,000,000 バイトを 1024 進で数え直すと 465.7 GiB になる、というだけのことです。 | 仕様書・要件・API のドキュメントには、単位ではなくバイト数を書いてください。 max_upload = 10485760 は誤解しようがありませんが、「10MB まで」は読む人によって 10,000,000 にも 10,485,760 にもなります。既存の数字がどちらか分からないときの見分け方があります — その数を 1024 で何回か割ってみて、きれいな整数になるなら 1024 進です (4194304 は 4 MiB)。逆に 末尾に 0 が並ぶなら 1000 進です。コマンドラインでは、ls -l と stat が返す生のバイト数が唯一の正解で、-h を付けた時点で丸めが入ります — 数字を突き合わせるときは必ず生のバイト数で比較してください。 |
| アップロード上限は「ファイルサイズ」ではない | 「10MB まで」と決めても、サーバーに届くリクエストは 10MB より大きくなります。multipart/form-data にはフィールド境界とヘッダが付き、ファイルを Base64 で送る設計 (JSON API に埋め込むなど) なら 33% 増えます — 10MB のファイルが 13.3MB になります。さらに、上限は1 か所ではなく複数の層にあり、最も小さい値が勝ちます: nginx の client_max_body_size、PHP の upload_max_filesize と post_max_size、アプリ側の検証、ロードバランサや CDN の上限。症状が層ごとに違うのが厄介です — nginx で越えると 413 が返り、PHP で越えると $_FILES が空のまま 200 が返るので、後者は「何も起きない」という一番分かりにくい壊れ方をします。 |
4 つの値を同時に、同じ方針で決めてください。 目安は client_max_body_size ≥ post_max_size ≥ upload_max_filesize ≥ 実際に許すサイズで、間に 20〜30% の余裕を持たせます — 10MB を許すなら upload_max_filesize=10M / post_max_size=12M / client_max_body_size=16M あたりです。大きいファイルを扱うなら時間側も揃えます: max_execution_time と nginx の fastcgi_read_timeout のどちらか一方だけ延ばしても、短いほうで切れます。そして上限値は「想定される最大のユースケース × 2」を起点にし、なぜその値なのかをコメントに残してください — 根拠のない値は、後で誰も安全に変更できません。 |
| ディスク上の占有量は表示サイズと違う | ファイルシステムはブロック単位で領域を割り当てるので、1 バイトのファイルでも 4 KiB を占有します (多くの環境の既定ブロックサイズ)。1 ファイルなら誤差ですが、1 万個の小さなファイルがあれば、合計 100KB のはずが 40MB 使っています — キャッシュディレクトリや node_modules で「サイズを足しても合わない」のはこれが原因です。逆方向のずれもあります: スパースファイル (中身が空の巨大なディスクイメージなど) は表示サイズより実占有が小さく、ファイルシステムの圧縮や重複排除が効いていれば、さらに小さくなります。つまり「サイズ」という言葉が 2 つの別々の量を指しています。 |
2 つの数を別々に測ってください。 Linux / macOS なら du -sh --apparent-size が「ファイルの中身の合計」、du -sh が「実際に占有しているブロックの合計」です。この 2 つが大きく食い違うディレクトリは、小さなファイルが大量にあるということで、ディスクの空きだけでなく inode の枯渇にも近づいています (df -i で確認できます — 容量に余裕があるのに書き込めない場合、たいていこちらです)。バックアップやコンテナイメージの見積もりでは「実占有」ではなく「中身の合計」を使ってください — 転送量とアーカイブサイズは中身に比例し、ブロック割り当てには比例しません。 |
接頭辞の意味は場面によって切り替わります。覚えておくと迷わない対応が 3 つあります。メモリは常に 1024 進です — 「8GB のメモリ」は必ず 8 GiB で、これは物理的にアドレス線が 2 の冪だからです。ストレージの製品表示は 1000 進。そしてネットワークの帯域はビットで、しかも 1000 進です — 「1Gbps」は 125 MB/s (ビットをバイトにするので 8 で割ります)。「100Mbps の回線なのに 12MB/s しか出ない」は正常です。もうひとつ、ビットとバイトの表記は b と B の大文字小文字だけで区別されます — この 1 文字が 8 倍の違いを生むので、資料を書くときは Mbps か MB/s を省略せずに書いてください。最後に、KB は歴史的に 1024 を指すことも多く、KiB という表記はそれを解消するために 1998 年に導入されました — 新しく書く文書では KiB / MiB を使い、読むときは両方の可能性を疑うのが実務的です。
📖 使い方
-
1
数値と単位を入力左側の入力欄に数値を入力し、隣のドロップダウンで単位 (B / KB / KiB / MB / MiB / GB / GiB) を選択します。
-
2
全単位への換算結果を確認B・KB・KiB・MB・MiB・GB・GiB・TB の全単位への換算値が一覧で表示されます。境界値テストやアップロード上限の設計に役立ちます。
-
3
SI 単位 (MB) と 2 進単位 (MiB) の違いを確認1 MB = 1,000,000 B、1 MiB = 1,048,576 B です。OS が表示する単位と仕様書の単位が異なる場合はここで確認できます。
❓ よくある質問
MB と MiB の違いは何ですか?
OS が表示する GB と仕様書の GB が違うのはなぜですか?
1 GB のファイルに何バイト必要ですか?
🐛 このツールで問題が発生しましたか?
完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。
ご報告ありがとうございます!
運営者に届きました。改善の参考にさせていただきます。