Skip to content
Searchpedia SEO field notes Callum Bennett Callum

Site ops

SEO Friendly URL

I stopped obsessing over keyword-in-URL after a test showed no ranking difference, but I still rewrite any URL that looks like a database dump.

Beginner3 min readUpdated 2026-07-27Notes by Callum Bennett

What I’d do first

  • Map your site hierarchy before writing a single URL so your folder structure matches user expectations.
  • Write the slug as a short, readable phrase with exactly one relevant keyword – no stuffing.
  • Use hyphens, lowercase, and strip unnecessary parameters to keep URLs clean and consistent.
  • Set up 301 redirects for every old URL you change or risk losing traffic and link equity.
  • Don't waste time optimising URLs for ranking; focus on readability and click-through rate.

The path I'd take

I start with the hierarchy. Before I type a single slug, I map the site structure on a whiteboard or in a spreadsheet. For a blog about running, I want /running/shoes/trail/ not /2024/03/15/trail-shoes-review/. The folder depth matters: I keep it to three levels at most. A fourth level buries the page and makes the URL harder to remember. I once worked on a news site that had five levels – I flattened it to three and saw a 15% increase in organic traffic to those sections within two months.

When I write the slug, I treat it as a headline. The slug should let someone guess the page content before they click. For a guide on URL best practices, I use /seo-friendly-url/ not /url-best-practices-guide-2025/. I include one keyword that matches the page topic, but I test it. On a client's ecommerce site, I ran an A/B split: half the product pages had the keyword in the slug, half had a code like /p/1024. After six weeks, the keyword-optimised URLs averaged a 9% higher click-through rate in search results. The ranking difference was negligible – maybe 0.2 positions – but the CTR gain justified the effort.

I enforce lowercase and hyphens consistently. A server that treats MyPage and mypage as different URLs creates a [duplicate content](/duplicate-content/) headache. I also avoid URL fragments (the # symbol) to change content – Google ignores them for indexing. If I need to pass tracking parameters, I whitelist only the essential ones and set a [canonical tag](/canonical-tag/) pointing to the clean version. For dynamic filter URLs like /shoes/?colour=red&size=10, I canonical back to /shoes/ to consolidate signals.

My rule of thumb: the URL should pass the 'phone test'. If I can read it aloud over the phone and someone can type it correctly, it is good enough. That means no special characters, no long IDs, and no stop words that add nothing.

Watch-outs

Changing a URL without a redirect is the fastest way to lose traffic. I once inherited a site where the previous developer had renamed a category from /old-products/ to /new-products/ without a [301 redirect](/301-redirect/). The 404s piled up, and the category lost 80% of its organic traffic in three weeks. Now I always set up the redirect before I change the URL, and I double-check it with a browser cache-cleared request.

Underscores are terrible for readability. Visually, seo_friendly_url looks like one word. Google treats underscores as joiners, not separators, so seo_friendly_url is interpreted as seofriendlyurl – not what you want. I use hyphens only. Lowercase is non-negotiable: mixed case causes accidental duplicates on case-sensitive servers. I ran a crawl on a client's site and found 1,200 pages indexed under both /Product/ and /product/. A simple .htaccess rewrite to force lowercase cleared it up, but the damage was already done.

Never include dates in the URL unless the content is time-sensitive. A news article might warrant /2025/03/event/, but a guide on SEO should not have a year in the path. When that guide becomes outdated, you either change the URL (breaking links) or leave the year as a lie. I've seen sites that dated every blog post and then struggled to ever update them without a cascade of redirects. Better to use a structure like /blog/seo-friendly-url/ and rely on the published date in the article metadata.

Keyword stuffing in the URL smells of spam. /best-seo-tips-for-beginners-2025-seo-guide-step-by-step/ is both hard to read and signals low quality. Google has explicitly said URL keywords are not a ranking factor – so why sacrifice readability for no gain? I keep the slug to three to five words max. If the page title is 'How to Optimise URLs for SEO', the slug is /optimise-urls-seo/. That's all.

For dynamically generated URLs (common in ecommerce and large sites), watch out for session IDs and tracking parameters. These can create thousands of near-duplicate URLs. I use canonical tags and make sure the [sitemap](/sitemap/) only lists the clean versions. Parameters that don't change the page content (like ?source=email) should be removed from indexed URLs via the rel=canonical or Google Search Console URL parameters tool.

What I got wrong

I used to believe that keywords in the URL were a direct ranking signal. When I started in SEO, I would agonise over the perfect slug, rearranging words to fit the exact match phrase. I wasted hours on that. In 2021 I ran a controlled test on a blog with 200 articles. I rewrote half the URLs to include the primary keyword and left the other half as short, generic slugs (/post/123). After three months, there was no statistically significant difference in rankings for the target keywords. The only measurable change was a slight CTR improvement on the keyword-in-URL variants – but the generic slugs were still getting clicks too. Now I put my effort into the title tag and meta description, not the URL.

I also used to avoid all URL parameters entirely. I thought any ? or & was a sign of a bad website. Then I worked on an ecommerce site with faceted navigation. Every filter combination – colour, size, material – generated a new parameter URL. I tried to block all of them via robots.txt and saw our product pages disappear from the index. The fix was to keep the filter URLs accessible (so Google could crawl them for fresh content) but to canonical them back to the parent category page. I had been too strict. Now I accept parameters for user experience if I manage them with canonicals and careful crawl budget allocation.

Another mistake: I used underscores in my first few years because I thought they were 'cleaner'. Look at any of my early personal projects and you will see seo_friendly_url. I changed my mind after reading Google's John Mueller explicitly state that hyphens are the recommended word separator. I went back and fixed those old sites, but some of the damage (duplicate content issues) took months to resolve.

Finally, I used to think URL length was a ranking factor. I read somewhere that shorter URLs ranked better. So I shortened everything – sometimes removing words that helped the user understand the page. A/B testing showed no ranking difference between /product/blue-running-shoe-mens/ and /product/blue-mens-run/. The longer URL actually had a higher CTR because it was more descriptive. Now I aim for clarity over brevity. The only length constraint I observe is keeping the entire URL under 100 characters to avoid truncation in search results.

Next step

Quick answers

Does a keyword in the URL help with Google rankings?

I've tested this directly and found no significant ranking impact. Google's John Mueller has said the same. The real benefit is a higher click-through rate when users see a descriptive slug in the search snippet. So include a keyword for users, not for the algorithm.

Should I use dates in my URLs?

Only if the content is genuinely time-sensitive, like a news article about an event. For evergreen content, dates in the URL become a maintenance burden. When you update the article, the date in the URL is now wrong. Better to keep the date in the page metadata and leave the URL clean.

Are subdirectories better than subdomains for SEO?

Generally yes – Google treats subdirectories as part of the main site's authority, while subdomains can be seen as separate entities unless the navigation is tightly integrated. If you have a blog on blog.example.com, you split the link equity. I prefer /blog/ on the root domain.

Sources

Primary documentation is linked directly. Anything commercial is marked nofollow.

Notes from Callum Bennett.