# エンコード / デコード

URL: https://discuvr.org/encode-decode/?hl=ja
Last updated: 2026-11-07
MCP tool: `encode_decode_text`

Base64、Base64URL、URL パーセントエンコード、HTML エンティティ、16進数を入力しながらエンコード・デコード。UTF-8 完全対応、パディング欠落も表示、何も保存しません。

ログの中のトークン、リダイレクトのクエリ文字列、&amp; だらけのメール本文など、エンコードされたテキストは仕事のあちこちに現れます。ここに貼り付けて形式を選べば、入力しながらエンコードまたはデコードの結果を確認できます。

## 機能

- Base64、Base64URL(JWT 形式、パディングなし)、URL パーセントエンコード、HTML エンティティ、16進数に対応。
- UTF-8 完全対応:日本語、ヒンディー語、中国語、絵文字も往復変換で崩れません。
- 欠けている Base64 パディングは補ったうえで通知し、黙って修正することはありません。
- テキストでないバイトは文字化けではなく16進数で表示します。
- ワンクリックで出力を入力に戻し、変換方向を反転できます。

## 仕組み

1. 形式と、エンコードかデコードかを選びます。
2. テキストを貼り付けます。結果は入力に合わせて更新されます。
3. 出力をコピーするか、次の入力として使います。

## 実例:JWT を読む

JSON Web Token は、ヘッダー、ペイロード、署名の3つの Base64URL 部分をドットでつないだものです。真ん中の部分を貼り付けて Base64URL を選びデコードすると、ユーザー id や有効期限 exp(Unix タイムスタンプ変換ツールで読める Unix タイムスタンプ)などの JSON クレームが見えます。デコードは検証ではありません。JWT のペイロードは誰でも読めるため、改ざんされていないことを証明できるのはサーバー側の署名検証だけです。

## 仕事でつまずきやすいケース

容量節約のためにパディングを削った Base64 は、厳密なデコーダーではエラーになります。このツールは欠けた = 記号を補い、そのことを知らせます。多くのサーバーはクエリ文字列中の + を空白として扱うため、エンコードせずにリンクへ貼った Base64 値は壊れて届きます。URL コンポーネントとしてエンコードするか、Base64URL を使ってください。二重にエンコードされたテキストは %2520 や &amp;amp; のように見え、2回デコードする必要があります。

## 各デコーダーが受け付ける入力

Base64 のデコードは空白と改行を無視するので、メールのように複数行に折り返された値も貼り付けたままデコードできます。Base64URL のデコードは + と / も受け付けますが、通常の Base64 は - と _ を受け付けないため、JWT の各部分には Base64URL を選んでください。16進数のデコードは空白、コロン、カンマ、ハイフン、0x 接頭辞を読み飛ばすので、48:65:6c:6c:6f も 0x48 0x65 も使えます。URL デコードは + を空白に変えるため、本来のプラス記号は %2B で渡す必要があります。HTML エンコードは & < > " ' の5文字をエスケープし、HTML デコードは &nbsp; や &hellip; など HTML5 のすべての名前付き文字参照と、ルピー記号の &#8377; のような数値文字参照を解釈します。

## 実例: 各形式が出力するもの

ここでの 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 は暗号化ですか?**

いいえ。Base64 は、プレーンテキストを前提とするシステムを通れるようにバイトの書き方を変えるだけです。誰でもデコードできるので、パスワードや秘密情報を隠す目的には絶対に使わないでください。

**Base64 と Base64URL の違いは何ですか?**

Base64URL は "+" と "/" を "-" と "_" に置き換え、通常は "=" パディングも省くため、URL やファイル名の中でも安全に使えます。JSON Web Token はこの形式を使います。

**テキストは保存されますか?**

いいえ。同じリクエスト内で変換して返し、データベースやログに書き込むことはありません。

**URL エンコードの結果が JavaScript の encodeURIComponent と違うのはなぜですか?**

このツールは encodeURIComponent がそのまま残す ! ' ( ) と * もエスケープします。そのため it's (50%) off! は it%27s%20%2850%25%29%20off%21 になります。どちらの形式もデコードすると同じテキストになり、クエリの値の中でこれらの文字をエスケープしても常に安全です。スペースは + ではなく %20 になります。+ の形式は HTML フォームのエンコードに由来し、ここのデコーダーはどちらも読めます。

**コマンドラインで Base64 のエンコード・デコードをするには？**

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 でエンコードし、改行は追加しません。

**Base64 の画像や data URI をデコードするには？**

カンマより後ろの部分だけを貼り付けます。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 分の 1 長くなるのはなぜ？**

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 で減るのは = の分だけです。

## 開発者ツールのその他のツール

- [Unix タイムスタンプ変換](https://discuvr.org/timestamp-converter/?hl=ja)
- [システム構成図メーカー](https://discuvr.org/system-diagram/?hl=ja)
- [JSON フォーマッター](https://discuvr.org/json-formatter/?hl=ja)
- [Python Formatter](https://discuvr.org/python-formatter/?hl=ja)

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

- [パスワード生成ツール](https://discuvr.org/password-generator/?hl=ja)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
