URLエンコーダー
URLの特殊文字をエンコード
プレーンテキスト / URL
エンコード済み
URLエンコードとは?
URLエンコード(パーセントエンコーディングとも呼ばれます)は、Uniform Resource Identifier(URI)に情報を埋め込む際、RFC 3986 で許可された文字のみが最終的な文字列に現れるようにするエンコード方式です。非予約文字(A–Z、a–z、0–9、-、_、.、~)以外の文字はすべて、パーセント記号と、その文字の UTF-8 バイト値を表す2桁の16進数に置き換えられます。たとえば、スペースは %20 に、& は %26 になります。
パーセントエンコーディングが必要なのは、URL に含められる文字が限られた ASCII 文字集合のみだからです。URL にこの集合に含まれない文字(スペース、Unicode 文字、構造的な区切り文字ではなくリテラル値として使われる &、=、/ など)が含まれる場合、URL パーサーが誤解釈しないよう必ずエンコードする必要があります。これはクエリ文字列の値において特に重要で、エンコードされていない & や = はパラメーター構造を壊してしまいます。
このツールを使う理由
コードを書かずに、両モードでのテキストのエンコード結果をリアルタイムで並べて確認できます。エッジケースの検証も即座に行えます。
このオンライン URL エンコーダーの使い方
アカウント不要、インストール不要。入力フィールドにテキストを貼り付けるか入力すると、パーセントエンコードされた結果が即座に表示されます。すべてブラウザ内で動作します——データがデバイスの外に出ることはありません。
- 1テキストまたは URL を貼り付けるクエリパラメータの値、完全な URL、パスセグメント、JSON ペイロードなど、任意の文字列を入力してください。エンコーダーは RFC 3986 に従って 1 文字ずつ処理します。
- 2エンコードモードを選択するencodeURIComponent を選択すると、個々のパラメータ値をエンコードします(非予約文字以外をすべてエンコード)。encodeURI を選択すると、URL 全体をエンコードしつつ ://?#&= などの構造的文字を保持します。
- 3エンコードされた出力をコピーするパーセントエンコードされた文字列が即座に表示されます。コピーをクリックして結果を取得し、API コール、フォームアクション、または設定ファイルに直接貼り付けてください。
- 4必要に応じてデコードする間違えた場合や結果を確認したい場合は、URL デコーダーツールにワンクリックで切り替えてエンコードを元に戻せます。
どの文字がエンコードされるか?
RFC 3986 は URL の文字を2つのカテゴリに分類します:非予約文字(エンコードしない)と予約文字(特別な意味を持ち、コンテキストに応じてエンコードまたは保持)。以下の表は、2つの JavaScript 関数が主要な文字をどのように扱うかを示しています:
| 文字 | URL での意味 | encodeURIComponent | encodeURI |
|---|---|---|---|
| Space | word separator | %20 | %20 |
| + | plus sign | %2B | %2B |
| / | path separator | %2F | / (kept) |
| ? | query start | %3F | ? (kept) |
| # | fragment | %23 | # (kept) |
| & | param separator | %26 | & (kept) |
| = | param value | %3D | = (kept) |
| @ | auth separator | %40 | @ (kept) |
| : | scheme / port | %3A | : (kept) |
| % | percent literal | %25 | %25 |
| ~ | unreserved | ~ (kept) | ~ (kept) |
| -_.~ | unreserved set | kept as-is | kept as-is |
encodeURIComponent と encodeURI
JavaScript には動作が大きく異なる2つのエンコード関数があります。誤った方を選択することは、URL 処理で最もよく見られるバグの一つです:
主なユースケース
コード例
主要な言語と環境で文字列を URL エンコードする方法:
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"
// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"
// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spacesfrom urllib.parse import quote, urlencode, quote_plus
# Encode a path segment or query value
quote('hello world & more') # → 'hello%20world%20%26%20more'
# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world') # → 'hello+world'
# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'}) # → 'q=hello+world&lang=en'const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en# curl automatically percent-encodes --data fields
curl -G "https://example.com/search" --data-urlencode "q=hello world & more"
# Manual encoding with Python one-liner
python3 -c "from urllib.parse import quote; print(quote('hello world'))"URL エンコーダー vs. 代替手段
テキストをパーセントエンコードできるツールは複数ありますが、制御性、プライバシー、コンテキストの点でそれぞれ異なります。