Base64エンコード・デコード
テキストやファイルをBase64に変換したり、Base64を読めるテキストに戻したりできます。Unicodeも正しく扱え、URLセーフ形式にはワンクリックで切り替え可能です。デコードはどちらの形式でも、パディングの有無にかかわらず受け付けます。
0 文字 · 0 語 · 0 行
0 文字 · 0 語 · 0 行
すべてこのブラウザのタブ内で処理されます。テキストがアップロードされたり保存されたりすることはありません。
Base64 の文字セット
RFC 4648 のインデックスと文字の対応です。強調表示した最後の2つは URL セーフ版で異なり、62 は + または -、63 は / または _ です。
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
出力の長さ
入力3バイトごとに4文字になります。最後に1〜2バイト余った場合、標準の Base64 では = で埋め、URL セーフ形式では埋めません。
| 入力 | バイト数 | 標準 | URL セーフ | 長さ |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Base64でできること
Base64はRFC 4648で定められた方式で、任意のバイト列を64種類の印字可能なASCII文字(A–Z、a–z、0–9、+、/)で表現します。3バイト(24ビット)ごとに4つの6ビットの数値に分け、それぞれの数値が文字表から1文字を選びます。入力の長さが3の倍数でない場合は、最後のグループが1つまたは2つの = で埋められます。結果は常に入力より約33%大きくなり、3バイトにつき4文字になります。
テキスト向けに作られた通信経路が多いため、この方式が使われています。メール(MIME)、HTMLやCSSのdata: URL、画像や証明書を含むJSONのフィールド、HTTP Basic認証ヘッダーなどが、バイナリデータを安全に運ぶためにBase64を使っています。暗号化ではなく、何も隠せません。デコードに鍵は不要です。
UnicodeとURLセーフ形式
Base64は文字ではなくバイトをエンコードするため、テキストはまずバイト列に変換する必要があります。このツールは常に、Webで標準的なUTF-8を使います。éは2バイト、絵文字は4バイトになります。ブラウザ標準のbtoa関数だけでは、U+00FFを超える文字でエラーになります。アクセント付き文字や絵文字で単純なエンコーダーが失敗するのはこのためです。このツールでは、テキストを先にTextEncoderで変換し、デコード時はTextDecoderで元に戻します。デコードしたバイト列が有効なUTF-8でない場合(画像やZIPファイルなど)は、文字化けしたテキストではなく16進数で表示します。
標準のBase64が使う + と / は、URLやファイル名で特別な意味を持ちます。RFC 4648の第5節にあるURLセーフなアルファベットでは、これらを - と _ に置き換え、パディングは通常省略します。JSON Web Tokenはまさにこの形式です。デコーダーは両方の形式とパディングなしの入力に対応しているため、どちらを貼り付けても使えます。
ファイルや画像のエンコード
ファイルを選ぶと、ツールがFileReaderでローカルに読み込み、そのBase64を返します。ファイルのMIMEタイプ付きの完全なdata: URLも作成でき、imgタグやCSSの背景にそのまま貼り付けられます。インライン画像はHTTPリクエストを1回減らせますが、サイズが3分の1ほど増え、個別にキャッシュできません。そのため写真ではなく小さなアイコン向きです。プレビューやHTML・CSSのスニペットが付いた画像向けのツールは、画像をBase64に変換をご利用ください。
よくある質問
- Base64の出力が元のデータより長くなるのはなぜですか?
- 3バイトが4文字になるため、出力は入力の約4/3倍の大きさになり、これに最大2文字のパディングが加わります。ASCII以外のテキストは、UTF-8で1文字あたり2〜4バイトを使うため、さらに長くなります。
- 末尾の「=」は何ですか?
- パディングです。入力の長さが3の倍数でないときに、出力の長さを4の倍数にそろえます。= が1つなら最後のグループが2バイト、= が2つなら1バイトだったことを示します。
- デコード時に無効な文字のエラーが出るのはなぜですか?
- 入力に、アルファベット以外の文字が含まれています。たとえば単語の途中のスペース、引用符、URLエンコード由来の % などです。改行とパディングの欠落は許容されますが、それ以外の文字は許容されません。
- パスワードをBase64でエンコードすれば安全ですか?
- Base64には保護機能がありません。HTTP Basic認証はuser:passwordをBase64で送るため、必ずHTTPSで使う必要があります。秘密情報の保護には、本物の暗号化やハッシュを使ってください。
- Base64とBase64urlの違いは何ですか?
- 違いは2文字とパディングだけです。Base64urlは + と / の代わりに - と _ を使い、通常は = を省きます。そのため、結果をエスケープなしでURLやファイル名に入れられます。