ABCDEF
1

The ULTIMATE 50-Point Technical SEO Audit Checklist

© 2023 Pam Ann Marketing, LLC DO NOT DISTRIBUTE.
2
CategoryItem #Best PracticesAdditional Information & Relevant Plugins/ToolsStatusNotes
3
DOMAIN & CMS1The website should be run by a well-supported open-source CMS, preferably WordPress. FAQ: Why We Prefer Open Source for SEO
4
2All content, including and especially the blog, should be hosted on the primary website domain (definitely NOT on a separate domain, and preferably not a subdomain.)
5
3Use of subdomains for any public-facing content should be avoided whenever possible. If unavoidable, minimize use of them as much as possible. However, we do prefer subdomains over separate domains for launching of new brands, ventures, etc.Subdomain Case Study
6
7
MOBILE4A responsive design should be applied to the site, so that the site renders in a device-specific manner dependent upon the specific device accessing the site. Separate mobile sites and/or separate mobile subdomains should be avoided.
8
5All pages should have the meta viewport tag configured as follows:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Most responsive themes have this in place already, but it's good to double-check it.
9
6No errors nor warnings should be found under the "Mobile Friendly" section of the "SEO" Lighthouse audit results on PageSpeed InsightsPageSpeed Insights
10
7"Cumulative Layout Shift" (which refers to how things jump around on the page while a mobile site is loading) should be 0PageSpeed Insights
11
8If the site utiltizes AMP (Accelerated Mobile Pages), ensure that there are no AMP errors in Search Console
12
8aIf the site utiltizes AMP (Accelerated Mobile Pages), ensure that Google Analytics tracking is functioning properly for AMP urls
13
14
CONTENT LAYOUT9Interstitial pop-ups should generally be avoided, especially on mobile. There is a specific penalty for pop-ups that take up more than 25% of the above-the-fold view or that "block the user from completing tasks." Please see Google’s documentation for more information. Google Webmaster Blog: Helping users easily access content on mobile
15
10All physical office locations should have their own individual pages with unique content as well as:
16
10aAn embedded Google map, pointing to the company’s verified Google My Business listing (pull embed code from that)
17
11Duplicate content should be avoided, both within the site (e.g. having two different URLs display the same content or having duplicate Title Tags, Meta Descriptions, and /or H1s), and externally (e.g. copying product descriptions from a manufacturer)Screaming Frog
18
12Ensure proper canonicalization of the various versions of the domain name (with www versus without, https versus http)Canonical domain check on httpstatus.io
19
13On WordPress sites, avoid duplicate content by setting media and attachment URL redirects to “Yes” in Yoast under SEO -> Search Appearance -> Media.Yoast
20
14Do not use “one page” designs.
21
15Implement a breadcrumb trail with Schema markup (included in WordPress SEO by Yoast plugin, but needs to be manually implemented). https://schema.org/BreadcrumbList

Yoast
22
23
AUTHORITY16Byline: All article content on the website (whether blog or knowledge center type articles) should show the author name on the byline, in the same way they use it elsewhere on the social web (i.e. if Joseph Smith usually goes by “Joe Smith Sr.” on social media, then the byline on their articles should be written that way). Author Bylines & Bio Page: Google’s “Authoritative User” patent and Quality Rater Guidelines both indicate that you should display author names on content, and make it easy to read a bio about the credibility of that author.

For YMYL content (“Your Money or Your Life,” i.e. medical, financial, and other life-impacting content), this is of utmost importance.
24
17Byline Link & Bio Page: The author name on the byline should click through to a bio about them, with the following properties and Schema markup. On WordPress, by default, the author name on the byline clicks through to the author archive (list of posts by that author.) To satisfy this requirement, either a bio can be added to the top of the author archive, or the byline can be modified to click through to a standard bio page instead
25
18The bio page for each author needs to have the following required information

