URL の文字数制限とベストプラクティス

URL の長さには、ブラウザやサーバーごとに異なる制限があります。RFC 2616 では URL の長さに明確な上限を定めていませんが、実装上の制約を理解しておかないと、リンク切れや SEO 上の不利益を招く可能性があります。本記事では、URL の文字数制限と設計のベストプラクティスを解説します。

ブラウザ・サーバー別の URL 文字数制限

環境URL 上限備考
Google Chrome2,097,152 文字実質的にほぼ無制限
Mozilla Firefox65,536 文字超過するとアドレスバーで切り詰め
Safari80,000 文字以上明確な上限は非公開
Microsoft Edge2,097,152 文字Chromium ベースで Chrome と同等
Internet Explorer 112,083 文字レガシー環境での制約
Apache (デフォルト)8,190 バイトLimitRequestLine で変更可能
Nginx (デフォルト)4,096 バイトlarge_client_header_buffers で調整
IIS16,384 文字レジストリ設定で変更可能
Cloudflare32,768 バイト超過すると 414 エラー

SEO に最適な URL の長さ

Google は URL の長さを直接的なランキング要因としていませんが、短く意味のある URL はクリック率やユーザー体験に好影響を与えます。検索結果に表示される URL は約 60 〜 70 文字で切り詰められるため、パス部分は 60 文字以内に収めるのが理想です。

URL のパスにはキーワードを含め、単語の区切りにはハイフン (-) を使用します。アンダースコア (_) は Google が単語の区切りとして認識しないため避けましょう。ディレクトリ階層は 3 階層以内に抑え、不要なパラメータやセッション ID を URL に含めない設計が推奨されます。

URL エンコーディングと文字数の関係

URL に日本語を含める場合、UTF-8 でエンコードされるため文字数が大幅に増加します。日本語 1 文字は 3 バイトの UTF-8 で表現され、パーセントエンコーディングにより 9 文字 (例: %E6%96%87) に展開されます。10 文字の日本語パスは、エンコード後に 90 文字になる計算です。

この膨張を考慮すると、日本語を URL パスに使用する場合はできるだけ短い表現を選ぶか、英語のスラッグを採用するほうが安全です。クエリパラメータに日本語を含める場合も同様で、検索キーワードなどは URL 全体の長さに注意が必要です。

クエリパラメータの制限と設計

クエリパラメータ (?key=value&key2=value2) は URL の一部としてカウントされます。パラメータが増えるほど URL は長くなり、サーバー側の上限に達するリスクが高まります。特に検索フィルターやトラッキングパラメータが多い場合は注意が必要です。

GET リクエストで大量のパラメータを送信する設計は避け、複雑な条件は POST リクエストのボディに移行することを検討しましょう。UTM パラメータなどのトラッキング用途では、utm_sourceutm_mediumutm_campaign の 3 つで合計 100 文字以内に収めるのが実用的です。

実務での推奨ガイドライン

ブラウザやサーバーの制限を総合すると、URL 全体を 2,000 文字以内に収めるのが安全な基準です。これは最も制限の厳しい Internet Explorer 11 の上限 (2,083 文字) を下回り、ほぼすべての環境で問題なく動作します。

API のエンドポイント設計では、リソースの識別子 (UUID など) が 36 文字を占めることを考慮し、ベース URL とパスの合計を 200 文字以内に設計すると余裕があります。リダイレクトチェーンでは各段階で URL が変わるため、最終的な URL が制限内に収まることも確認しましょう。

まとめ

URL の文字数制限はブラウザやサーバーによって異なりますが、2,000 文字以内を目安にすれば実用上の問題はありません。SEO の観点ではパス部分を 60 文字以内に抑え、日本語の URL エンコーディングによる膨張にも注意が必要です。URL の文字数を正確に把握したいときは、文字カウンタスでエンコード前後の長さを確認してみてください。