URLデコーダー

パーセントエンコードされたURLをデコード

サンプルを試す

エンコード済みURL / テキスト

デコード済み

ローカルで実行 · シークレットの貼り付けも安全
デコード出力...
こちらもどうぞ:URLエンコーダー

URLデコードとは?

URLデコード(パーセントデコード)はURLエンコードの逆処理です。パーセントエンコードされたシーケンスを元の文字に変換します。パーセント記号の後に2桁の16進数(%XX)が続く箇所はそれぞれ、XXが示すバイトに置き換えられます。連続してエンコードされた複数のバイトは、元のUTF-8文字を再構築するために結合されます。

URLデコードは、API、Webスクレイピング、ログ解析、認証フローを扱う開発者にとって日常的な作業です。エンコードされたURLはコンピュータには読めますが人間には不透明で、デコードすることで実際のパス、検索クエリ、リダイレクト先、パラメータ値が即座に明らかになります。

このツールを使う理由

パーセントエンコードされたURLやクエリ文字列をすばやく解読できます。ブラウザのコンソール不要、サーバーへの送信もありません。

即時デコード
エンコードされたURLやパラメータを貼り付けると、すぐに人間が読める形式で表示されます。APIリクエストやログファイルのデバッグに最適です。
🛡️
エラー回復
decodeURIComponentで失敗する旧式のLatin-1パーセントエンコード文字を含む入力に対しては、自動的にレガシーのunescape()にフォールバックします。
🔒
クライアントサイドのみ
すべてのデコードはブラウザ内でローカルに実行されます。トークン、パスワード、プライベートなクエリパラメータがデバイスの外に出ることはありません。
🔁
完全なURL対応
完全なURLと個別のパラメータ値の両方をデコードできます。標準の%20スペースも処理しつつ、+記号はリテラルのプラス文字として保持します。

このオンライン URL デコーダーの使い方

アカウント不要、インストール不要。パーセントエンコードされた文字列を入力フィールドに貼り付けると、デコードされた結果が即座に表示されます。すべてブラウザ内で動作します——データがデバイスの外に出ることはありません。

  1. 1
    エンコードされた URL または文字列を貼り付ける
    パーセントエンコードされた文字列をコピーして入力フィールドに貼り付けてください——ブラウザのアドレスバーの URL、サーバーログのクエリパラメータ、API レスポンス、またはリダイレクト先など何でも構いません。
  2. 2
    自動フォーマット検出
    デコーダーは %XX パーセントエンコーディングと + をスペースとして扱う形式(application/x-www-form-urlencoded)の両方を自動的に処理します。エンコード形式を手動で指定する必要はありません。
  3. 3
    デコードされた出力を確認する
    人間が読める形式のテキストが即座に表示されます。入力にネストされたエンコーディング(二重エンコードされた文字列)が含まれていた場合、デコーダーは一層ずつ解決します。不正な %XX シーケンスに対してはエラーが表示されます。
  4. 4
    コピーまたは再エンコードする
    コピーをクリックしてデコードされた文字列を取得します。別の設定で再エンコードが必要ですか?ワンクリックで URL エンコーダーツールに切り替えられます。

デコードの仕組み

デコーダーは入力をスキャンして%シーケンスを検出し、2桁の16進数グループをバイト値に変換し、連続するバイトシーケンスをまとめて、最終的なUnicode文字を生成するためにUTF-8として解釈します。

入力:https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world
%3A:  %2F/  %3F?  %3D=  %20space
出力:https://example.com/search?q=hello world

パーセントエンコード文字リファレンス

よく見かけるパーセントエンコードシーケンスのクイックリファレンスです:

エンコード形式文字見かける場面
%20spacepath segments, query values
%2B+literal plus (not a space in query)
%2F/slash inside a path component
%3F?literal question mark in a value
%23#literal hash in a value
%26&literal ampersand in a value
%3D=literal equals sign in a value
%40@at sign in username / password
%3A:colon inside a path segment
%25%literal percent sign
%2C,comma in path or query
%5B[opening bracket
%5D]closing bracket
%7B{curly brace in template literals
%7D}curly brace in template literals

