URLエンコーダー

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 パーサーが誤解釈しないよう必ずエンコードする必要があります。これはクエリ文字列の値において特に重要で、エンコードされていない & や = はパラメーター構造を壊してしまいます。

このツールを使う理由

コードを書かずに、両モードでのテキストのエンコード結果をリアルタイムで並べて確認できます。エッジケースの検証も即座に行えます。

ライブプレビュー
入力に応じて出力がリアルタイムで更新されます。さまざまな入力を試して、どの文字がエンコードされ、どの文字が保持されるかをすぐに確認できます。
🔀
2つのモード
encodeURIComponent(値用)と encodeURI(完全な URL 用)の間でページを離れることなく切り替えられます。
🔒
クライアントサイドのみ
すべてのエンコードはブラウザーのローカルで実行されます。機密性の高いクエリパラメーターやトークンがサーバーに送信されることはありません。
📋
ワンクリックでコピー
ボタン一つでエンコードされた出力をクリップボードにコピーできます。コード、ターミナル、ブラウザーのアドレスバーにそのまま貼り付けられます。

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

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

  1. 1
    テキストまたは URL を貼り付ける
    クエリパラメータの値、完全な URL、パスセグメント、JSON ペイロードなど、任意の文字列を入力してください。エンコーダーは RFC 3986 に従って 1 文字ずつ処理します。
  2. 2
    エンコードモードを選択する
    encodeURIComponent を選択すると、個々のパラメータ値をエンコードします(非予約文字以外をすべてエンコード)。encodeURI を選択すると、URL 全体をエンコードしつつ ://?#&= などの構造的文字を保持します。
  3. 3
    エンコードされた出力をコピーする
    パーセントエンコードされた文字列が即座に表示されます。コピーをクリックして結果を取得し、API コール、フォームアクション、または設定ファイルに直接貼り付けてください。
  4. 4
    必要に応じてデコードする
    間違えた場合や結果を確認したい場合は、URL デコーダーツールにワンクリックで切り替えてエンコードを元に戻せます。

どの文字がエンコードされるか?

RFC 3986 は URL の文字を2つのカテゴリに分類します:非予約文字(エンコードしない)と予約文字(特別な意味を持ち、コンテキストに応じてエンコードまたは保持)。以下の表は、2つの JavaScript 関数が主要な文字をどのように扱うかを示しています:

文字URL での意味encodeURIComponentencodeURI
Spaceword 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 setkept as-iskept as-is

encodeURIComponent と encodeURI

JavaScript には動作が大きく異なる2つのエンコード関数があります。誤った方を選択することは、URL 処理で最もよく見られるバグの一つです:

