エンコード / デコード
Base64、Base64URL、URL パーセントエンコード、HTML エンティティ、16 進数を入力しながらエンコード・デコードします。UTF-8 に完全対応。
入力した内容は保存されません。同じリクエスト内で変換して返します。
Base64、Base64URL、URL パーセントエンコード、HTML エンティティ、16 進数を入力しながらエンコード・デコードします。UTF-8 に完全対応。
入力した内容は保存されません。同じリクエスト内で変換して返します。
ログの中のトークン、リダイレクトのクエリ文字列、& だらけのメール本文など、エンコードされたテキストは仕事のあちこちに現れます。ここに貼り付けて形式を選べば、入力しながらエンコードまたはデコードの結果を確認できます。
JSON Web Token は、ヘッダー、ペイロード、署名の3つの Base64URL 部分をドットでつないだものです。真ん中の部分を貼り付けて Base64URL を選びデコードすると、ユーザー id や有効期限 exp(Unix タイムスタンプ変換ツールで読める Unix タイムスタンプ)などの JSON クレームが見えます。デコードは検証ではありません。JWT のペイロードは誰でも読めるため、改ざんされていないことを証明できるのはサーバー側の署名検証だけです。
容量節約のためにパディングを削った Base64 は、厳密なデコーダーではエラーになります。このツールは欠けた = 記号を補い、そのことを知らせます。多くのサーバーはクエリ文字列中の + を空白として扱うため、エンコードせずにリンクへ貼った Base64 値は壊れて届きます。URL コンポーネントとしてエンコードするか、Base64URL を使ってください。二重にエンコードされたテキストは %2520 や & のように見え、2回デコードする必要があります。
Base64 のデコードは空白と改行を無視するので、メールのように複数行に折り返された値も貼り付けたままデコードできます。Base64URL のデコードは + と / も受け付けますが、通常の Base64 は - と _ を受け付けないため、JWT の各部分には Base64URL を選んでください。16進数のデコードは空白、コロン、カンマ、ハイフン、0x 接頭辞を読み飛ばすので、48:65:6c:6c:6f も 0x48 0x65 も使えます。URL デコードは + を空白に変えるため、本来のプラス記号は %2B で渡す必要があります。HTML エンコードは & < > " ' の5文字をエスケープし、HTML デコードは や … など HTML5 のすべての名前付き文字参照と、ルピー記号の ₹ のような数値文字参照を解釈します。
ここでの URL エンコードはクエリパラメータ 1 つのような単一の値を対象にするため、予約文字はすべてエスケープされます。https://example.com/a b?x=1&y=2 は https%3A%2F%2Fexample.com%2Fa%20b%3Fx%3D1%26y%3D2 になります。リンクに入れる値だけをエンコードし、リンク全体はエンコードしないでください。ASCII 以外の文字は UTF-8 のバイトとしてエンコードされます。café ₹ は caf%C3%A9%20%E2%82%B9 になり、16 進数でも同じバイトが表示されます(é は c3 a9、₹ は e2 82 b9)。user:pass の Base64 は dXNlcjpwYXNz で、HTTP Basic Authorization ヘッダーが運ぶ値そのものです(RFC 7617)。そのため、このヘッダーを見た人は誰でもパスワードを読めます。
バイトは UTF-8 でしたが、エンコード前のどこかで Latin-1 や Windows-1252 として読まれています。ここでのデコードはバイトをそのまま表示するので、修正はそれを生成したシステム側で行う必要があります。
最大 200,000 文字までのテキストを貼り付けられます。画像などのバイナリファイルは、デコードしたバイトをダウンロードにせず16進数で表示します。
いいえ。Base64 は、プレーンテキストを前提とするシステムを通れるようにバイトの書き方を変えるだけです。誰でもデコードできるので、パスワードや秘密情報を隠す目的には絶対に使わないでください。
Base64URL は "+" と "/" を "-" と "_" に置き換え、通常は "=" パディングも省くため、URL やファイル名の中でも安全に使えます。JSON Web Token はこの形式を使います。
いいえ。同じリクエスト内で変換して返し、データベースやログに書き込むことはありません。
このツールは encodeURIComponent がそのまま残す ! ' ( ) と * もエスケープします。そのため it's (50%) off! は it%27s%20%2850%25%29%20off%21 になります。どちらの形式もデコードすると同じテキストになり、クエリの値の中でこれらの文字をエスケープしても常に安全です。スペースは + ではなく %20 になります。+ の形式は HTML フォームのエンコードに由来し、ここのデコーダーはどちらも読めます。
Linux や Mac では、echo -n 'Hello, World' | base64 で SGVsbG8sIFdvcmxk が得られ、echo 'SGVsbG8sIFdvcmxk' | base64 --decode でテキストに戻せます。-n を付けないと echo が改行を追加し、それも一緒にエンコードされて SGVsbG8sIFdvcmxkCg== になります。2 つのツールの結果が食い違う最も多い原因です。PowerShell では [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Hello, World')) でエンコード、[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8sIFdvcmxk')) でデコードします。このページは貼り付けた文字をそのまま UTF-8 でエンコードし、改行は追加しません。
カンマより後ろの部分だけを貼り付けます。data:image/png;base64,iVBORw0KGgo... なら iVBORw0KGgo... の部分です。data:image/png;base64, という接頭辞は Base64 ではないため、全体を貼ると拒否されます。Base64 と Decode を選びます。テキストでないバイトは画像として描画されず 16 進数 (hex) で表示されますが、ファイルの種類を見分けるにはそれで十分です。PNG は 89 50 4e 47、JPEG は ff d8 ff、.docx や .xlsx など ZIP ベースのファイル全体は 50 4b 03 04 で始まります。画像そのものを見るには、data URI 全体をブラウザのアドレスバーに貼り付けてください。入力の上限は 200,000 文字で、ファイルにして約 150,000 バイトです。
Base64 は 3 バイトごとに 4 文字で書き、最後のグループは 4 の倍数になるよう = で埋めます (RFC 4648)。そのため出力は入力バイト数の 4/3 を切り上げた長さになります。Hello, World は 12 バイトで、16 文字の SGVsbG8sIFdvcmxk になります。数えるのは文字数ではなく UTF-8 のバイト数です。café は 4 文字ですが 5 バイトで Y2Fmw6k= に、₹100 は 6 バイトで 4oK5MTAw になります。日本語の文字は UTF-8 で多くが 3 バイトなので、日本語テキストの Base64 は文字数よりかなり長くなります。メールの添付ファイルはさらに少し大きくなります。MIME が Base64 を 1 行最大 76 文字で改行するためです (RFC 2045)。このページはデコード時にその改行を無視します。パディングなしの Base64URL で減るのは = の分だけです。