よくある使用例

APIリクエストのデバッグ
ブラウザのDevToolsネットワークログからURLをコピーしてデコードし、実際のクエリパラメータ値を確認します。自動化ツールやライブラリがパラメータをパーセントエンコードしている場合に特に便利です。
ログファイルの読み取り
WebサーバーのアクセスログやアプリケーションログはURLをエンコード形式で保存します。デコードして実際のリクエストパス、検索語句、パラメータ値を確認します。
リダイレクトの調査
OAuthコールバック、SSOリダイレクト、リンクトラッキングURLには大量にエンコードされたredirect_uriやnextパラメータが含まれることがよくあります。URLをデコードして意図された遷移先を確認します。
Webhookペイロードの解析
application/x-www-form-urlencodedとして送信されるWebhookボディ(Stripe、Twilio、GitHub)はパーセントエンコードされた文字列として届きます。デコードして実際のフィールド値を読み取ります。
検索クエリの抽出
アナリティクスURLやRefererヘッダーにはq=パラメータにパーセントエンコードされたユーザーの元の検索クエリが含まれています。デコードして実際の検索語句を表示または分析します。
URLのリバースエンジニアリング
サードパーティAPIとの統合やスクレイピングの際、遭遇するURLにはエンコードされたパスセグメントやパラメータが含まれることがよくあります。デコードしてURL構造を理解し、リクエストを再現します。

よくある落とし穴

パーセントエンコードされた文字列をデコードする際によくある間違いを紹介します:

+と%20の混同
application/x-www-form-urlencoded データ(HTMLフォームの送信)では+はスペースを表します。しかし生のURLパスやencodeURIComponentでエンコードされた値では、+はリテラルのプラス記号です。decodeURIComponentは+をスペースに変換しません。フォームデータにはURLSearchParamsかunquote_plusを使用してください。
二重エンコードされた文字列
文字列が2回エンコードされている場合、1回のデコードではパーセント記号が残ります:%2520はスペースではなく%20にデコードされます。元の値を得るには2回目のデコードが必要です。ログ、プロキシ、既にエンコードされたデータを再エンコードするミドルウェアに注意してください。
不正なパーセントシーケンス
単独の%や16進数以外の文字が続く%(例:%GGや% 2)は無効であり、URIErrorをスローします。常に入力を検証するか、デコードをtry/catchで囲んでください。
エンコード不一致(Latin-1とUTF-8)
旧システム(PHPのurlencode、クラシックASP)は文字をLatin-1バイトとしてエンコードしていました。Latin-1でエンコードされた文字列はUTF-8デコーダーで正しくデコードできない場合があります。文字化けが発生した場合は、レガシーのunescape()を試すか、元のエンコーディングを確認してください。

コード例

主要な言語・環境でURL文字列をデコードする方法:

JavaScript (browser / Node.js)
// Decode a percent-encoded component
decodeURIComponent('hello%20world%20%26%20more') // → "hello world & more"

// Decode a full URL (leaves structure characters encoded)
decodeURI('https://example.com/path?q=hello%20world') // → "https://example.com/path?q=hello world"

// Parse a query string (handles + as space automatically)
const params = new URLSearchParams('q=hello+world&lang=en')
params.get('q') // → "hello world"
Python
from urllib.parse import unquote, unquote_plus, parse_qs

# Decode percent-encoded string
unquote('hello%20world%20%26%20more')   # → 'hello world & more'

# Decode form-encoded string (+ → space)
unquote_plus('hello+world%21')          # → 'hello world!'

# Parse full query string
parse_qs('q=hello%20world&lang=en')     # → {'q': ['hello world'], 'lang': ['en']}
Node.js (URL API)
const url = new URL('https://example.com/search?q=hello%20world%20%26%20more')
url.searchParams.get('q')  // → "hello world & more"
url.pathname               // → "/search"
CLI (bash)
# Decode with Python one-liner
python3 -c "from urllib.parse import unquote; print(unquote('hello%20world'))"