1) First & Last Name
2) Headshot
3) Job Title
4) Description (mentioning as many credibility-boosting facts as possible, i.e. awards, certifications, licenses, college degrees, etc.)
5) Social Media Profile Links (At Least LinkedIn)
The bio page for each author should also have Person Schema markup (see Schema section)
26
27
SOCIAL19Make it VERY easy for visitors to find and follow your presence on social media sites (Facebook, Twitter, LinkedIn, YouTube, etc.) Place links in site footer or sidebar for each profile so that they’re accessible from all website pagesThere is a correlation between content that is shared a lot on social media and content that ranks high on search engines. Share your own content, and encourage others to share it as well, as much as possible.
28
19aMake it VERY easy for visitors to share your content on social media. Social share buttons for all major networks (Facebook, Twitter, LinkedIn) should be on every page.
29
19bMake it perfectly clear which buttons are for following vs. which ones are for sharing.
30
31
SPEED20Google PageSpeed Insights scores should be at or above 90 for both desktop and mobile.PageSpeed Insights
32
21GTMetrix PageSpeed and Yslow grades for Chrome/Desktop/United States should be no lower than B (ideally A).
(Sign up for a free GTMetrix account in order to change the settings to Chrome/Desktop/United States.)
33
22GTMetrix “Onload” and “Fully Loaded Time” for Chrome/Desktop/United States should be around 3 seconds or less.
34
23On PageSpeed Insights, server response time (TTFB) must be less than 600ms on both desktop and mobile.Test with PageSpeed Insights

Hosting company and hosting package can make a difference in server response time. Inexpensive hosting providers like Bluehost, GoDaddy, etc. are notorious for overloading their servers with too many clients hosted on a single web server. If you must use one of those hosts, consider upgrading to a VPS or dedicated server hosting package.

