エンコーディング 🔒 ブラウザ内で動作 — データは送信されません

URLエンコーダー・デコーダー

URL、クエリ文字列、パラメータをパーセントエンコード・デコード。ブラウザ内で完結。

入力
出力

URLエンコード・デコードツール(パーセントエンコーディング)

URLで使える文字は限られています。空白、日本語、アンパサンド、値の中のスラッシュ、絵文字、アラビア文字といったそれ以外の文字は、リンクやクエリ文字列、フォーム送信の中を安全に通すためにパーセントエンコードする必要があります。この無料のURLエンコード・デコードツールは、その変換を双方向で即座に行い、サーバーへは何も送信しません。

テキストを貼り付けてエンコードを押せば送信可能な文字列になり、エンコード済みのURLを貼り付けてデコードを押せば読める形に戻ります。モード切り替えでencodeURIComponentとencodeURIを選べます。この選択こそが、リンクが正しく動くか静かに壊れるかを分けるポイントです。

図:「a b&c=é」を1文字ずつエンコードして「a%20b%26c%3D%C3%A9」にする流れ。文字UTF-8バイトエンコード後a61a␣20%20b62b&26%26c63c=3D%3DéC3 A9%C3%A9そのまま:英字・数字・- _ . ~%XX に変換
英字はそのまま残ります。スペースと予約文字の & と = は %20、%26、%3D になり、é はまずUTF-8の2バイト(C3 と A9)に分けられ、それぞれ %XX の形で書かれます。

URLエンコードとは

URLエンコード(パーセントエンコーディング)は、使えない文字をパーセント記号とその16進バイト値に置き換える仕組みです。空白は%20、スラッシュは%2F、疑問符は%3Fになります。ASCII以外の文字はまずUTF-8のバイト列に変換され、そのうえで1バイトずつエンコードされます。そのため日本語の1文字は通常3つのパーセント表記になり、絵文字では4つになることもあります。

encodeURIComponentとencodeURIの使い分け

状況モード理由
クエリパラメーターの値をエンコードするencodeURIComponent&・=・?・/・#を escape し、値が自分の枠から飛び出さないようにする
スラッグなどパス要素をエンコードするencodeURIComponent値の中のスラッシュが新しい階層を作ってしまうのを防ぐ
手元にある完全なURLを整えるencodeURI構造を表す文字を残すため、アドレスがURLとして機能し続ける
別のURLの中に戻り先URLを渡すencodeURIComponent内側のURLは構造ではなく値だから

URLをエンコード・デコードする手順

  1. テキスト、パラメーターの値、または完全なURLを入力欄に貼り付けます。
  2. 単独の値ならencodeURIComponent、アドレス全体ならencodeURIを選びます。
  3. エンコードはエンコード、元に戻すときはデコードをクリックします。
  4. 出力をそのままコードやブラウザーのアドレスバー、APIクライアントに貼り付けます。

よく見かける変換結果

  • %20 - 空白。古いフォーム送信では+が同じ役割を果たします。
  • %2F - スラッシュ。パスではなく値の一部であるときにエンコードします。
  • %3Fと%26 - 疑問符とアンパサンド。クエリパラメーターの区切り文字です。
  • %3D - 等号。パラメーター名と値を分けます。
  • %23 - シャープ。そのままだとフラグメント識別子の開始と解釈されます。
  • %2B - プラス記号。エンコードしないと空白として解釈されることがあります。

URLエンコードが必要になる場面

  • ユーザー入力がクエリ文字列に入る検索・絞り込み・ページングのリンクを組み立てるとき。
  • OAuthプロバイダーや決済ゲートウェイにredirect_uriとして戻り先URLを渡すとき。
  • 空白や記号を含むUTMキャンペーンパラメーターを追加するとき。
  • メールに届いた長いトラッキングリンクをデコードして、実際の遷移先を確認するとき。
  • パラメーターにJSON・タイムスタンプ・署名が含まれるAPI呼び出しをデバッグするとき。
  • 日本語やペルシャ語、キリル文字のスラッグがコピー&ペーストで壊れないようにするとき。

リンクを壊すよくある間違い

  • 二重エンコード。エンコード済みの文字列を再度かけると%20が%2520になります。まずデコードし、そのうえで1回だけエンコードします。
  • URL全体をencodeURIComponentにかける。://やスラッシュまでエスケープされ、URLとして成立しなくなります。
  • +と%20の混同。クエリ文字列ではプラスが空白を意味することがありますが、パスの中では文字どおりのプラスです。
  • UTF-8を前提にしない。ISO-8859-1で符号化された古いページは、現代のデコーダーでは戻せないパーセント表記を生みます。
  • デコード結果を無条件に信用する。デコードはサニタイズではありません。クエリやHTMLで使う前に必ず検証してください。

処理はすべてブラウザー内で完結します

このツールはブラウザー自身のJavaScript関数を使うため、アップロードも保存もログ記録もありません。署名付きURL、セッションID、顧客情報を含むパラメーターは、あるべき場所であるあなたの端末の中にとどまります。

JavaScript・Python・PHP・Java・C#でのURLエンコード

言語値をエンコード注意点
JavaScriptencodeURIComponent(value)URL全体には encodeURI
Pythonurllib.parse.quote(value, safe='')quote_plus はスペースを + にする
PHPrawurlencode($value)urlencode はスペースに + を使う
JavaURLEncoder.encode(value, "UTF-8")スペースが + になる。パス内では %20 に置き換える
C# / .NETUri.EscapeDataString(value)HttpUtility.UrlEncode は + を使う
PowerShell[uri]::EscapeDataString($value).NETと同じルール

関連ツール

URLとペイロードはセットで扱うことが多いものです。埋め込みバイナリはBase64エンコーダーで復元し、コールバックURLのトークンはJWTデコーダーで確認し、APIレスポンスはJSON整形ツールで読みやすくし、パターンは正規表現テスターで検証できます。

関連ガイド