URLエンコード / デコード(無料・登録不要)
REST APIのクエリパラメータに日本語や記号を含める場合は「全部エンコード」モードを使用。
例: 東京 → %E6%9D%B1%E4%BA%AC
https://api.example.com/search?q=東京 は送信前に必ずエンコードしてください。
Xへの投稿URLを作成する場合、共有テキストにURLを含めるとき「全部エンコード」で変換が必要。
例: https://twitter.com/intent/tweet?text={エンコードしたテキスト}&url={エンコードしたURL}
ログイン後のリダイレクト先URLをパラメータとして渡す場合、/login?returnUrl=/dashboard?tab=top のようにURLの中にURLを含める場合は「全部エンコード」が必要。
「安全な文字のみ」モードだと ? や = がエンコードされず二重解釈が起きる可能性があります。
主要URLエンコードツールとの機能比較(2026年5月調査)
| 機能 | tool-box.jp (当ツール) |
lab.syncer.jp | tech-unlimited | tagindex | chameleons |
|---|---|---|---|---|---|
| リアルタイム変換 | ✅ | ❌ | ❌ | ❌ | ✅ |
| 双方向タブ切替 | ✅ | ❌ | ❌ | ❌ | ❌ |
| エンコードモード3種 | ✅ | ❌ | ❌ | 部分 | ❌ |
| 入れ替えボタン | ✅ | ❌ | ❌ | ❌ | ❌ |
| URLパラメータ分解 | ✅ | ❌ | ❌ | ❌ | ❌ |
| バイト数表示 | ✅ | ❌ | ❌ | ❌ | ❌ |
| 文字コード選択 | UTF-8 | UTF-8 | UTF-8 | 4種 | UTF-8 |
| RFC 3986解説 | ✅ | ❌ | ❌ | ❌ | ❌ |
| FAQ(問数) | 8問 | なし | なし | なし | なし |
パーセントエンコーディングとは
URLで使用できない文字を %XX(XXは16進数の文字コード)形式に変換する仕組みです。RFC 3986で定義されています。
RFC 3986 予約文字(そのままURLに使える文字)
:/?#[]@
!$&'()*+,;=
A-Za-z0-9-_.~
よく使う文字のエンコード結果
| 元の文字 | エンコード後 | 用途・意味 |
|---|---|---|
| スペース | %20(または +) | クエリパラメータ内のスペース(+は古い慣習) |
! | %21 | encodeURIComponentで変換 |
" | %22 | ダブルクォート |
# | %23 | フラグメント識別子 |
& | %26 | パラメータ区切り |
= | %3D | キー/値区切り |
? | %3F | クエリ開始 |
/ | %2F | パス区切り |
| あ | %E3%81%82 | UTF-8の3バイト→3つの%XX |
| 東 | %E6%9D%B1 | UTF-8の3バイト→3つの%XX |
JavaScriptには2種類のURLエンコード関数があります。用途を間違えるとバグの原因になります。
encodeURI()
URL全体に使う
エンコードしない文字: A-Z a-z 0-9 - _ . ! ~ * ' ( ) に加え、URLの構造文字 ; , / ? : @ & = + $ # もエンコードしない。
使いどころ: URL全体を渡したいとき。
例: encodeURI('https://example.com/検索?q=東京')
https://example.com/検索?q=東京&page=1https://example.com/%E6%A4%9C%E7%B4%A2?q=%E6%9D%B1%E4%BA%AC&page=1⚠️ ? & = はエンコードされないため、URLをパラメータ値として渡す場合は不適切。
encodeURIComponent()
パラメータ値に使う
エンコードしない文字: A-Z a-z 0-9 - _ . ! ~ * ' ( ) のみ。URLの構造文字も全てエンコードする。
使いどころ: クエリパラメータの「値」の部分に使う。
例: '?url=' + encodeURIComponent('https://example.com/page?id=1')
https://example.com/page?id=1https%3A%2F%2Fexample.com%2Fpage%3Fid%3D1✅ ? & = / も全てエンコードされるため、URLをパラメータ値として渡す場合はこちらが正解。
「URLのパラメータの値を作るなら
encodeURIComponent」「URL全体をそのまま渡すなら
encodeURI」
GETリクエストで日本語の検索ワードをパラメータに含める場合は encodeURIComponent が必須。
❌ /api/search?q=東京 タワー(スペースがそのまま)
✅ /api/search?q=%E6%9D%B1%E4%BA%AC%20%E3%82%BF%E3%83%AF%E3%83%BC
HTMLのmailtoリンクで件名・本文に日本語を含める場合もエンコードが必要。
例: <a href="mailto:info@example.com?subject=%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B">
Xへの投稿URLを自動生成する場合、テキストとURLを別々に encodeURIComponent でエンコードして連結する。
https://twitter.com/intent/tweet?text={encodeURIComponent(text)}&url={encodeURIComponent(url)}
アクセスログやWebhookで受け取った %E3%83%86%E3%82%B9%E3%83%88 などのURLエンコード済み文字列を「URL→テキスト」タブでデコードして元の文字列を確認できます。
長いURLのクエリパラメータ(?key1=val1&key2=val2&...)を「URLパラメータ分解」機能に貼り付けると、キーと値の対応を表形式で一覧確認できます。APIデバッグに便利です。
- Q URLエンコードとパーセントエンコーディングは同じですか?
- A ほぼ同じ意味で使われます。パーセントエンコーディングはRFC 3986で定義された正式名称で、URLで使用できない文字を
%XX(XXは16進数)形式に変換する方式のことです。URLエンコードは一般的な呼称で、同じ処理を指します。 - Q 日本語はURLエンコードすると何バイトになりますか?
- A UTF-8で日本語の1文字は通常3バイトになります。バイトごとに
%XXの3文字に変換されるため、日本語1文字は%XX%XX%XXの9文字になります。例: 「東」→%E6%9D%B1(3バイト×3文字=9文字)。絵文字は4バイト(12文字)になる場合があります。 - Q スペースは「%20」と「+」どちらが正しいですか?
- A 用途によって異なります。URLのパス部分では
%20が正しい(RFC 3986準拠)。HTMLフォームのクエリパラメータ(application/x-www-form-urlencoded)では+が使われます。モダンなAPIでは%20を推奨。このツールは%20を使用します。 - Q encodeURIとencodeURIComponentはどちらを使うべきですか?
- A URLのパラメータの「値」を作るなら
encodeURIComponent、URL全体をそのまま使うならencodeURIが適切です。一般的なWeb開発では、クエリパラメータの値(?q=東京の「東京」部分)を作る際はencodeURIComponentを使うケースがほとんどです。 - Q 「日本語のみエンコード」モードはいつ使いますか?
- A URLの構造(
?&=/など)は維持しつつ、日本語・全角文字のみをエンコードしたい場合に使います。既存のURLを受け取って日本語部分だけエンコードしたいときや、サーバーログの日本語URLを正規化するときなどに便利です。 - Q デコードに失敗する文字列がありますが、なぜですか?
- A 以下の原因が考えられます: ①不正なパーセントエンコーディング(
%GGのような無効な16進数)、②UTF-8として無効なバイト列、③部分的にデコード済みの文字列が混在している。このツールはエラーを検出して「デコード失敗」と表示します。 - Q 入力したURLデータはサーバーに送信されますか?
- A 一切送信されません。このツールはブラウザ内のJavaScriptのみで処理を完結しています。APIキーやパスワードを含むURLをデコードする場合でも、データは外部に送信されないため安全です。
- Q URLパラメータ分解機能とはどのように使いますか?
- A 「URLパラメータ分解」タブに
https://example.com/page?name=田中&age=30&lang=jaのようなURLを貼り付けると、name=田中/age=30/lang=jaという形でキーと値を表形式に分解表示します。エンコードされた値は自動的にデコードして表示します。APIのURLデバッグに便利です。