Technical SEO for Your Own Site: Best Practices for URL Structure, Breadcrumbs, Pagination, and Canonical Tags
1. URL structure: lock it in before launch, don’t touch it for 30 days
URLs are the first signal Google uses to judge page hierarchy and topic. The golden rules for your own site’s URLs: lowercase, hyphens, no more than 3 levels, include keywords, no dynamic parameters. If you change a URL after launch, you must add a 301, or you’ll lose both backlinks and rankings.
| Rule | Correct example | Incorrect example |
|---|---|---|
| Lowercase with hyphens | /hydraulic-hose/ | /Hydraulic_Hose/ |
| 3 levels or fewer | /products/hydraulic-hose/xsr300/ | /products/catalog/2024/hydraulic/hose/xsr300/ |
| No IDs | /products/xsr300/ | /product.php?id=88231 |
| No dates | /blog/how-to-choose-hose/ | /blog/2024/09/11/how-to-choose/ |
| 4 words or fewer | /commercial-pressure-washer/ | /best-commercial-pressure-washer-for-farms-in-2024/ |
Dynamic-parameter URLs are the most common indexing black hole for your own site. Shopping carts, filters, sorting, and session IDs all generate URLs with ? parameters. If you don’t deal with them, Google will crawl a dozen parameter versions of the same product page as separate pages. For how to handle this, see the search experience for product catalogs. The key is to block low-value parameters with robots and point valuable parameters to the main version with canonical.
Example: a client’s site used WooCommerce with product URLs like /product/xsr300/, but after adding 3 related-product plugins, it automatically generated URLs like /product/xsr300/?variation=red, and GSC indexed over 1,200 duplicates. The fix was to Disallow ?variation= in robots and hard-code the canonical on the product page as /product/xsr300/.
2. Breadcrumbs: visible navigation + hidden structured data
Breadcrumbs solve two things: visitors know where they are, and Google uses them in the SERP instead of a long URL. You have to do both at once: visible breadcrumb navigation on the page, plus BreadcrumbList JSON-LD in the head.
| Breadcrumb approach | Recommended? | Description |
|---|---|---|
| Visible navigation + BreadcrumbList markup | Recommended | Readable by users and Google, breadcrumbs show in SERPs |
| Visible navigation only, no markup | Works | Users see it, but breadcrumbs rarely show in SERPs |
| Hidden markup only, no visible navigation | Not allowed | Counts as hidden text, violates Google’s spam policies |
| Breadcrumbs go more than 5 levels deep | Not allowed | Too deep, flatten the structure |
| Link the last level too | Not Recommended | Self-links are pointless, the last level should be plain text |
Keep it to 4 levels or fewer: Home > Category > Subcategory > Product. Use absolute URLs for every level of the breadcrumb, not relative paths. For the BreadcrumbList markup, see Structured data (Schema) the P0 section, and validate it with the Rich Results Test on launch day.
3. Pagination: self-referencing canonical on every page, stop using rel=next/prev
Pagination is where outdated tutorials mislead people most in technical SEO. Google announced back in March 2019 that rel=next/rel=prev are no longer used as signals, yet plenty of tutorials still tell you to add them. They do nothing.
| Pagination approach | Indexing result | Recommended? |
|---|---|---|
| Self-referencing canonical on each page (page=2 canonicalizes to page=2) | Pages 1 through 10 all indexed separately | Recommended |
| All paginated pages canonicalize to page 1 | Only page 1 gets indexed, pages 2 through 10 disappear | Mistake |
| Using rel=next/prev | Google ignores it, no effect | Outdated |
| Infinite scroll with no pagination links | Content past page 2 can’t be crawled | Mistake |
| Still paginating past 10 pages | High thin-page risk | Switch to filters or an A-Z index |
The counterintuitive part: many people think canonicalizing paginated pages to page 1 concentrates link equity, but the result is that pages 2 through 10 never get indexed and your total indexed list pages drop to 1/10. The right approach is to point each page’s canonical at itself, so Google treats every page as separate content. If a category has more than 10 pages of products, replace pagination with filters or an A-Z index instead of endless pages.
4. canonical: absolute URLs, self-referencing, paired with hreflang
The canonical tag tells Google: “this page and that page are the same content, treat mine as the original.” It’s your first tool for handling duplicate content, but using it wrong is worse than not using it at all.
| How to write canonical | Results | What it means |
|---|---|---|
| <link rel=”canonical” href=”https://site/a/”> absolute URL | Points to the right primary version | Standard practice |
| canonical written as a relative URL /a/ | Google usually resolves it, but it’s risky | Not Recommended |
| canonical points to the homepage | Page equity gets merged incorrectly | Serious error |
| canonical points to a 404 or deleted page | Page drops out of the index | Serious error |
| Pair canonical with hreflang on multilingual pages | Each language indexed separately | Standard practice |
On multilingual sites, canonical must work with Hreflang for multilingual sites: the English page canonicalizes to its own English URL, and hreflang lists every language version. Don’t point the German canonical at the English page, or the German page will vanish from German search results. For how to choose a plugin, see crater Tech Stack.
Example: after a site redesign, a client 301-redirected the old URL /old-product/ to /new-product/ but forgot to add a self-referencing canonical on /new-product/. GSC then reported “User-declared canonical not selected.” One line of canonical later, the error cleared within 5 days. This problem spikes during site migrations. See Site rebuilds and domain changes.
5. 7-day post-launch verification checklist
The four essentials aren’t done when the code ships. You have to verify them in GSC.
| What to check | Tools | Timeframe | Pass criteria |
|---|---|---|---|
| Spot-check URL structure | URL Inspection tool | Launch day | 5 random URLs, no parameters, no more than 3 levels deep |
| Breadcrumb markup | Rich Results Test | Launch day | No errors |
| Pagination indexing | GSC Indexing report | Day 7 | Pages 2 through 10 all indexed |
| Canonical selection rate | GSC Page Indexing report | Day 14 | Fewer than 5 “User-declared canonical not selected” errors |
| Thin page count | GSC “Crawled – currently not indexed” | Days 7 and 14 | Under 200 and falling |
Performance and technical SEO are two layers: URLs, breadcrumbs, pagination and canonical fall under crawlability, while Core Web Vitals falls under usability. Clear both layers before you worry about content and backlinks. See Google SEO other articles in this section.
6. How robots, sitemaps and crawl budget work together
Beyond the four essentials, two switches get overlooked: robots.txt and your XML sitemap. They decide which URLs Google’s crawler spends its limited crawl budget on.
| Tools | Role | Typical setup |
|---|---|---|
| robots.txt Disallow | Block crawling of low-value URLs | Block cart, filter parameters and admin |
| robots.txt Allow | Explicitly allow important directories | Allow: /products/ /blog/ |
| XML sitemap | Tell Google which pages matter | Include only indexable pages, no noindex URLs |
| Sitemap index | Split when you have many pages | Separate products.xml, blog.xml and pages.xml |
A common mistake is putting noindex URLs in your sitemap. That confuses Google: you say don’t index this, but you also say the page matters. Do it right by including only indexable URLs in the sitemap. Noindex pages stay out of the sitemap, and you shouldn’t expect Google to crawl them.
Example: a client site had 5,000 product pages, but GSC showed Google crawling only 800 URLs a week, 600 of them eaten by cart and filter parameters. The fix was to Disallow /cart/ and any URL with ?filter= in robots.txt, freeing that crawl budget for product pages. Two weeks later, product page crawls rose from 200 to 650 a week and indexation went from 30% to 75%.
Crawl budget isn’t just a big-site concern. A B2B site with 200 products and 10 new blog posts a month will still see Google spend its budget in the wrong place if 5,000 thin pages get crawled. Technical SEO is really about concentrating that budget on the pages that matter.
One last common mistake: many people run a URL inspection tool once and think they’re done. In reality, you should check GSC’s “Page Indexing” report once a week. If the “Crawled – currently not indexed” count rises for two weeks straight, it means either new thin pages are being generated or something new broke in your canonical setup. Keep that number under 200; once it goes over, check robots, sitemap, and your most recent template change.
Multilingual sites also need to watch how hreflang and canonical work together. Each language page’s canonical should point to itself, and hreflang should list all language versions. Don’t point an English page’s canonical to a German page, and don’t let an English page’s hreflang point to a URL that doesn’t exist. Wrong hreflang tags are the number one cause of indexing problems on multilingual sites. See Hreflang for multilingual sites.
Technical SEO has a priority order: fix crawl errors first, then indexing errors, then rankings. A site that hasn’t even set up robots properly has no business talking about rankings. Use GSC’s “Coverage” report to clear errors to zero first, then check keyword positions in the “Performance” report. The order matters.
Here’s a final self-check list: before launch, run five template pages through the URL inspection tool and confirm HTTP 200, correct canonical, no breadcrumb markup errors, self-referencing pagination, and no accidental robots blocks. Pass all five and your technical SEO layer is delivered. The rest is content and backlinks.
FAQ
Hyphens or underscores in URLs?
Should pagination use rel=next/prev?
Should page 2 and beyond of a paginated series canonical to page 1?
Should canonical use a relative or absolute URL?
Can breadcrumbs just display on the page without structured data?
Can I fix a typo in a URL after it goes live?
Final thoughts
None of the four technical SEO basics is magic. They just let Google understand your site correctly. URLs define structure, breadcrumbs show the path, pagination drives indexing, and canonical tags remove duplicates. Get any one of the four wrong and your content won’t rank no matter how well it’s written.
Three steps to get started: this week, spot-check 5 template pages with the URL Inspection tool and confirm there are no dynamic parameters and no more than 3 levels deep; next week, fix your pagination and canonical templates and remove every rel=next/prev; in week three, check the GSC Indexing report to see whether “Crawled – currently not indexed” is under 200.
One line worth remembering: technical SEO isn’t a bonus, it’s the ticket in. Get these four things right and your content even gets a hearing.