# Decode with Node.js
node -e "console.log(decodeURIComponent('hello%20world%20%26'))"

URL デコーダー vs. 代替手段

パーセントエンコードされた文字列をデコードできるツールは複数ありますが、明確さ、プライバシー、利便性の点でそれぞれ異なります。

このツール
ブラウザベースで即時、プライベート。%XX エンコーディング、+ をスペース、Unicode、不正なシーケンスを処理します。データはどのサーバーにも送信されません。
ブラウザのアドレスバー
ブラウザは表示のために URL をデコードしますが、常に完全ではありません——一部のエンコードされた文字がアドレスバーに残ることがあります。個別のパラメータ値を検査するのには向いていません。
DevTools / curl -v
ブラウザの DevTools と curl は、ネットワークリクエストで生の URL とデコードされた URL を表示します。デバッグに役立ちますが、ツールを切り替えて、どこを見ればよいかを知る必要があります。

よくある質問

decodeURIComponentとdecodeURIの違いは何ですか?
decodeURIComponentは予約文字(%2F → /、%3F → ?など)を含むすべてのパーセントエンコードシーケンスをデコードします。decodeURIはURLで特別な意味を持つ文字を生成しないシーケンスのみをデコードし、%2F、%3F、%23などの構造的な文字はエンコードされたまま保持します。パラメータ値にはdecodeURIComponentを使用し、完全なURLを持ちその構造を維持したい場合のみdecodeURIを使用してください。
URIError: malformed URIが表示される理由は?
decodeURIComponentのこのエラーは、入力に2つの有効な16進数が続かない%が含まれている場合、またはマルチバイトUTF-8シーケンスが不完全な場合(例:後続の%82%ACがない%E2)に発生します。デコード前に孤立したパーセント記号を取り除くかエスケープしてください。
デコードで+はスペースとして扱われますか?
いいえ — decodeURIComponentは+をスペースではなくリテラルのプラス記号として扱います。+ → スペースの変換はapplication/x-www-form-urlencodedデータ(HTMLフォームの送信)にのみ適用されます。フォームエンコードされたデータをデコードするには、URLSearchParams(ブラウザ/Node)またはurllib.parse.unquote_plus(Python)を使用してください。
URLデコードをクライアントサイドで行うのは安全ですか?
はい — URLデコードはネットワークリクエストを伴わない純粋な変換処理です。現代のすべてのブラウザはdecodeURIComponentとdecodeURIをネイティブ関数として搭載しています。このツールはデコードを完全にブラウザ内で実行し、データはどこにも送信されません。
複数回エンコードされたURLをデコードするには?
出力が安定する(これ以上%シーケンスが解決されなくなる)まで複数回デコードしてください。これは既にエンコードされたURLが別のエンコーダーを通過した際に発生します。デコードのたびにエンコードの層が1つ除去されます。
%XXは何を表しますか?
%の後の2文字は1バイト値(00–FF)を表す16進数です。ASCII文字の場合、このバイトはその文字のASCIIコードです:%41 = 65 = 'A'。非ASCII文字の場合、複数の%XXシーケンスでその文字のUTF-8バイトシーケンスを表します:ユーロ記号€は%E2%82%AC(3バイト:0xE2、0x82、0xAC)です。
ブラウザは HTML フォームを送信する際にどのエンコードを使用しますか?
method=GET の HTML フォームは application/x-www-form-urlencoded エンコードを使用してフィールドを URL に追加します。スペースは %20 ではなく + に置換され、その他の特殊文字はパーセントエンコードされます。URL Decode ツールの「+ → スペース」オプションがこの形式を処理します。method=POST で enctype=application/x-www-form-urlencoded のフォームはリクエストボディで同じ方式を使用します。
デコードのサイズ制限はありますか?
サーバー側の制限はありません——ツールは完全にブラウザ内で動作します。実際の制限はブラウザのメモリに依存します。非常に長いエンコードされた文字列やバッチ処理には、スクリプト内で decodeURIComponent を使用してください。