100% ローカル — データがブラウザの外に出ることはありません

URLエンコード|書いたままの値がサーバーまで届く形に整える

テキストをURL用にパーセント符号化します。空白は %20 になり、予約された文字はすべて逃がされるので、値は書いたときの形のまま、そっくりサーバーまで届きます。

高速 プライベート Cookieゼロ

Text 入力

URL-encoded 出力

このツールの動作

テキストを UTF-8 のバイト列にし、非予約集合に含まれないバイトをすべて、パーセント記号と16進2桁で書き表します。そのまま残るのは英数字と - . _ ~ です。

それ以外はすべてエスケープされます。URL を構成する文字も例外ではありません。

a b        →  a%20b
a+b&c=d    →  a%2Bb%26c%3Dd
café       →  caf%C3%A9
😀         →  %F0%9F%98%80

パーセント符号化であり、フォーム符号化ではない

持ち帰るべき区別はここです。両方向で、静かにデータを壊すからです。

パーセント符号化は、URL のパスと現代的なクエリ文字列が使う方式です。空白は %20 と書かれます。プラス記号は文字どおりのプラスであり、値の中に現れれば %2B としてエスケープされます。

フォーム符号化(application/x-www-form-urlencoded、HTML のフォームが送る形式)は、空白を + と書きます。より古い慣習ですが、今なお至るところで使われています。

このツールは前者の規則を適用します。ブラウザの encodeURIComponent と decodeURIComponent と同じ振る舞いです。

復号したときの帰結

フォーム由来の文字列や、フォーム流儀で書かれたクエリ文字列は、ここではプラス記号が空白に戻らず、そのまま残ります。a+b は a+b に復号されます。

パーセント符号化としては正しく、あなたが望んでいたであろう結果としては誤りです。入力がフォーム由来なら、復号の前に + を %20 に置き換えるか、フォーム用の復号器を使ってください。

16進2桁が続かない単独のパーセント記号は、推測せずエラーとします。100% は復号できず、できるふりをすればバイトを捏造することになるからです。

符号化するのは値であって、URLではありません

URL 全体を渡すと :// や区切り文字までエスケープされ、目的から外れます。値ごとに符号化し、そのうえで URL を組み立ててください。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

空白がプラス記号ではなく %20 になるのはなぜですか。
2つの異なる規則があるからです。URL のパスや現代的なクエリ文字列が使うパーセント符号化では、空白は `%20` と書きます。プラス記号はフォーム符号化のもので、HTML のフォームが送信する形式です。
復号したテキストにプラス記号が残ります。不具合ですか。
いいえ。ただし注意すべき点です。このツールはパーセント符号化に従い、そこでの `+` は文字どおりのプラスです。入力がフォームや古いクエリ文字列に由来するなら、そこでのプラスは空白を意味します。復号の前に `+` を `%20` に置き換えてください。
スラッシュやアンパサンドまでエスケープされるのはなぜですか。
このツールが符号化するのは URL 全体ではなく**1つの値**だからです。値の中のスラッシュはパスの区切りに見え、アンパサンドは次のパラメータの始まりに見えます。エスケープすることで、値が1つの値のまま保たれます。

関連ツール