how to perform a technical seo audit - #sascon
TRANSCRIPT
@badams #SAScon
How to perform aTechnical SEO audit
Barry Adams16 June 2016
@badams #SAScon
Barry Adams
• Doing SEO since 1998• Founder of Polemic Digital• Senior Editor at State of Digital
@badams #SAScon
Audit Process:
1. Crawl Optimisation
2. Index Optimisation
3. International SEO
4. Miscellaneous Elements
@badams #SAScon
My Technical SEO Tools
• Google Search Console
• DeepCrawl
• Screaming Frog
• WebPagetest.org
• Structured Data Testing Tool
@badams #SAScon
Excel Is Your Friend
@badams #SAScon
Start with a crawl
@badams #SAScon
1. Crawl Optimisation
@badams #SAScon
What is Crawl Optimisation?
Ensuring search engine spiders waste as little time as possible crawling the right URLs on your site.
If you waste crawl budget, the right pages are unlikely to be crawled & indexed.
@badams #SAScon
Google’s Crawl Sources
• Site crawl• XML Sitemaps• Inbound links
• DNS records• Domain registrations• Browsing data
@badams #SAScon
Identifying Crawl Waste
@badams #SAScon
Identifying Crawl Waste
@badams #SAScon
Identifying Crawl Waste
@badams #SAScon
Crawl Waste
• Check URLs in XML Sitemap
@badams #SAScon
Optimise XML Sitemaps• Check if the sitemap contains final URLs only
• Identify 301-redirects or other non-200 status codes
• Check usage of multiple sitemaps
@badams #SAScon
Crawl Waste
• Paginated Listings• Faceted Navigation
http://website.com/jewellery/?page=2&cat=5&color=silver&style=glass&collection=autumnsort=a&…
@badams #SAScon
Optimisation of Paginated Listings
• Check number of items on a single page
• Check implementation of rel=prev/next pagination meta tags
• Check blocking of sorting parameters in robots.txt Disallow: /*?sort=*
@badams #SAScon
Optimisation of Faceted Navigation
• Decide which facets have SEO value Recommend creating static pages for these
• All other facets: robots.txt disallow ‘rel=nofollow’ on facet links
@badams #SAScon
Check Configuration of URL Parameters
@badams #SAScon
Crawl Waste
• Check crawling/indexing of internal site search results
@badams #SAScon
Block Internal Site Search Pages
• Block in robots.txt
User-agent: *Disallow: /SearchResults.aspxDisallow: /*query=*Disallow: /*s=*
@badams #SAScon
Crawl Waste
• Check internal redirects
@badams #SAScon
Minimise Internal Redirects
• Find redirects with Screaming Frog• Internal links should all be 200 OK• Flat site structure
@badams #SAScon
Check HTTP Status Codes
The most important ones:
200 OK: everything is fine, here is your content
404 Not Found: the page you are trying to view doesn’t exist
301 Permanent Redirect: the page you are trying to view has moved permanently, here’s the new URL
302 Temporary Redirect: the page you are trying to view has moved temporarily, here is the new URL
500 Server Error: there’s been a massive fuck up, I can’t serve you this page
@badams #SAScon
Check HTTP Status Codes
Less common:
410 Gone: This page is gone and there is no alternative version. Useful for getting a page out of Google’s index quickly
503 Service Unavailable: The site is temporarily down. Use this when your server is having issues, as it will not impact rankings
@badams #SAScon
Check Soft 404s
When Google detects a Not Found error page but the HTTP status code is 200 OK.
@badams #SAScon
Crawl Waste• Check URL Duplication
http://website.com
http://www.website.com
http://www.website.com/index.php
http://website.com/index.php
http://www.website.com/category
http://www.website.com/category/
http://website.com/category
http://website.com/category/
+ httpS://
@badams #SAScon
Crawl Waste
• Canonicalised Pages
@badams #SAScon
Use Canonicals Wisely• “rel=canonical” is primarily for index issues
It is not a fix for crawl waste
Search engines need to see the canonical tag before they can act on it
Ergo, pages need to be crawled before rel=canonical has any effect
Ditto with meta noindex tags
@badams #SAScon
DON’T use Canonicals for…
• Faceted navigation
• Pagination & sorting
• Site Search pages
• Avoidable URL duplication
@badams #SAScon
OK to use Canonicals for…
• Separate mobile URLs
• Session-specific URL parameters
• Content syndication
• Unavoidable content duplication
@badams #SAScon
Crawl Waste
• Slow loading pages
@badams #SAScon
Load Speed Optimisation• Time to First Byte• Lightweight pages• Caching• Compression
@badams #SAScon
2. Index Optimisation
@badams #SAScon
Index Optimisation
• Ensure Google indexes & ranks the right pages
• Minimise indexing of zero-value pages
• Optimise all technical relevancy factors
@badams #SAScon
Google Search Console
@badams #SAScon
Human-Readable URLs
Bad URL:http://domain.com/default.aspx?p=43351&s=abx&ref=ps-2301-g&…
Good URL:http://domain.com/safety-boots/caterpillar/steel-toe-safety-boots.html
• Don’t overdo it – no keyword stuffing• Use a logical structure that makes sense to humans
@badams #SAScon
Hierarchical URLsHomepage
Category 1 Category 2
Subcategory 2.1
Subcategory 2.3
Subcategory 2.2
Product 2.2 A
Product 2.2 B
Product 2.2 C
Category 3
http://domain.com/
http://domain.com/category/
http://domain.com/category/subcategory/
http://domain.com/category/subcategory/productA.html
http://domain.com/category/subcategory/productB.html
http://domain.com/category/subcategory/productC.html
@badams #SAScon
Always use Canonicals
• Duplicate URLs can originate from various sources…
http://www.website.com/page1.html
http://www.website.com/page1.html?utm_source=buffer&utm_medium=social&utm_campaign=seo
@badams #SAScon
Use Full URLs in Canonicals
<link rel=“canonical” href=“/page1.html”>
<link rel=“canonical” href=“www.website.com/page1.html”>
<link rel=“canonical” href=“https://www.website.com/page1.html”>
@badams #SAScon
Meta Robots Tag<meta name=“robots” content=“…”>
• ‘noindex’: don’t index this page• ‘nofollow’: don’t follow any links on this page• ‘nosnippet’: don’t show a search snippet for this page• ‘noodp’: don’t use the ODP/DMOZ description for this page• ‘noarchive’: don’t show a Cached link for this page• ‘unavailable_after:[date]’: stop crawling and indexing of this page after this date• ‘noimageindex’: don’t use this page as the referring page for an image that
appears in Google search results• ‘none’: same as ‘noindex, nofollow’
@badams #SAScon
Code Bloat
@badams #SAScon
Structured Data
@badams #SAScon
Structured Data
• Schema.org markup
@badams #SAScon
JSON-LD Markup
• In the <head> sectionSeparate from body codeEasier to implement
@badams #SAScon
Google Search Console
@badams #SAScon
Structured Data Testing Toolhttps://search.google.com/structured-data/testing-tool/
@badams #SAScon
Expired Pages
• Google’s advice: serve 404 Not Found Downside: potential loss of link value
Source: https://www.youtube.com/watch?v=9tz7Eexwp_A
@badams #SAScon
My Advice
• Keep the page up• Recommend alternative
products
@badams #SAScon
High-churn Listings Sites
• Pages with a limited lifespan, potentially thousands of new pages every week Online auctions / ‘… for sale’ classified sites / Job listings / etc…
301-redirect old URL to most relevant new URL Minimum 180 days Serve 410 (or 404) on old URL after 180 days
@badams #SAScon
3. International SEO
@badams #SAScon
International Domains
• Check if they’re using the right TLD; Generic TLDs: .com, .org, .net, .info, … ccTLDs: .co.uk, .ie, .de, .fr, .it, .nl, …
• Generic domains can be geo-targeted with Google Search Console
• Country-code domains will be assumed to target that countryIt’s almost impossible to get a .ie website to rank in google.co.uk
@badams #SAScon
Google Search Console
@badams #SAScon
Website Structure
• Subdirectories: website.com/gb website.com/it
• Subdomains: gb.website.com it.website.com
Verify separately in Google Search Console and set the geo-target
@badams #SAScon
Country & Language
www.website.com/be-fr/
www.website.com/be-nl/
www.website.com/be-de/
Use official ISO country & language codes where possible
@badams #SAScon
HTML Language Tag
• Use the ‘lang’ attribute:
• Don’t forget to change when you launch your international version!
@badams #SAScon
HREFLANG Meta Tags
<link rel="alternate" href="http://example.com/en-ie" hreflang="en-ie" />
<link rel="alternate" href="http://example.com/en-ca" hreflang="en-ca" />
<link rel="alternate" href="http://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="http://example.com/en" hreflang="en" />
<link rel="alternate" href="http://example.com/" hreflang="x-default" />
More info: https://support.google.com/webmasters/answer/189077
@badams #SAScon
Google Search Console
@badams #SAScon
IP Redirects
• Google primarily crawls from US-based IP addresses
• If a site uses IP address redirects, make an exception for all ‘Googlebot’ user-agents
@badams #SAScon
4. MiscellaneousElements
@badams #SAScon
Mobile UX
@badams #SAScon
Mobile UX
@badams #SAScon
Rel=Alternate Meta Tag
Desktop page:<link rel="alternate" media="only screen and (max-width: 640px)" href="http://m.example.com/page1.html">
Mobile page:<link rel="canonical" href="http://www.example.com/page1.html">
@badams #SAScon
Site Security
@badams #SAScon
Site Security
@badams #SAScon
SSL Certificate Quality
https://www.ssllabs.com/ssltest/
@badams #SAScon
Summarised
@badams #SAScon
Technical SEO Audits Summarised:• Identify Crawl Waste:
XML Sitemaps Sorted & Paginated Listings Duplicate URLs Load Speed
• Check HTTP Status Codes
• Review On-Site Technical SEO: URLs Code Quality Structured Data
• Minimise indexing of zero-value pages
• Check implementation of international SEO: TLDs & IP Redirects Subdomain / Subfolders HREFLANG meta tags
• Check miscellaneous elements: Mobile UX Security SSL
@badams #SAScon
Create Your Report
@badams #SAScon
Create Your Report
• Make it actionableGive examples
• Explain WHY something needs changedSometimes devs can come up with a more elegant solution
• PrioritiseProvide a recommended timeline of changes
@badams #SAScon
[email protected]@polemicdigital@badams