URLエンコード / デコード
新着テキストをパーセントエンコード・デコードし、クエリ文字列も解析。すべてブラウザ上で。
Special characters reference
| Character | Encoded (%XX) | Notes |
|---|---|---|
| space | %20 | Also encoded as + in HTML form query strings |
| & | %26 | Query param separator — encode in values |
| = | %3D | Key-value separator in query strings |
| ? | %3F | Marks the start of a query string |
| # | %23 | Fragment identifier |
| / | %2F | Path separator |
| : | %3A | Protocol / port separator |
| @ | %40 | Username delimiter in URLs |
| + | %2B | Literal plus sign (+ in query string = space) |
| % | %25 | Percent itself — encode to avoid ambiguity |
| € | %E2%82%AC | UTF-8 multi-byte (3 bytes) |
| © | %C2%A9 | UTF-8 multi-byte (2 bytes) |
Per-language code snippets
Copy-ready snippets for JavaScript, Python, C#, PowerShell, Java and Go.
// Encode a single query value (recommended)
const encoded = encodeURIComponent('hello world & co.');
// → 'hello%20world%20%26%20co.'
// Decode
const decoded = decodeURIComponent('hello%20world%20%26%20co.');
// → 'hello world & co.'
// Encode a full URL (leaves : / ? & # intact)
const safeUrl = encodeURI('https://example.com/search?q=hello world');
// → 'https://example.com/search?q=hello%20world' from urllib.parse import quote, unquote, urlencode
# Encode a single value (%20 for spaces)
encoded = quote('hello world & co.')
# → 'hello%20world%20%26%20co.'
# Decode
decoded = unquote('hello%20world%20%26%20co.')
# → 'hello world & co.'
# Encode a query dict (uses + for spaces — form encoding)
qs = urlencode({'q': 'hello world', 'page': '2'})
# → 'q=hello+world&page=2'
# quote_plus encodes spaces as + (match HTML form encoding)
plus = quote_plus('hello world')
# → 'hello+world' // Encode a single value (spaces → %20)
string encoded = Uri.EscapeDataString("hello world & co.");
// → "hello%20world%20%26%20co."
// Decode
string decoded = Uri.UnescapeDataString("hello%20world%20%26%20co.");
// → "hello world & co."
// Older System.Web API (spaces → +, form encoding):
// HttpUtility.UrlEncode("hello world") → "hello+world" # .NET method — works in PS 5+ and PowerShell Core
$encoded = [Uri]::EscapeDataString('hello world & co.')
# → 'hello%20world%20%26%20co.'
$decoded = [Uri]::UnescapeDataString('hello%20world%20%26%20co.')
# → 'hello world & co.'
# Alternate via System.Web (Desktop PS only):
Add-Type -AssemblyName System.Web
$enc2 = [System.Web.HttpUtility]::UrlEncode('hello world')
# → 'hello+world' import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// Encode (URLEncoder uses + for spaces — form encoding)
String encoded = URLEncoder.encode("hello world & co.", StandardCharsets.UTF_8);
// → "hello+world+%26+co."
// Decode
String decoded = URLDecoder.decode("hello+world+%26+co.", StandardCharsets.UTF_8);
// → "hello world & co." import "net/url"
// QueryEscape: spaces become +
encoded := url.QueryEscape("hello world & co.")
// → "hello+world+%26+co."
decoded, err := url.QueryUnescape("hello+world+%26+co.")
// → "hello world & co.", nil
// PathEscape: spaces become %20
pathSafe := url.PathEscape("hello world & co.")
// → "hello%20world%20&%20co." Runs entirely in your browser. Nothing is uploaded.
無料オンライン URL エンコーダー・デコーダー
この URL エンコーダー・デコーダーは、テキストをパーセントエンコード形式に変換——またはその逆——をブラウザ上で直接行います。テキストを貼り付け、エンコードまたはデコードを選択し、コンポーネントまたは完全 URI ルールを選ぶと、結果がリアルタイムで更新されます。何もアップロードされません。すべての処理は、あなたのコードが使うものと同じブラウザ内蔵 JavaScript 関数を使ってブラウザ内で完全に完結します。
パーセントエンコーディングは Web 開発において避けられないものです。スペース、アンパサンド、等号、非 ASCII 文字はすべて、URL に安全に含めるためエスケープが必要です。API リクエストの構築、トラッキングリンクのデバッグ、サーバーログの確認など、あらゆるケースでこのツールがマルチバイト UTF-8 文字、不正なシーケンス、+ と %20 のスペース表記の違いを含めた边界ケースをすべて処理します。
encodeURIComponent と encodeURI——どちらのルールを使うべき?
encodeURIComponent は、個別のクエリ値、パスセグメント、または URL に挿入する文字列に適した選択です。?、&、=、/、#、: など、ほぼすべての特殊文字をエンコードするため、値が URL 構造を壊す心配がありません。例:'hello world & page=2' は 'hello%20world%20%26%20page%3D2' になります。
encodeURI は、完全な URL を壊さずにエンコードするために設計されています。構造文字(: / ? # &)はそのままにして URL の動作を維持しながら、スペースや非 ASCII 文字をエンコードします。迷ったときは、値として挿入するものにはコンポーネントルールを使うのが安全です——ほぼすべての Web フレームワークにおける標準的な選択です。
スペースは %20 と + どちら?——フォームエンコーディングの違い
URL におけるスペースの有効なエンコード方法は2つあります。URL パス(? より前の部分)では、RFC 3986 により %20 が必要です。HTML フォームのクエリ文字列では、古い application/x-www-form-urlencoded 形式が歴史的な簡潔さのためスペースを + でエンコードします——GET でフォームを送信する際、ブラウザは今もこの形式を使います。
どちらも「スペース」を意味しますが、それぞれのコンテキストでのみ有効です。URL パスの + はリテラルのプラス記号、クエリ文字列の + はスペースです。クエリ値のリテラルプラスは %2B としてエンコードしなければ誤って解釈されます。デコードモードの+ をスペースとして扱うトグルは、decodeURIComponent 実行前に + をスペースに置換することでフォームエンコードされた入力に対応します。
CyberChef や他の URL エンコードツールとの比較
CyberChef(GCHQ 製)は強力ですが、「レシピ」パイプラインの概念で設計されており、複数の操作を連結するものです。URL エンコード・デコードのみの用途でも、操作を検索してレシピにドラッグし、入力を処理するという手順が必要です。複雑な変換には優れていますが、素早いエンコード・デコードには手間がかかりすぎます。
urldecoder.org などの他のオンラインツールはシンプルですが、広告が表示され、操作のたびにページ全体の再読み込みが必要で、言語別のコードスニペットもありません。このツールはキーを押すたびに即座に結果を更新し、コンポーネントと完全 URI の両ルールに対応し、よく使う文字のエンコード参照表を含み、JavaScript、Python、C#、PowerShell、Java、Go のコピー可能なコードを表示します——すべてアップロードなしで。
特殊文字クイックリファレンス
Web 開発で最もよくエンコードされる文字:スペース → %20(クエリ文字列では +)、& → %26、= → %3D、? → %3F、# → %23、/ → %2F、: → %3A、@ → %40、+ → %2B、% → %25。マルチバイト UTF-8 文字は複数のシーケンスに展開されます:€ → %E2%82%AC、é → %C3%A9。
絶対にエンコードされない文字は非予約文字セットです:A–Z と a–z の英字、0–9 の数字、および4つの記号 - _ . ~。それ以外のすべて——すべての非 ASCII 文字を含む——は、標準準拠の URL においてパーセントエンコードが必要です。
JavaScript、Python、C#、PowerShell、Java での URL エンコード
主要な言語にはすべて組み込み関数があります。JavaScript / Node.js:encodeURIComponent(str) と decodeURIComponent(str)——インポート不要。Python:urllib.parse.quote(str) と unquote(str);完全なクエリ文字列には urlencode(dict)。C#:System 名前空間の Uri.EscapeDataString(str) と Uri.UnescapeDataString(str)。PowerShell:[Uri]::EscapeDataString(str)(PS 5+ および PowerShell Core 対応)。Java:URLEncoder.encode(str, StandardCharsets.UTF_8)。
言語別スニペットパネルには JavaScript、Python、C#、PowerShell、Java、Go のコピー可能なコードが含まれており、すぐにプロジェクトに正しい呼び出しを追加できます——各言語の標準ライブラリにおける + と %20 のスペース動作の説明付きです。
完全プライベート——オフラインでも動作
すべてのエンコード・デコード操作は、ブラウザ内蔵の encodeURIComponent、decodeURIComponent、encodeURI、decodeURI 関数のみを使用します。貼り付けた URL 内のドメイン名を含め、いかなるテキストもサーバーに送信・保存・ログ記録されることはありません。ページが一度読み込まれれば、オフラインにしても完全に動作し続けます。ブックマークしておけば、URL のエンコード・デコード・確認が必要なときにいつでも利用できます。
Frequently asked questions
URL エンコードとは何ですか?
URL エンコード(パーセントエンコーディングとも呼ばれます)は、URL で安全でない文字を % 記号と2桁の16進数に変換します。たとえば、スペースは %20、アンパサンドは %26、ハッシュは %23 になります。これにより、文字セットに関わらず、あらゆるブラウザ、HTTP ヘッダー、サーバーで URL が有効に機能します。
URL エンコードの %20 は何を意味しますか?
%20 はスペース文字のパーセントエンコード表現です。20 は ASCII 32(スペース)の16進数値です。よって URL 'hello%20world' は 'hello world' にデコードされます。HTML フォームのクエリ文字列では、スペースに %20 の代わりに + が使われることがあります——クエリ文字列では同じ意味ですが、URL パスでは異なります。
encodeURI と encodeURIComponent の違いは何ですか?
encodeURIComponent は個別のクエリ値やパスセグメント向けで、: / ? # & = を含むほぼすべてをエンコードし、値が URL 構造を壊さないようにします。encodeURI は完全な URL 向けで、: / ? & # などの構造文字はそのままにして URL を機能させ続けます。原則として、リンクに挿入する個別の値には常に encodeURIComponent を使いましょう。
JavaScript で URL エンコードするにはどうすればいいですか?
個別の値には encodeURIComponent() を使います:encodeURIComponent('hello world & co.') は 'hello%20world%20%26%20co.' を返します。逆変換には decodeURIComponent()。完全な URL には encodeURI() / decodeURI()——構造文字をスキップします。どちらもすべてのブラウザと Node.js に組み込まれており、インポート不要です。
日本語の文字を URL エンコードするとどうなりますか?
日本語などの非 ASCII 文字は UTF-8 で複数の %XX シーケンスにエンコードされます。たとえば「日本語」という文字列は UTF-8 で各文字が3バイトになるため、URL エンコードすると %E6%97%A5%E6%9C%AC%E8%AA%9E になります。encodeURIComponent() が自動的にこの変換を処理するので、元の文字列をそのまま渡すだけで大丈夫です。
スペースが %20 のときと + のときがあるのはなぜですか?
URL パス(? より前)では RFC 3986 により %20 が必要です。クエリ文字列では、HTML フォームが使う古い application/x-www-form-urlencoded 形式が歴史的な簡潔さからスペースを + でエンコードします。どちらも「スペース」を意味しますが、各コンテキストでのみ有効です——クエリ値のリテラル + は %2B とエンコードしなければスペースとして誤解されます。
オンラインでエンコード・デコードしても安全ですか?
はい——このツールは100%ローカルです。すべての操作はブラウザ内蔵の JavaScript 関数を使ってブラウザ内で実行されます。テキストはいかなるサーバーにも送信・保存・ログ記録されません。ページ読み込み後はオフラインでも動作します。API キー、認証情報、トークンをエンコードする際は特に重要なポイントです。