URL structure is one of those technical SEO fundamentals that gets underweighted until you are deep into a migration or trying to untangle a crawl mess that accumulated over years. Getting it right from the start is far cheaper than cleaning it up later — especially because every URL change on a live site requires a redirect, and redirect debt compounds. Here is how I think about URL design for both new builds and site restructures.
Keep URLs Short and Descriptive
The ideal URL communicates the topic of the page to both users and crawlers with as few words as necessary. Drop stop words (a, the, and, of) unless they are genuinely part of a recognized phrase. Prefer /technical-seo-checklist/ over /a-comprehensive-guide-to-building-a-technical-seo-checklist-for-websites/. Shorter URLs are easier to share, easier to read in SERPs, and less likely to be truncated in search result displays. They also tend to signal a cleaner, more intentional site architecture.
There is no hard character limit, but keeping URLs under 75 characters is a reasonable practical target. Focus on the essential words that define the page topic and cut the rest.
Use Hyphens, Not Underscores
Google treats hyphens as word separators. Underscores are not treated as separators — technical_seo is interpreted as one token, not two separate words. This affects how your page associates with keyword searches. Beyond the ranking implication, mixing hyphens and underscores across a large site creates unnecessary variation that complicates crawl data analysis. Standardize on hyphens throughout and enforce it in your CMS settings or slug auto-generation rules.
Lowercase Only
URLs are case-sensitive on most Linux-based servers (which is where most web hosts run). /Technical-SEO/ and /technical-seo/ are two different URLs unless your server is configured to normalize them. Mixed-case URLs create duplicate content risk and generate crawler confusion — especially during site migrations when the old and new URL variants may coexist. Enforce lowercase at the server level using Apache mod_rewrite or an Nginx rewrite rule, and set it as the default slug format in your CMS. This is a one-time configuration that prevents years of inconsistency.
Reflect Site Hierarchy Without Over-Nesting
URL paths should map logically to your content hierarchy: /category/subcategory/page/. This structural signal helps Google understand the relationship between pages and infer topical authority for parent directories. But do not over-nest. Pages more than three or four directory levels deep receive less crawl priority in practice, their URLs become unwieldy to read and share, and the structural signal benefit diminishes at deeper levels.
For most content sites and e-commerce catalogs, a maximum of three path segments handles the full content hierarchy cleanly. Save deeper nesting for genuinely hierarchical content like product catalogs with multiple legitimate tiers that actually reflect distinct user journey stages.
Avoid Parameters Where Possible
Query string parameters (?id=123&ref=home&sort=asc) are harder for Google to interpret as unique, indexable resources. They also create canonicalization headaches at scale — each unique parameter combination is technically a distinct URL. If you are building a new site or CMS implementation, prefer clean path-based URLs for any content you want indexed. If you are stuck with a parameter-heavy platform, use canonical tags to point parameter variants to their clean equivalents and configure robots.txt to block the highest-volume parameter patterns. This overlaps directly with the faceted navigation problem.
Include the Target Keyword
Keyword presence in the URL is a confirmed ranking signal, though a modest one. More practically, a keyword-bearing URL tells users immediately what a page covers when they see it in a SERP snippet, a shared link, or a browser tab. It also makes internal linking more intentional — when your URL already contains the target phrase, writing natural keyword-rich anchor text for internal links becomes easier.
Keep it natural. The URL should reflect the page topic using the primary target phrase. Do not stuff three keyword variants into the path or add qualifiers just to lengthen the keyword match. One clean phrase is sufficient and reads better to users.
Trailing Slashes — Pick One and Enforce It
Whether you use /page/ or /page, both are valid. The problem is inconsistency — serving both means Google sees two distinct URLs with potentially different link equity and canonical signals. Enforce one version sitewide: set up a 301 redirect from whichever format you do not prefer to the format you do, and configure your CMS to generate consistent slugs. WordPress defaults to trailing slashes. Most static generators and API-driven frameworks default to none. Either is fine — what matters is that you pick one and never mix them.
Never Change a Live URL Without a Redirect
This sounds obvious but it is the most common URL mistake I encounter on audit after audit. A developer renames a page in the CMS, the URL changes, and nobody sets up a redirect. That page had inbound backlinks, internal links, possibly organic rankings, and user-facing bookmarks — all now pointing at a 404. Every URL change on a live site requires a 301 from the old path to the new one. This is non-negotiable. The cost of one missed redirect compounds over months as external links continue to send authority and users to a dead endpoint.
Build a redirect process into your content workflow. When a page is renamed, moved, or removed, the person making that change is responsible for documenting and implementing the redirect. Treat it as part of the same task, not an afterthought.
URL Structure During Migrations
Site migrations are where URL structure decisions have the highest stakes. A clean URL restructure is a legitimate reason to migrate — moving from parameter-based URLs to clean path-based URLs, or collapsing an over-nested hierarchy. When you do this, the redirect map is the most important deliverable in the entire project. Map every old URL to its new destination, implement the 301 redirects before launch, and verify every redirect returns a clean chain to a 200 before switching DNS. I have seen migration projects in the Phoenix metro area where a mismanaged URL restructure caused ranking losses that took six months to recover.
Clean URL architecture is one of the first things I check in a technical website audit, because it affects canonicalization, crawl budget, and internal linking all at once. If you are planning a site restructure or CMS migration, also read my notes on redirect types and canonical tags — they are the implementation layer that determines whether a URL change cleanly transfers equity or leaks it.