Alex Wright Media

URL Structure Best Practices for SEO: A Complete Guide

Your URL is an address, not a title—and getting it wrong costs far more than getting it right. Here's how to structure URLs for SEO before a one-afternoon decision becomes a seven-week traffic dip.

URL Structure Best Practices for SEO: A Complete Guide

Ask ten SEOs what the ideal URL looks like and you'll get ten confident answers, most of them wrong in the same way. Which is strange, because the URL is the oldest, cheapest, most boring piece of technical SEO we own. It costs nothing to get right at the start. It costs a fortune to fix later.

I learned that the expensive way. On an ecommerce site I was consulting for, every product page lived under /shop/category/subcategory/product-name-2021-final-v2/. The team had been renaming slugs every time a product description changed, because nobody had ever said out loud that a URL is an address, not a title. When we finally consolidated, we mapped 1,847 legacy URLs down to 300. Traffic dipped for about seven weeks before recovering and eventually climbing past where it was. Seven weeks of lost revenue, for a decision that would have taken one afternoon to make correctly.

So let's talk about URL structure best practices for SEO the way they actually matter — not as a checklist, but as a set of decisions with consequences.

Key takeaways

  • A URL is an address. Its job is to be stable, readable, and unambiguous — not to describe the page's content in full.
  • Lowercase, hyphenated, short, and hierarchical beats clever every time.
  • Changing a URL always costs something. Redirect it with a 301, update internal links, and expect a temporary dip.
  • Folder structure should mirror how humans navigate your site, not how your CMS stores records.
  • Stop words, session IDs, and tracking parameters add noise without adding ranking value.
  • The best moment to fix your URL structure was before launch. The second best is a planned migration, not a panic.

What actually makes a URL SEO-friendly

A URL does three jobs simultaneously, and most advice online conflates them. It has to be machine-crawlable, human-readable, and durable. Miss any of the three and you're paying for it somewhere down the line.

The three jobs of a URL

Crawlability is the technical half. Search engines need to be able to fetch the resource without ambiguity, follow it from internal links, and understand which version of a page is canonical when duplicates appear. Readability is the part users see in the address bar, in shared links, in your analytics reports. And durability is the part everyone forgets: a URL you change breaks every bookmark, every backlink, and every citation that points to it.

Which of the three do people get wrong most often? Durability. By a wide margin.

Anatomy of a URL, in plain terms

Take this URL:

https://www.example.com/guides/seo/url-structure/?ref=newsletter

  • https:// — the protocol. There is no reason to run a site on plain HTTP in 2026.
  • www.example.com — the host. Choose www or non-www, redirect the other, and never switch back.
  • /guides/seo/ — the folder path. This is where hierarchy lives.
  • url-structure — the slug. This is where your keyword lives.
  • ?ref=newsletter — a parameter. This is where duplicate content is born.

That last one deserves its own section, but hold the thought.

The rules that hold up under pressure

Advice on URL formatting is one of the few areas of SEO where the consensus is genuinely correct. That doesn't happen often. Here's what I'd stake my reputation on.

Use lowercase, and use hyphens

Case sensitivity is a server-level setting, and servers are not consistent with each other. Some treat /About and /about as the same page. Others don't. Google's own guidance is straightforward: keep URLs lowercase. Don't gamble on your server's configuration.

For word separators, hyphens win over underscores. Both are technically valid characters, but a hyphen reads as a space to most parsers and to human eyes. /url-structure/ reads cleanly. /url_structure/ looks like a variable name. I've never seen a case where underscores outperformed hyphens, and I've seen plenty of the reverse.

Keep it short, put the keyword early

The slug should contain your target phrase and almost nothing else. /url-structure/ beats /the-complete-guide-to-url-structure-best-practices/ every single time, for two reasons. First, shorter URLs are easier to link to, and easier to link to means more links. Second, keyword position in the path carries a faint signal, and the beginning of a slug is where it's strongest.

What about stop words — "the", "and", "of"? Usually fine to drop, but don't mutilate a phrase to remove them. /how-to-structure-urls/ is fine. /structure-urls-how/ is not.

Avoid parameters when a static path will do

Parameters aren't inherently harmful. They become harmful when they generate multiple indexable versions of the same content. ?color=red, ?color=red&session=abc123, and ?color=red&sort=price can all resolve to the same product with the same copy. That's three URLs for one page, and search engines have to pick one.

Session IDs in URLs are the worst offender. They change on every visit. If your platform inserts them by default, turn them off or canonicalize them aggressively. I once audited a site where the crawl returned over 40,000 URLs for a catalog of about 2,000 products. Session parameters were almost the entire explanation.

Structural decisions: folders, depth, and dates

The path portion of your URL is where you make promises about how your site is organised. Break those promises and your internal linking logic starts to rot.

Structural decisions: folders, depth, and dates

Mirror your navigation, not your database

A good rule: if a user can't reach a page by clickin through your menu in three steps, the URL probably shouldn't imply they can. Folder depth should reflect real hierarchy.