However, there are other factors involved in server response time as well - beyond the performance of the physical server. Please read Google’s documentation on this here: https://developers.google.com/speed/docs/insights/Server
35
CORE WEB VITALS24FCP, LCP, Total Blocking Time, and Speed Index should all be green (meaning they pass Google's current benchmarks)PageSpeed Insights
36
24aIn Search Console, there should be 0 URLs scored as "Poor" and as few as possible scored as "Need Improvement"Search Console
37
38
HTTP STATUS CODES25Broken links should be avoided whenever possible. Refer to our guidelines to correct broken links in order to preserve existing search engine rankings.

In the case of a website redesign, if URLs change, be sure to redirect ALL old URLs to their new equivalent URLs. To identify which URLs Google has indexed currently, refer to the “Pages” section of the “Index Coverage” report in Search Console.
404 Error & 301 Redirects Best Practices

Search Console

"Redirection" plugin by John Godley
39
26302 and 307 Redirects should generally be avoided. They are intended to be temporary and do not pass link equity.Screaming Frog
40
27Ensure that there aren't any 404s in the Search Console Indexing -> Pages report.Search Console
41
28Custom 404 error pages with “human-friendly” language and links in the body of the page (either a high-level sitemap, or a handful of the most frequently visited pages.)
42
43
SCRIPTING29Allow all site resources, such as CSS and JavaScript files, to be crawled. The Google indexing system renders webpages using the HTML of a page as well as its assets such as images, CSS, fonts, and JavaScript files. To see the page assets that Googlebot cannot crawl and to debug directives in your robots.txt file, use the URL Inspection Tool in Search Console to run a "Live Test". Click on "View Tested Page" then "More Info" then "Page resources." If there is anything there from the site's own domain that is labled "Googlebot blocked by robots.txt", then edit the robots.txt file to unblock those resources.
44
45
INDEXATION30iFramed text content should be avoided whenever possible. Screaming Frog
46
31Ensure that the XML sitemap is dynamic (self-updates)Handled by Yoast
47
31aEnsure that the XML sitemap has been submitted to Search Console and does not contain any errors.Search Console
48
31bEnsure that there aren't any sub-sitemaps in the sitemap_index.xml that contain unused thin content that was auto-generated by a theme or plugin, i.e. portfolio-item-sitemap.xml, portfolio-category-sitemap.xml, portfolio-tag-sitemap.xml. (Older "Last Modified" dates can be a clue that a post type is no longer used, or never used)Setting post types and/or taxonomies to "No" under "Show in search results" in the Search Appearance section of Yoast will remove them from the XML sitemap index and will mark the individual posts as "noindex", which should be sufficient to remove them from search engines; however, if possible, it's best to delete such content entirely.
49
31cEnsure that page-sitemap.xml does not contain "thank you" (form submission confirmation pages) or any other content that shouldn't be public.
50
32HTML sitemap page that is dynamically generated/updated. WP Sitemap Page by Tony Archambeau generates a shortcode that can be used for this purpose
51
32aLink to the HTML sitemap page from the footer of the website.
52
32bEnsure that the HTML sitemap does not contain "thank you" (form submission confirmation pages) or any other content that shouldn't be public.
53
33Robots.txt file that includes the following:

User-agent: *

Allow: /

Sitemap: https://yourdomain.com/your_xml_sitemap_location.xml

ENSURE that the following directive, which blocks the whole site from search engines, is NOT present upon launch of a live/production site.

Disallow: /
54
34The meta robots “noindex” tag should only be used on content that should never show up in search engines, such as "thank you" form confirmation pages (it is a best practice to use the noindex tag on those).

For WordPress sites, ensure that the Search Engine Visibility box (in WordPress "Reading" settings), is UNCHECKED on all live production sites.

****FOR REDESIGNS, ENSURE THAT THE SEARCH ENGINE VISIBILITY BOX IS UNCHECKED THE MOMENT A SITE IS LAUNCHED FROM DEVELOPMENT INTO PRODUCTION.****
55
35Automatic insertion of the canonical tag (taken care of by Yoast plugin), unless it is an e-commerce site with products that have multiple variants, such as color or size. In that case, a manual assessment of the best way to canonicalize that particular site should be performed.Yoast
56
36Blog articles should have dates on the byline.
57
37In addition to the original post date, also include a “last updated” field to pull in the date the post was last modified. WP Last Modified Info by Sayan Datta
58
38If there is a “Resource/Knowledge Center” or information library of some sort with more “evergreen” (timeless) content, those articles should have an author name on the byline, but not a date.
59
39Ensure that there are no security issues or manual actions listed in Search Console.Search Console
60
40Security hardening tactics: Follow best practices for implementation of website security measures such as not using “admin” as a user login name, implementation of a firewall, automatic malware monitoring, etc.Google does not want to index sites that have malware on them, and instances of site hacks are at an all time high (even for small business websites), so it is very important to have security best practices in place.
61
41Regularly scheduled CMS updates: CMS systems like WordPress need to be updated regularly (preferably weekly) so that both the core application and any plugins or add-ons consistently have the latest security fixes applied. Since updates can occasionally conflict, be sure to make a backup prior to implementing each set of updates.
62
63
SCHEMASCHEMA IMPLEMENTATION GUIDANCE
64
42Company names, addresses, and phone numbers should be marked up with schema code per http://schema.org/Organization for national businesses, OR http://schema.org/LocalBusinessIf the company desires to get found by users (or only serves customers) in a certain geographical region, use LocalBusiness. Otherwise, use Organization.
If using LocalBusiness, check under “More specific types” at the bottom of https://schema.org/LocalBusiness to see if there’s a specific subtype that matches the organization. If so, use that instead of LocalBusiness.

See the Schema Implementation Guidance document for required fields.
65
42aVideo schema should be utilized on all video content. See http://schema.org/VideoObject Required properties: name, description, thumbnailUrl, uploadDate

WP YouTube Lyte by Frank Goossens is a plugin that will automatically generate Schema for embedded YouTube videos (but it requires an API key for pulling that data directly from the YouTube channel)
66
42bArticle markup should be added to article content (blog articles, knowledge/resource center articles, etc.) See https://schema.org/Article
Handled by Yoast plugin
67
42cImplement Person markup on the author bio page (see “Authority” section of this doc). See https://schema.org/Person

See the Schema Implementation Guidance document for required fields
See the Schema Implementation Guidance document for required fields
68
42dProduct schema is crucial for e-commerce sites. Implement as many properties from http://schema.org/Product as possible (but do not add “Product” schema to product category pages. Only add it to individual product pages.)

Also include Offer, Review, and AggregateRating properties for each product.
69
42eImplement as many other types of Schema markup as is applicable and feasible (i.e. recipes, events, FAQs, etc.)
70
42fEnsure that all Schema markup validates with the Schema Markup Validator and Rich Results Testing ToolSchema Markup Testing Tools
71
72
URLs43Ensure that the site has a valid SSL certificate.In order to satisfy Google’s requirements, SSL certificates must come from a third-party certificate authority (meaning they cannot be self-signed).
73
44Avoid redirect chains. Redirects should NOT look like this: http://sitename.com → http://www.sitename.com → https://www.sitename.com

Screaming Frog
74
45Use of search engine friendly URLs (i.e. no parameters, underscores, file extensions).Screaming Frog
75
76
TITLE, META, and HEADER TAGS46Title tags should contain carefully-chosen often-searched keywords, yet read naturally (shouldn’t sound “stuffed.”) Check with Screaming Frog

NOTE: If we have performed keyword mapping for your site, refer to your Keyword Mapping Spreadsheet (a.k.a. "Flowsheet") for what keywords to include in title tags on keyword-mapped pages.
77
47No ancillary information such as site title or company name should be appended to the page title in the title tag.Check with Screaming Frog

Remove "Site Title" in Yoast Search Appearance settings.
78
48Each page should have exactly ONE H1 tag, as that tells the search engine what the most important heading on the page is. Add a single H1 tag to pages that are missing H1 tags completely, and resolve multiples on pages that have more than one H1 tag.Check with Screaming Frog
79
48aH1 tags should contain carefully-chosen often-searched keywords, yet read naturally (shouldn’t sound “stuffed.”) Check with Screaming Frog

NOTE: If we have performed keyword mapping for your site, refer to your Keyword Mapping Spreadsheet (a.k.a. "Flowsheet") for what keywords to include in H1 tags on keyword-mapped pages.
80
48bOn the blog index page (the page that shows the whole list of articles), and the index pages for any custom post types, the article titles should be enclosed in H2 tags, and there should be one main title for that page enclosed in an H1.
81
48cThe blog index page should show excerpts of articles, not full text.
82
48dBlog category pages should also have a keyword-opmimized H1 and (ideally) paragraph copy.
83
49Meta descriptions should be present for key pages.

The meta description is displayed on Google search results and is extremely important in influencing the searcher’s decision to click on your page.
Can be configured via the Yoast plugin settings on each page.

Make sure to write a short, yet compelling description that will entice searchers to visit your website. This should be a one-sentence summary of the content, 150 to 170 characters, that contains the page’s primary key phrase.

NOTE: If we have performed keyword mapping for your site, refer to your Keyword Mapping Spreadsheet (a.k.a. "Flowsheet") for what keywords to include in meta description tags on keyword-mapped pages.
84
50Images should contain optimized alt text.
Check with Screaming Frog

Image alt tags should be added to each image on the site, with a short and accurate description of what is represented in the image.

One of the main images for the page/article should also use the primary key phrase(s) assigned to that page (if it is possible to incorporate it in an accurate description of the image.)
85
86
TRACKING51Google Analytics code (or Google Tag Manager* code) should appear on every page.

*We strongly prefer the implementation of Google Tag Manager (and deployment of GA4 tracking through there) as opposed to onsite tracking via gtag scripts
-Check using Screaming Frog custom extraction (to confirm presence of tracking code on all URLs)

-Test tag implementation with https://tagassistant.google.com/
87
52A Google Search Console "Domain Property" should be establishedGo into Search Console, click find the website in the upper right, and ensure that a "domain property" exists for it.

https://pamannmarketing.com/resources/how-to-set-up-a-domain-property-in-search-console/
88
53Each call-to-action on the site should be configured to be tracked in Google Analytics as an event.Google Analytics
&
Google Tag Manager
89
54Each call-to-action that results in a user providing contact information should be tracked in Google Analytics as a conversion.
90
55If email addresses or vcards are included as clickable links or buttons, these should be configured as Google Analytics events as well; however, we do not recommend the use of “mailto” links on email addresses for trackability, usability, and spam purposes.
91
56Click-to-call links should be implemented on all phone numbers and tracked in Google Analytics.
92
57If live chat is utilized, that should be tracked in Google Analytics as well.
93
58For e-commerce stores, Google Analytics revenue and transaction tracking is a MUST!WooCommerce Google Analytics Pro extension by SkyVerge
94
95
Blue highlight on item # = Visual/design impact