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

URLデコード

パーセントエンコードされたURLやクエリ文字列を貼り付けると、入力中にデコード結果を表示します。日本語などのUTF-8文字もそのまま読めます。

入力
出力

URLエンコードされたテキストをデコード

URLで運べる文字は限られているため、それ以外はパーセントエンコードされます。スペース、アクセント記号、日本語などラテン文字以外の文字、そして&、=、?のようにURLで特別な意味を持つ文字です。ログファイル、リダイレクトのパラメーター、UTMタグ、APIのエラーにはこうしたシーケンスがあふれており、デコードするのが実際に何が送られたのかを確かめる一番の近道です。

このページは、入力と同時にデコードするよう設定したURLエンコード・デコードツールを開きます。処理はすべてブラウザー内で行われます。

図:「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 の形で書かれます。

よく見るエンコード済みシーケンス

エンコード後デコード後補足
%20または+スペース+がスペースを意味するのはフォームデータの場合だけ
%2F/パラメーター値の中のスラッシュ
%3F %3D %26? = &データとして使われたクエリの構文文字
%25%文字どおりのパーセント記号、または二重エンコードの兆候
%C3%A9é1文字をUTF-8の2バイトで表したもの
%E2%82%AC€UTF-8の3バイト

二重エンコードされたURL

URLを別のURLの中に入れるとき、例えばredirectやurlパラメーターとして渡すときは、2回エンコードされることがよくあります。あちこちに%25があるのが目印です。%252Fはエンコードされた%2Fで、それはエンコードされたスラッシュです。デコードしたら%25が残っていないか確認し、なくなるまでデコードを繰り返してください。

デコードに失敗する場合

このツールは、ブラウザーのdecodeURIComponentと同じルールを使います。100%のようにパーセント記号の後ろが2桁の16進数でない場合や、バイト列が有効なUTF-8にならない場合はエラーを表示します。後者は、テキストをLatin-1でエンコードしていた非常に古いシステムで起こります(éが%C3%A9ではなく%E9になる)。

コードでURLをデコードする

  • JavaScript:decodeURIComponent(s.replace(/\+/g, ' '))
  • Python:urllib.parse.unquote_plus(s)
  • PHP:urldecode($s)
  • Java:URLDecoder.decode(s, StandardCharsets.UTF_8)

URLのパラメーターを1つずつ調べるなら、まずクエリ文字列全体をデコードします。URLの中にあるBase64の値は末尾が%3Dになっていることが多いので、ここでデコードしてからBase64デコードを使ってください。

関連ガイド