出海数字营销宝典 Logo
出海数字营销宝典evaoo.com
Back to SEO Best Practices
Google Search Central SpecIETF STD 66 · URL Naming Standard

Google URL Structure & Naming Best Practices: Hyphens, Percent-Encoding & Crawl Budget Protection

Your URL is the very first signpost Googlebot reads. Poor URL naming wastes crawl budget on duplicate parameter combinations and splits ranking signals. Distilled from Google Search Central documentation, this guide summarizes every rule for clean, high-ranking URLs—complete with an interactive IETF STD 66 auditor.

Compiled by Evaoo SEO Lab (Based on Google Search Central)•Updated Oct 31, 2026•8 min read
Google Official Docs
Google URL Structure & Naming Best Practices
📌 Core Principle: A great URL is unambiguous, human-readable, and 100% compliant with IETF STD 66 crawlers.

0010-Second Cheat Sheet: Recommended vs. Bad URL Naming

Before diving into technical mechanics, bookmark this 8-row comparison table covering 95% of real-world URL naming decisions:

Dimension✅ Recommended❌ Not Recommended
Word Separator/summer-clothing/dark-grey/summer_clothing · /greendress
Readability vs ID/wiki/aviation/index.php?topic=42&area=3a5ebc94
Letter Casing/products/apple-watch-band/Products/Apple-Watch-Band
JS Content Routing/recipes/potatoes (History API)/#/potatoes (URL Fragment)
Parameter Syntax?category=dresses&color=purple,pink?[category:dresses] · ?cat,dresses,,sort,low
Non-ASCII in href/gem%C3%BCse (or ASCII slug)/gemüse · /🦙✨ (raw in href)
User Session StateStore session in HTTP Cookies/search?sessionid=6EE2BF1AF6A3D705
Internal Relative Linkshref="/category/stuff" (Root-relative)href="../../category/stuff" (Parent-relative)

013 Hard Requirements for a Crawlable URL Structure

Google explicitly warns that if your URLs fail these three baseline requirements, Googlebot will crawl your site inefficiently—either triggering runaway crawl spikes or failing to crawl your pages altogether.

1.1 Follow IETF STD 66 (RFC 3986)

Google Search parses URLs strictly according to IETF STD 66. Any character defined by the standard as reserved must be percent-encoded whenever used outside its syntactic delimiter role.

1.2 Don't Use URL Fragments (#) to Change Page Content

