概要

URL エンコーダー/デコーダーは、開発者や QA、コンテンツ担当者がブラウザを離れずに URL 用テキストを安全に変換するためのツールです。クエリ値、パス断片、完全な URL、フォーム値をエンコードできるほか、既存のパーセントエンコード文字列をデコードして確認やデバッグにも使えます。

使い方

まず自動、エンコード、デコードのいずれかを選び、次に用途に合う方式を選択します。クエリ値や単独の文字列にはコンポーネント、完全なリンクには完全な URL、application/x-www-form-urlencoded にはフォーム値が適しています。入力を貼り付け、必要なら各行を個別処理し、その後コピー、入れ替え、ダウンロードを行います。

主な機能

  • URL コンポーネント、完全なリンク、フォーム値のエンコード/デコードに対応
  • パーセントエンコードのパターンから方向を判断する自動モード
  • encodeURIComponent、encodeURI、フォーム値向けの専用方式
  • 複数値をまとめて扱いやすい行単位処理
  • 大文字のパーセントエスケープで出力を統一
  • コピー、入れ替え、ダウンロードをすぐ実行
  • サーバーへ送信しないローカルブラウザ処理

コンポーネント方式と完全な URL 方式の使い分け

検索語、タグ、パス断片、ファイル名のように単一の値を扱う場合は、コンポーネント方式が適しています。&=/ のような区切り文字もエンコードするため、クエリ値や動的ルート片で安全です。

すでに URL 全体があり、その構造を読みやすく残したい場合は完全な URL 方式を使います。https:///?&# を壊さずに、空白や Unicode、危険な文字だけを処理できます。

クエリ文字列とフォーム値

クエリパラメータでは通常パーセントエンコードが使われますが、従来の HTML フォームでは application/x-www-form-urlencoded が使われ、空白は + に置き換えられます。この違いは重要です。誤った方式でフォーム値をデコードすると、プラス記号が残って見た目がおかしくなります。

よくあるミス

encodeURIComponent で URL 全体をエンコードしてしまい、あとで読みにくくなるのはよくある失敗です。また、100% 完了 のように通常の % を含む平文をデコードしようとしてエラーになることもあります。自動モードは判断を助けますが、文脈が分かっているなら手動で方式を選ぶ方が確実です。

プライバシーと安全性

URL エンコードは書式変換であり、暗号化ではありません。シークレット、トークン、パスワード、個人情報を隠す仕組みではありません。このツールはブラウザ内でローカル処理されますが、それでも機密性の高い値はログ、スクリーンショット、チケットへ不用意に共有しない方が安全です。

エンコード方式ガイド

扱う文字列の種類に合わせて適切な方式を選びます。

方式何をエンコードするかよくある用途
コンポーネント&、=、/、? などの区切り文字もエンコードクエリ値、パス断片、ファイル名、動的テキスト
完全な URLURL 構造文字を読みやすく保つ空白や Unicode だけ処理したい完全な URL
フォーム値空白を + にするHTML フォーム送信値や従来型クエリ文字列

よくある URL エンコードの間違い

技術的には有効でも結果が不自然に見える典型例です。

状況より良い選択理由
完全な URL をコンポーネントとしてエンコード完全な URL 方式を使うリンク全体が読みにくく再利用しづらくなる
フォーム値を + の扱いなしでデコードフォーム値方式を使うプラス記号は通常空白を表す
% を含む平文をデコードエンコードまたは自動を使うすべての % がエスケープ開始ではない
エンコード済みの秘密情報を共有本来の秘密情報管理を使うエンコードは暗号化ではない

よくある質問

encodeURI と encodeURIComponent の違いは何ですか?

encodeURIComponent は単一の値向けで、アンパサンドやスラッシュのような区切り文字もエンコードします。encodeURI は URL 全体向けで、構造文字を読みやすく残します。

フォーム方式で + が空白になるのはなぜですか?

従来のフォームエンコードでは空白をプラス記号で表します。フォーム値方式はその慣習に合わせています。

URL エンコードは暗号化と同じですか?

違います。URL エンコードはテキストを送信しやすい形式に変えるだけで、誰でも元に戻せます。

完全な URL をそのまま貼り付けても大丈夫ですか?

はい。完全な URL 方式はリンク全体向けです。URL の一部だけを扱うならコンポーネント方式が向いています。

入力はサーバーに送られますか?

送られません。エンコードとデコードはブラウザ内でローカル実行されます。