The six sheets › Sheet I
Sheet I of VI
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.
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.
| Address | What Google’s guidance says about this kind of URL |
|---|---|
https://example.com/garden/native-grasses | Readable words, separated by hyphens. The pattern Google recommends. |
https://example.com/index.php?topic=42&area=3a5ebc | Long ID numbers instead of words; Google’s “not recommended” example has this shape. |
https://example.com/garden/native_grasses | Underscores between words; Google recommends hyphens instead. |
https://example.com/gardennativegrasses | Words run together; also listed as not recommended. |
https://example.com/#/garden | Content changed by a fragment, which Google Search generally doesn’t support. |
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
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.
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.
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.
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 href> link from another page?