出力

Base32(RFC 4648)は A–Z と 2–7 だけを使うので、大文字小文字が変わっても壊れず、読み上げにも向いています。hello は NBSWY3DP になります。認証アプリのTOTPシークレットはこの形式で、5バイトが8文字になるため、元より約60%長くなります。

使い方

  1. 形式を選びます:Base64、Base32、16進数、2進数、URL、HTML、Unicode、Punycode。
  2. エンコードかデコードを選び、入力または貼り付けます。結果は入力と同時に更新されます。
  3. 結果をタップするとコピー、ダウンロードも可能です。入れ替えボタンで出力を入力に移し、方向を反転します。
  4. Base64では任意のファイルをドロップして、Base64またはデータURLを取得できます。画像のBase64をデコードするとプレビューが表示され、ダウンロードできます。
  5. デコードできない場合は、エラーの文字と位置が正確に表示されます。
  • すべてUTF-8で処理するため、絵文字や日本語も正しく往復変換できます。
  • Base64のデコードは標準・URLセーフ両方の文字、パディングなし、改行、data: URLに対応しています。
  • URLのコンポーネントモードは予約文字(/ ? & = #)もすべてエンコードし、「URI全体」はURLの構造を保ちます。フォームデータには「+をスペース」を使います。
  • Punycodeは国際化ドメイン名を変換します:例 münchen.de ⇄ xn--mnchen-3ya.de。URL全体を貼り付けるとホスト部分だけを変換します。
  • データは送信されません。変換はすべてブラウザ内で行われます。

エンコードは暗号化ではない

ここで扱う形式はどれも、バイト列をテキストとして書き表すための可逆な方法で、公開規格で決められています。Base64とBase32はRFC 4648、パーセントエンコーディングはRFC 3986、エンティティはHTML標準、PunycodeはRFC 3492です。鍵がなくても誰でもデコードできます。使える文字が限られたシステムにデータを通すためのもので、秘密を隠す用途には使えません。

Base64のしくみ

Base64は3バイト(24ビット)ずつ区切り、A–Z・a–z・0–9・+・/ の64種類の文字4つで書き表します。そのため出力は入力より約33%大きくなり、最後の組は = で埋めます。Man は TWFu、Hello は SGVsbG8= になります。URLセーフ版は + と / を - と _ に置き換えたもので、URLやファイル名にそのまま使え、JWTもこの形式です。

テキストはまずUTF-8のバイト列に変換されます。「あ」は3バイト(e3 81 82)、€も3バイト(e2 82 ac)として正しくエンコードされます。この手順を省くツールでは、ASCII以外の文字で文字化けが起きます。

形式の使い分け

クエリ文字列の値にはURLエンコード(空白は%20、HTMLフォームでは+)、ユーザーが入力した文字をページに埋め込むときはHTMLエンティティ、生のバイトを調べるときは16進数や2進数、大文字小文字を区別しないコード(TOTPのシークレットなど)にはBase32、国際化ドメイン名にはPunycodeを使います。たとえば münchen.de はDNS上では xn--mnchen-3ya.de です。

よくある質問

Base64は暗号化ですか?

いいえ。Base64は鍵なしで誰でもすぐ元に戻せるエンコード方式で、バイナリデータをテキストとして送れるようにするだけです。秘密にしたいデータは先に暗号化してください。

Base64にするとサイズが大きくなるのはなぜですか?

入力3バイトが4文字になるので、サイズは約33%増え、さらに最大2文字の = が付きます。30KBの画像はBase64で約40KBになります。

コンポーネントとURI全体のエンコードの違いは?

コンポーネントモードは / ? & = # などの予約文字もエンコードし、値をクエリ文字列に入れられるようにします。URI全体モードはそれらを残すので、アドレス全体がそのまま使えます。

URLに%20と+が混在しているのはなぜですか?

どちらも空白を表します。%20は標準のパーセントエンコーディング(RFC 3986)で、+はapplication/x-www-form-urlencoded形式のフォームデータでのみ使われます。フォーム形式のクエリ文字列を作るときは「+をスペース」をオンにしてください。

Base64を画像やファイルに戻せますか?

戻せます。デコードモードでBase64やdata: URLを貼り付けると、画像ならプレビューが表示され、どんなファイルも元のバイト列のままダウンロードできます。

日本語のURLエンコードやBase64変換で文字化けしませんか?

しません。エンコード前にUTF-8に変換し、デコード後にUTF-8から戻すので、絵文字、日本語、韓国語、キリル文字なども入力したとおりに戻ります。

一緒によく使われるツール

使い方

手順

  1. 形式を選びます:Base64、Base32、16進数、2進数、URL、HTML、Unicode、Punycode。
  2. エンコードかデコードを選び、入力または貼り付けます。結果は入力と同時に更新されます。
  3. 結果をタップするとコピー、ダウンロードも可能です。入れ替えボタンで出力を入力に移し、方向を反転します。
  4. Base64では任意のファイルをドロップして、Base64またはデータURLを取得できます。画像のBase64をデコードするとプレビューが表示され、ダウンロードできます。
  5. デコードできない場合は、エラーの文字と位置が正確に表示されます。

ショートカット

Ctrl + Enter結果をコピーAlt + S入力と出力を入れ替えCtrl + Vテキストやファイルを貼り付け

知っておくと便利

ブラウザ内で動作します。ファイルや文字が端末の外に送られることはありません。