URL patternSignal to search enginesPractical verdict
/shoes/running/trail/Clear category hierarchyStrong — matches user navigation
/products/sku-4429/Internal identifier onlyWeak — no semantic value
/2024/03/url-structure/Publication date baked inRisky — ages badly on evergreen content
/blog/url-structure/Content type plus topicGood — flat, stable, descriptive

That third row is the one I'd argue about over a beer. Date-based URLs make perfect sense for news. For evergreen guides, they're a liability. Every time you update the piece, you either leave a stale year in the URL or you change the URL and lose the accumulated signals. I've made this mistake on my own site. I still have posts from years ago with dates in their paths, and I update them regularly. It's a constant low-grade irritation.

The ecommerce case is genuinely harder

Product catalogs force a real trade-off. A product belongs to a category, but it may appear in several. If your URL says /running-shoes/neutral/trail-x7/, what happens when you reshuffle categories next season? You either redirect, or you keep a category path that no longer matches your navigation.

Many large retailers solve this by flattening the product path entirely: /products/trail-x7/, with categories handled by internal links and breadcrumbs. It's less descriptive per URL, but it's stable. Given how often merchandising changes, I think that's the right call for most catalogs above a few hundred SKUs. Below that, the descriptive path wins.

Non-ASCII URLs and transliteration

If your slug contains accented characters, spaces, or non-Latin scripts, browsers will percent-encode them. Google has handled internationalized domain names and encoded paths for years, so this isn't the disaster some guides make it out to be. But the display versions get ugly in shared links and analytics exports.

My approach, and I'll defend it: transliterate to plain ASCII for Latin-script languages. /cafe-guide/ rather than /caf%C3%A9-guide/. For non-Latin scripts, keep the native characters and percent-encoding rather than forcing an awkward romanization. Both approaches index; only one looks like it was designed on purpose.

Changing a URL: the real cost, and a procedure that works

Here's where I'll be blunt. Most articles treat URL changes as a footnote. They aren't. A URL change is a migration, and migrations go wrong.

Changing a URL: the real cost, and a procedure that works

What a URL change actually costs

On that 1,847-URL consolidation I mentioned, we mapped every old URL to its new home, deployed 301 redirects, updated internal links and sitemaps, and resubmitted. The result: a measurable traffic decline that lasted roughly seven weeks. We recovered, and then some, but the dip was real and it was expensive.

What went wrong in the first attempt? We redirected in two batches instead of one, which meant the crawl kept finding mixed signals for a while. And we missed internal links in the site's footer and blog sidebar — about 40 of them, which kept funneling authority to dead endpoints. Lesson learned: link cleanup is not optional, and it never stops at the page you're changing.

A migration sequence I'd actually follow

  1. Export every current URL and its traffic. You cannot measure loss without a baseline.
  2. Build the redirect map as a single file. One old URL, one new URL, no chains.
  3. Deploy 301s before you publish the new architecture, not after.
  4. Update every internal link — navigation, footer, body content, sitemaps, canonical tags.
  5. Update external backlinks where you control the source. Where you don't, the 301 handles it.
  6. Watch the crawl reports for orphaned URLs for at least a quarter.

Two redirects in a chain is one too many. If your map produces A → B → C, flatten it to A → C.

Mistakes I see repeatedly

Two more worth naming, because they cost people real traffic.

Trailing slashes. /page and /page/ can be treated as separate URLs. Pick one convention sitewide and 301 the other. This is a five-minute fix that prevents thousands of duplicate-crawl issues later.

www versus non-www. Same logic, same fix. Choose one, redirect the other permanently, and never revisit the decision. I've seen sites flip this on a designer's whim during a rebrand. Don't.

And the one that still surprises me: keyword-stuffed slugs left over from an old strategy. /best-cheap-running-shoes-online-discount/ doesn't rank better than /running-shoes/. It just looks desperate to anyone who sees the link before clicking it.

The thing that actually matters most

Every formatting rule above could be summarised in one sentence: make your URLs boring, and then never touch them again.

Boring URLs are lowercase, hyphenated, short, and hierarchical. They contain one clear topic. They don't change when your designer gets excited. And here's the part nobody writes about — after a certain point, URL structure stops being something you optimise and becomes something you maintain. The teams that win aren't the ones with the prettiest slugs. They're the ones who made a decision, wrote it down, and stuck to it for five years.

So the next time you're building a section of your site, ask one question before you name anything: will this address still make sense if everything about this page changes except the topic? If the answer is yes, you've got it right. If it's no, you've just scheduled a migration for a future version of yourself. And future you, I promise, will not thank you.

Vanessa Thornton

Vanessa Thornton

Vanessa Thornton is a local search strategist who helps businesses strengthen their visibility through Google Business Profile optimization, local link building, and multi-location SEO. She partners with brands of all sizes to build sustainable local search programs that drive measurable growth across every location. Known for translating technical SEO concepts into clear, actionable strategies, Vanessa is a trusted resource for teams navigating the complexities of local search.

See all articles →

Related articles