encodeURIComponent()
非予約文字集合(A–Z a–z 0–9 - _ . ~)以外をすべてエンコードします。個々のクエリパラメーター値、パスセグメント、または URL に埋め込む任意の値をエンコードする際の正しい選択です。/、?、#、& およびその他すべての予約文字をエンコードします。
encodeURI()
予約文字(: / ? # [ ] @ ! $ & ' ( ) * + , ; =)をエンコードせずに残すことで、URL 全体の構造を維持します。保持したい構造を持つ完全な URL がある場合に限り使用し、その中の非 ASCII 文字または不正な文字のみをエンコードする必要があるときに適しています。

主なユースケース

クエリ文字列パラメーター
URL にパラメーターを追加する前に値をエンコードします:name=John Doe ではなく name=John%20Doe を使用します。エンコードされていないスペースや特殊文字は URL パーサーを壊し、予期しない結果を引き起こします。
API リクエストの構築
REST API は適切にエンコードされたクエリパラメーターを必要とします。encodeURIComponent で値をエンコードすることで、値に含まれる & や = などの文字による余分なパラメーターの注入を防ぎます。
フォームデータの送信
HTML フォームはデフォルトで application/x-www-form-urlencoded 形式でデータを送信します。パーセントエンコーディングを理解することで、ブラウザーが送信する内容とサーバーが受信する内容のデバッグに役立ちます。
特殊文字を含むパスセグメント
スペース、スラッシュ、または Unicode 文字を含むファイル名や識別子は、URL パスセグメントとして使用する際にパーセントエンコーディングが必要です:/files/my%20document.pdf。
OAuth と認証トークン
OAuth 1.0a や一部の認証プロトコルでは、厳格な正規化アルゴリズムに従ってパーセントエンコードされたパラメーター名と値からベース文字列を構築することが求められます。
ディープリンクと共有 URL
ユーザーコンテンツ(検索クエリ、フィルター状態、座標)を埋め込む共有 URL を生成する際は、リンク切れや URL 操作による XSS を防ぐためにすべての動的な値をエンコードします。

コード例

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

JavaScript (browser / Node.js)
// 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 spaces
Python
from 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'
Node.js (URL API)
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
CLI (curl / bash)
# 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. 代替手段

テキストをパーセントエンコードできるツールは複数ありますが、制御性、プライバシー、コンテキストの点でそれぞれ異なります。

このツール
ブラウザベースで即時、プライベート。encodeURIComponent と encodeURI の両モードに対応。データはどのサーバーにも送信されません。完全な Unicode 入力を処理できます。
ブラウザのアドレスバー
ブラウザは URL を貼り付けると自動的にエンコードしますが、部分的にしか行いません——可読性のために多くの特殊文字が保持されます。パラメータ値のエンコードには適していません。
URLSearchParams / urllib
JavaScript や Python で URL を構築するための正しいプログラム的アプローチ。素早い単発エンコードや、コードが生成する結果の検証にこのツールを使用してください。

よくある質問

スペースを表す %20 と + の違いは何ですか?
どちらもスペースを表しますが、使われるコンテキストが異なります。%20 はスペースの標準的なパーセントエンコード表現で、URL のどこでも有効です。+ は application/x-www-form-urlencoded 形式(HTML フォーム送信)においてのみスペースを表します。URL パスやクエリ値の中では、+ はスペースではなくリテラルのプラス記号です。最大限の互換性のために %20 を使用してください。
encodeURIComponent と encodeURI はどう使い分けますか?
個々の値(クエリパラメーター、パスセグメント、ハッシュフラグメント)には encodeURIComponent を使います。encodeURI は完全な URL があり、その構造を保持したい場合にのみ使います。よくある間違いはクエリ値に encodeURI を使うことで、& と = がエンコードされないままクエリ文字列が壊れてしまいます。
URL エンコードは Unicode 文字を扱えますか?
はい。非 ASCII 文字はまず UTF-8 バイト表現に変換され、各バイトがパーセントエンコードされます。たとえば、ユーロ記号 €(U+20AC)は %E2%82%AC(3つの UTF-8 バイト)にエンコードされます。encodeURIComponent と encodeURI はどちらも、すべての最新ブラウザーでこれを正しく処理します。
二重エンコードは問題になりますか?
はい。すでにエンコードされた文字列を再度エンコードすると、%20 は %2520 になります(% 自体が %25 にエンコードされるため)。常に生の値をエンコードし、既にエンコードされた値はエンコードしないようにしてください。確信が持てない場合は、まずデコードしてから再エンコードしてください。
URL で常に安全な文字はどれですか?
RFC 3986 が定義する非予約文字は常に安全でエンコードは不要です:大文字 A–Z、小文字 a–z、数字 0–9、ハイフン(-)、アンダースコア(_)、ピリオド(.)、チルダ(~)。それ以外の文字は、構造的な区切り文字としてではなく値として使われる場合、パーセントエンコードが必要です。
URL によって16進数が大文字(%2F)の場合と小文字(%2f)の場合があるのはなぜですか?
どちらも有効です。RFC 3986 はパーセントエンコードされたシーケンスが大文字・小文字を区別しないと規定しており、%2F と %2f は等価です。ただし、同じ RFC は一貫性のために大文字の16進数を使うことを推奨しています。ほとんどのブラウザーとライブラリーは大文字を生成します。
このツールは URL 全体をエンコードしますか、それともパラメータだけですか?
どちらも可能です。encodeURIComponent モードを使用すると、個々のクエリパラメータ値をエンコードします(最も一般的なユースケース)。encodeURI モードを使用すると、URL 全体をエンコードしながら ://、?、#、& などの構造的文字を保持します。
エンコードに長さ制限はありますか?
サーバー側の制限はありません——ツールは完全にブラウザ内で動作します。実際の制限はブラウザのメモリに依存します。非常に大きな入力やバッチ処理には、スクリプト内で encodeURIComponent を使用してください。