Hash fragments (#) are meant for in-page anchor scrolling. Google Search generally ignores URL fragments—meaning hundreds of SPA routes behind #/ collapse into a single root URL for Googlebot.

❌ Bad (Ignored by Googlebot):
https://example.com/#/potatoes
✅ Good (History API Clean Path):
https://example.com/potatoes

1.3 Use Common Encoding for URL Parameters (=, &, and ,)

Never invent custom parameter delimiters. Always separate key-value pairs with "=", append additional parameters with "&", and list multiple values for a single key with ",":

✅ Recommended Standard Encoding
https://example.com/category?category=dresses&sort=low-to-high&sid=789
https://example.com/category?category=dresses&color=purple,pink,salmon&sort=low-to-high
❌ Not Recommended Custom Delimiters
https://example.com/category?[category:dresses][sort:price-low-to-high][sid:789]
https://example.com/category?category,dresses,,sort,lowtohigh,,sid,789

02How to Name URLs Properly: 7 Official Golden Rules & Practical Conventions

Rule 1: Use Descriptive Words Rather Than Long ID Numbers

Users and search engines should grasp the topic of a page just by glancing at its URL. Replace database IDs and opaque hashes with concise topical nouns:

✅ https://example.com/wiki/aviation❌ https://example.com/index.php?topic=42&area=3a5ebc944f41daa6f849f730f1

Rule 2: Separate Words with Hyphens (-), Never Underscores (_) or Concatenation

Why does Google discourage underscores? Historically, programming languages use underscores (like format_date) for tokens meant to stay bound together as one identifier, whereas hyphens clearly signal word boundaries.

✅ /summer-clothing/filter?color-profile=dark-grey
❌ /summer_clothing/filter?color_profile=dark_grey
❌ /greendress

Rule 3: URLs Are Case-Sensitive — Enforce All-Lowercase Normalization

Following IETF STD 66, Google treats /APPLE and /apple as completely distinct URLs. Always force lowercase slugs and 301-redirect any uppercase variants to prevent split link equity.

Rule 4: Use Your Audience's Language & Percent-Encode Non-ASCII in href

Use words in your target audience’s language (e.g., German /lebensmittel/pfefferminz). Crucially, when linking to URLs containing non-ASCII characters inside HTML href attributes, always percent-encode non-ASCII bytes:

✅ Recommended in href
https://example.com/gem%C3%BCse
https://example.com/%E6%9D%82%E8%B4%A7/%E8%96%84%E8%8D%B7
❌ Not Recommended Raw Non-ASCII
https://example.com/gemüse
https://example.com/杂货/薄荷 · /🦙✨
💡 Cross-Border & Multilingual Pro Tip: While percent-encoded non-ASCII paths work, they expand into long %E6%9D... strings when pasted into chat apps. For bilingual/global sites, pairing locale subdirectories with concise English keyword slugs (e.g., /zh/seo/url-structure) offers the cleanest UX and maintainability.

Rule 5: Trim Unnecessary Parameters

Whenever possible, shorten URLs by stripping parameters that do not meaningfully change page content.

Rule 6: Geotargetable Multi-Regional Paths

For multi-regional sites, Google recommends either country-specific domains (https://example.de) or gTLD subdirectories (https://example.com/de/).

Rule 7 (Field Playbook): The 3-Step Evergreen Slug Naming Formula

  • Keep slugs to 3–5 core words: Strip low-value stop words (a, the, and, for, with) so core keywords carry clear prominence.
  • Omit years from evergreen URLs: Put the year in your <title>, not the URL slug (/seo/starter-guide instead of /seo/starter-guide-2025), preserving backlink equity across annual updates.
  • Keep directory depth ≤ 3 levels: Structure logically as /category/topic-slug for clear topical clustering without deep nesting.

034 Crawl-Budget Killers Highlighted by Google Search Central

Overly complex URLs spawn thousands of duplicate or near-duplicate views, draining crawl bandwidth and preventing Google from indexing your primary content:

1. Additive Faceted Filtering Explosion

Combining filters (value rate + beach + gym) multiplies URLs exponentially while exposing the exact same items:

?Ne=292&N=461
?Ne=292&N=461+4294967240
?Ne=292&N=461+4294967240+4294967270

2. Session IDs, Referral & Sort Params

Embedding session IDs, referral click hashes, or sort orders in crawlable links creates endless duplicates. Always store sessions in Cookies.

/search?sessionid=6EE2BF1AF6A3D705D5561B7C3564D9C2
/results?search_query=tpb&search_sort=relevance

3. Infinite Dynamic Calendar Spaces

Unbounded calendar widgets let crawlers click "Next Month" forever. Cap date ranges and add rel="nofollow" to dynamic future calendar links.

https://example.com/calendar.php?d=13&m=8&y=2099

Misplaced "../../category/stuff" links combined with soft-200 errors spawn infinite looping directory paths. Always use root-relative URLs starting with "/".

❌ <a href="../../category/stuff">
✅ <a href="/category/stuff">

04Fixing Crawling-Related URL Problems: 3-Step Engineering SOP

STEP 01 · ROBOTS.TXT

Block Infinite Spaces in robots.txt

Prevent Googlebot from wasting crawl budget on internal search results, sorting, and infinite calendars:

User-agent: *
Disallow: /search
Disallow: /*?sort=
Disallow: /*&sessionid=
STEP 02 · CANONICAL

Consolidate Tracking Params via Canonical

Keep campaign URLs accessible while pointing <link rel="canonical"> to the clean parameter-free URL:

STEP 03 · 301 MIGRATION

Always 301-Redirect Renamed Legacy URLs

When renaming an indexed legacy URL, configure a permanent 301 redirect, update internal links, and refresh sitemap.xml so accumulated link equity transfers cleanly.

Interactive URL Auditor · 8-Point Google IETF STD 66 Check

Google URL Naming Compliance Auditor & Auto-Normalizer

Paste any URL below or click a preset to run an instant 8-point Google URL audit and generate a clean, canonicalized replacement:

Score:75/100
Hyphens (-) Instead of Underscores (_)

Detected underscore "_": Google treats underscore-joined tokens like function names. Replace with "-".

All-Lowercase Path Normalization

Uppercase characters found: Google treats /APPLE and /apple as two separate URLs.

No URL Fragment (#/) Content Routing

No fragment-based content routing detected.

Standard =, &, and , Parameter Syntax

Query string follows standard IETF STD 66 key=value&k2=a,b encoding.

Zero Session IDs or Irrelevant Referral Params

Free of session IDs and redundant internal referral parameters.

Proper Percent-Encoding in href (No Spaces / Raw Non-ASCII)

Valid ASCII / percent-encoded URI characters.

Root-Relative / Absolute Path (No ../ Traps)

Clean root-relative / absolute path hierarchy.

Descriptive Human-Readable Words Over Opaque IDs

Human-intelligible descriptive tokens confirmed.

✨ Normalized Google-Compliant URL

https://example.com/summer-clothing/green-dress-2026

🔗 Recommended Canonical Tag

<link rel="canonical" href="https://example.com/summer-clothing/green-dress-2026" />