UltKit

Base64エンコード・デコード

テキストやファイルをBase64に変換したり、Base64を読めるテキストに戻したりできます。Unicodeも正しく扱え、URLセーフ形式にはワンクリックで切り替え可能です。デコードはどちらの形式でも、パディングの有無にかかわらず受け付けます。

モード

0 文字 · 0 語 · 0 行

0 文字 · 0 語 · 0 行

すべてこのブラウザのタブ内で処理されます。テキストがアップロードされたり保存されたりすることはありません。

Base64 の文字セット

RFC 4648 のインデックスと文字の対応です。強調表示した最後の2つは URL セーフ版で異なり、62 は + または -、63 は / または _ です。

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

出力の長さ

入力3バイトごとに4文字になります。最後に1〜2バイト余った場合、標準の Base64 では = で埋め、URL セーフ形式では埋めません。

入力バイト数標準URL セーフ長さ
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

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やファイル名に入れられます。