The six sheets › Sheet I

Sheet I of VI

Site structure: URLs, folders and internal links

A good site structure gives every page one readable address, groups related pages into folders, and connects them with ordinary links a crawler can follow. Google’s own starter guide frames it gently: organising a site logically can help search engines and people understand how pages relate, but search engines will likely understand your pages as they are, so there’s no need to tear everything up today.

General information from Google’s own documentation, not advice for your particular site. Google’s Search Central documentation is the place to check before you change anything, and it is updated over time.

The grid: readable addresses

Parts of a URL can appear in Google’s results as breadcrumbs, so people use the address itself to judge whether a result is what they want. Google’s URL guidance asks for readable words rather than long ID numbers, words in your audience’s language, and hyphens to separate words. It recommends hyphens over underscores because underscores are commonly used to keep concepts together, as programmers do in a name like format_date.

Two details catch people out. Google treats URLs as case sensitive, so /APPLE and /apple are distinct URLs to it; if your server treats them the same, Google suggests settling on one case. And fragments, the part after a #, shouldn’t be used to change a page’s content, because Google Search generally doesn’t support them; for content that changes with JavaScript, Google points to the History API instead.

Addresses on an invented site, read the way Google’s guidance reads them
AddressWhat Google’s guidance says about this kind of URL
https://example.com/garden/native-grassesReadable words, separated by hyphens. The pattern Google recommends.
https://example.com/index.php?topic=42&area=3a5ebcLong ID numbers instead of words; Google’s “not recommended” example has this shape.
https://example.com/garden/native_grassesUnderscores between words; Google recommends hyphens instead.
https://example.com/gardennativegrassesWords run together; also listed as not recommended.
https://example.com/#/gardenContent changed by a fragment, which Google Search generally doesn’t support.

Squares and wards: grouping pages in folders

For sites with more than a few thousand URLs, Google says the way content is organised may affect how it crawls and indexes it. Grouping topically similar pages in directories can help Google learn how often the URLs in each directory change. Its example is a /policies/ folder that seldom changes beside a /promotions/ folder that changes often: Google can learn that, and crawl the two at different frequencies.

That’s the surveyor’s logic. A folder is a ward of the plan with a character of its own. If you put the price list, the returns policy and last week’s sale in one undivided folder, nothing about the address tells a crawler which part moves.

Whether to split topics into subdomains or subdirectories is, in Google’s words, a business decision: “do whatever makes sense for your business.” And the words themselves carry less weight than people hope: Google says keywords in a domain name or URL path alone have hardly any effect beyond appearing in breadcrumbs. Write addresses for people.

Worked example, invented

A plan for a small nursery site

Here is a made-up plant nursery at example.com, laid out the way the guidance suggests. Each folder holds one kind of page, and every page you care about is reachable through links from the home page.

https://example.com/
├── /plants/                     one folder per kind of page
│   ├── /plants/natives/
│   │   └── /plants/natives/kangaroo-paw
│   └── /plants/edibles/
├── /guides/                     changes when a new guide is written
│   └── /guides/planting-in-clay
└── /about/                      seldom changes
    ├── /about/returns
    └── /about/contact

Every address on this plan is fictional. The folders are a suggestion for grouping, not a rule Google sets.

Roads a crawler can drive: links

Google mainly finds pages through links from pages it has already crawled. The link has to be a real one: Google says it can generally only crawl a link that is an <a> element with an href attribute, and can’t reliably extract URLs from elements without an href, or from other tags that act as links through script events. A <span> that navigates when clicked looks like a road to a person and a blank wall to a crawler.

Google’s rule of thumb for internal linking is simple: every page you care about should have a link from at least one other page on your site. It adds that there is no magical ideal number of links on a page.

How to write the visible words of a link, and when to qualify one with nofollow or sponsored, is set out in Google’s link best practices.

Where plans go wrong: endless streets

Some structures produce far more URLs than there are pages. Google lists the usual causes: filters that combine additively (hotels at value rates, on the beach, with a fitness centre), irrelevant parameters such as referral tags, sorting options and session IDs, calendars that link forever into future dates, and parent-relative links placed on the wrong page that spin up bogus addresses. Overly complex URLs can lead Googlebot to use much more bandwidth than necessary, or leave Google unable to index all of a site’s content.

Google’s suggested fixes are specific: use as few parameters as you can, avoid session IDs in URLs and use cookies instead, add nofollow to links into an infinite calendar’s future pages, and use root-relative links where a parent-relative one could create bogus URLs. For URLs that generate search results or endless filter combinations, it suggests considering robots.txt to block Googlebot’s access. The sheet on robots.txt explains what that does and doesn’t achieve.

When the same content does end up at more than one address, Google chooses one as the canonical URL; that is the subject of the sheet on canonical URLs.

Checking the plan as Google sees it

Google wants to see a page the way an average visitor does, which means being able to load the same CSS and JavaScript the browser loads. If important resources are hidden from it, Google may not understand the page. The URL Inspection Tool in Search Console shows how Google sees a page.

A short survey of your own site

  • Could a stranger guess what a page is about from its address alone?
  • Are words in addresses separated by hyphens, in one consistent case?
  • Does each folder hold one kind of page?
  • Can every page you care about be reached by an ordinary <a href> link from another page?
  • Does each link’s text make sense read on its own?
  • Do filters, sorting or calendars create addresses without end?