疑問解消

スペースは %20 か + か:2つの流儀が生まれた理由と使い分け

更新日:2026-09-17

URLの中のスペースは、%20 と書かれていることも + と書かれていることもあります。どちらが正しいのか、という話を整理します。

どちらも使われている

結論から言うと、場所によって正しいものが違います

場所スペースの表し方根拠
URLのパス部分%20パーセントエンコーディングの仕様
クエリ文字列(フォーム送信)+ または %20フォーム送信の形式

同じ「a b」でも

パス部分 … https://example.com/a%20b
クエリ部分 … https://example.com/?q=a+b または ?q=a%20b

なぜ2つあるのか

もともとURLの仕様では、使えない文字は %XX に置き換えることになっています。スペースもその1つで %20 です。

一方、Webのフォームを送信するときの形式では、スペースを + に置き換えることが決められました。%20 より3文字短くなるため、URLが短く済みます。

この2つが別々に定まったため、いまも両方が使われています。

+ そのものを送りたいとき

プラス記号は %2B にする必要があります

クエリ文字列では + がスペースを意味するため、プラス記号そのものを送るときは %2B にエスケープします。そうしないと、受け取る側でスペースに変換されます。電話番号の国番号(+81)や数式を渡すときに問題になります。

よくある不具合

送りたい値 … +81 90 1234 5678
そのまま渡す … ?tel=+81 90 1234 5678
受け取る側が読む値 … 81 90 1234 5678(先頭がスペースになる)

正しくは … ?tel=%2B81%2090%201234%205678

読み取る側はどう扱うか

クエリ文字列を読み取るとき、多くの仕組みは + をスペースとして解釈します。%20 もスペースとして解釈します。つまりどちらで送ってもスペースとして受け取れます

一方、パス部分では + はプラス記号のままです。ここが混同されやすいところです。

迷ったら %20 を使うのが安全です。パスでもクエリでもスペースとして解釈されるためです。+ はクエリ文字列でしか通じません。

当サイトのツールでの扱い

テキスト変換のURLエンコードでは %20 で書き出します。デコードするときは、+ もスペースとして戻せるようにしています。

どちらの形式で渡されたURLも読めるようにしておくほうが、実際に見かける文字列を扱いやすいためです。

関連する記号

スペース以外にも、クエリ文字列で意味を持つ記号があります。データとして渡すときはエスケープが必要です。

記号クエリでの意味エスケープ後
&パラメータの区切り%26
=名前と値の区切り%3D
?クエリの開始%3F
#ハッシュの開始%23
+スペース%2B

とくに & は、値の中に含まれるとパラメータが分かれてしまいます。検索キーワードに & が入っている場合などに起きます。

まとめ

  • スペースは、パス部分では %20、クエリ文字列では +%20
  • 2つの仕様が別々に定まったため、両方が使われている
  • プラス記号そのものを送るときは %2B にする
  • 迷ったら %20 を使うほうが安全
  • & = ? # も、値に含めるならエスケープが必要

貼り付けるだけで変換できます。形式がわからない文字列は自動で判定します。入力内容はサーバーに送信されません。

テキスト変換で試す →

登録不要・完全無料/入力内容はサーバーに送信されません

この記事を書いた人

都内在住。Web制作・デザインに20年以上携わり、現在はインハウスでWeb制作や改善業務に関わっています。文字コードまわりの不具合に何度も当たってきたので、調べ直した内容を手元のメモとしてまとめ直したものを発信しています。

この記事の位置づけ

仕様と一般的な動作を整理したものです。実際の挙動はブラウザやアプリの実装、受け取り側のシステムによって変わることがあります。業務で使う場合は、実際のデータで往復して確かめておくと安全です。

参考・出典

※2026年9月時点の仕様と、主要なブラウザでの動作にもとづいています。