/クリックして選ぶ(何個でも。置いた瞬間に振り分けます)
この計算は 2026 年 8 月時点のGmail ヘルプ「Gmail のメールにファイルを添付して送信する」(個人アカウントの添付上限 25MB)と Microsoft Learn「Exchange Online の制限」(既定の送信 35MB・エンコードで 33% 増える) にもとづきます。
PDFそのものを小さくしたいときはPDFを圧縮するへ。
どう分けているか
置かれたファイルを1つずつ圧縮し、圧縮したあとの実際のバイト数で、1通あたりの上限に収まるように詰め合わせます(大きいものから、入る箱へ順に入れる方式)。元の大きさで割るのではなく圧縮後の大きさで詰めるので、できあがったZIPが上限を超えることはありません。ZIP自体の管理領域(1ファイルにつき約76バイト+ファイル名2回分、1つのZIPにつき22バイト)も数に入れています。
できるZIPは1つずつそのまま開ける独立したZIPです。.z01・.z02 のような分割書庫(全部そろえて結合しないと開けない形式)ではないので、受け取った人は届いたZIPをダブルクリックするだけで中身を取り出せます。
日本語のファイル名は、UTF-8で書き込んだうえで「UTF-8で書いた」という印(汎用フラグの第11ビット)を立てています。これはZIPの仕様書(PKWARE APPNOTE)が日本語などを入れるために定めている方法です。同じ名前のファイルが2つあるときは、後のほうに「 (2)」を付けて上書きを防ぎます。
メールの上限は「送る前の大きさ」では決まらない
メールに添付したファイルは、そのままの姿では送られません。Base64という方式で文字に置き換えて送るため、途中で大きくなります(3バイトを4文字にするので約1.33倍。RFC 2045)。Microsoftの資料にも「変換エンコードが33%大きいサイズになる」「エンコードで33%増加する可能性があるため、送信できるメッセージサイズを構成されているよりも25%低い値に制限する」と書かれています。
そのため、この道具の既定は「安全側:メールに乗せた後の大きさで数える」です。上限25MBなら、ZIPは1つあたり約18.7MBまでに抑えます。相手の受信側で弾かれるより、1通増えるほうが安いという考え方です。上限がファイルの大きさそのもので決まる仕組み(社内ファイルサーバーへの受け渡しなど)なら「そのまま」に切り替えてください。
| Gmail(個人アカウント) | 添付ファイルの上限 25MB |
|---|---|
| Microsoft 365(Exchange Online) | 既定の最大メッセージサイズは送信35MB・受信36MB(管理者が1MB〜150MBで変更できる) |
| iOS版・Android版 Outlook | メッセージサイズの制限 33MB |
会社のメールは管理者が上限を下げていることがあります。分からないときは、実際に送れた添付の大きさより少し小さい値を入れてください。
注意
- 1つのファイルだけで上限を超えるときは、それ以上分けられません(そのファイルは単独のZIPにして、画面で知らせます)。上限を上げるか、ファイル転送サービスを使ってください。
- すでに圧縮されている形式(ZIP・JPEG・PNG・PDFの多く・動画)は、圧縮してもほとんど小さくなりません。速さを優先するなら「圧縮しない」を選んでください。
- 1MBは安全側に1,000,000バイトで数えます(1,048,576バイトで数えるより上限が厳しくなります)。
- 4GB以上のファイル、および4GBを超えるZIPには対応していません(ZIP64ではないため)。
- パスワード付きZIPは作れません(パスワード付きZIPを添付し、次のメールでパスワードを送るやり方は、受信側で拒否されることがあります)。
- フォルダごとの取り込みには対応していません。フォルダを開いて、中のファイルをまとめて選んでください。
根拠
- ZIPの構造(ローカルファイルヘッダ30バイト・セントラルディレクトリ46バイト・終端22バイト、UTF-8フラグ、MS-DOS形式の日時): PKWARE APPNOTE(.ZIP File Format Specification)
- Base64が約4/3になること: RFC 2045 6.8
- 添付の上限とエンコードによる増分: Gmailヘルプ「Gmailのメールにファイルを添付して送信する」/Microsoft Learn「Exchange Onlineの制限」(2026年8月時点で本文を確認)
- 圧縮はブラウザ標準の
CompressionStream("deflate-raw")を使っています(追加のライブラリを読み込みません)。対応していないブラウザでは、自動的に「圧縮しない(まとめるだけ)」で作ります。