The checklist your staging environment can't test
You've run your Lighthouse audit. Your unit tests pass. Your staging environment looks great. But none of that catches the SEO issues that only matter in production - the ones that determine whether Google can actually find, crawl, and index your site.
This checklist covers every SEO check you should run before pushing to production. It's organized by priority: critical issues first (things that block indexing entirely), then warnings (things that hurt rankings), then nice-to-haves (things that give you an edge).
Critical: Fix these or don't launch
These issues will prevent Google from indexing your site. If any of these are present, your organic traffic will be zero.
No noindex tags in production
Check every page for <meta name="robots" content="noindex"> tags and X-Robots-Tag: noindex HTTP headers. These are common on staging environments and frequently ship to production by accident.
# Quick check: curl your production URL and look for noindex
curl -s https://yourdomain.com | grep -i "noindex"
curl -sI https://yourdomain.com | grep -i "x-robots-tag"
robots.txt allows crawling
Visit https://yourdomain.com/robots.txt and verify it doesn't contain Disallow: /. Also check that it doesn't accidentally block important directories like /blog/ or /products/.
# Good: allows all crawling
User-agent: *
Disallow:
Sitemap: https://yourdomain.com/sitemap.xml
Robots.txt Validator
Validate your robots.txt file for syntax errors and blocking rules.
sitemap.xml exists and is valid
Your sitemap should be accessible at https://yourdomain.com/sitemap.xml, contain only production URLs (not staging), and every URL in it should return a 200 status code.
- [ ] Sitemap returns 200
- [ ] All URLs use the production domain
- [ ] No URLs return 404
- [ ] Sitemap is referenced in robots.txt
- [ ] XML is well-formed (no syntax errors)
Sitemap Validator
Validate your sitemap.xml file format and URL count.
No mixed content
If your site is served over HTTPS (it should be), make sure there are no resources loaded over HTTP. Mixed content triggers browser warnings and can affect trust signals.
SSL certificate is valid
Your HTTPS certificate should be valid, not expired, and cover all subdomains you're using. Most hosting platforms handle this automatically, but verify it after DNS changes.
Warnings: Fix before you expect traffic
These won't block indexing, but they'll hurt your rankings and click-through rates.
Every page has a unique title tag
Each page needs a unique <title> between 50-60 characters. Duplicate titles across pages tell Google your content is redundant. Missing titles mean Google will generate one for you - and it usually won't be good.
Every page has a meta description
Write a unique description of 150-160 characters for each page. While not a direct ranking factor, descriptions control your search snippet and directly impact click-through rates.
<meta
name="description"
content="Run 40+ SEO checks on your site in 30 seconds.
Catch noindex tags, broken robots.txt, missing meta tags,
and more before launch."
/>
Meta Tag Checker
Check your page title, meta description, viewport, charset, and robots tags.
Canonical URLs are set
Every page should have a <link rel="canonical"> tag pointing to its preferred URL. This prevents duplicate content issues from trailing slashes, query parameters, or www vs non-www variations.
<link rel="canonical" href="https://yourdomain.com/pricing" />
Viewport meta tag is correct
Your viewport tag should be <meta name="viewport" content="width=device-width, initial-scale=1">. Don't add maximum-scale=1 or user-scalable=no - these break pinch-to-zoom and fail accessibility checks.
Heading structure is logical
Every page should have exactly one <h1> tag and headings that follow a logical hierarchy without skipping levels (e.g., don't jump from <h2> to <h4>).
Heading Structure Checker
Analyze your H1-H6 heading hierarchy for SEO best practices.
Images have alt text
Every meaningful image should have descriptive alt text. This helps with image search ranking and is required for accessibility compliance. Decorative images should have alt="".
Images have explicit dimensions
Add width and height attributes to images to prevent layout shifts during page load. This directly affects Core Web Vitals (CLS score), which is a Google ranking factor.
<img
src="/hero.png"
alt="Dashboard screenshot"
width="1200"
height="630"
/>
Nice-to-have: The competitive edge
These won't make or break your launch, but they set you up for better long-term SEO performance.
Open Graph tags on every page
Add og:title, og:description, og:image, and og:url tags to every page. This controls how your links look when shared on social media and messaging apps.
Open Graph Tag Preview
Check your Open Graph and Twitter Card tags for social media sharing.
Twitter Card tags
Add Twitter-specific meta tags so your links look good on X/Twitter:
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Your Page Title" />
<meta name="twitter:description" content="Your description." />
<meta name="twitter:image" content="https://yourdomain.com/og.png" />
Security headers
While not directly an SEO factor, security headers like Strict-Transport-Security, X-Content-Type-Options, and Content-Security-Policy signal a well-maintained site and protect your users.
Structured data (JSON-LD)
Add schema.org structured data for your content type - Article for blog posts, Product for e-commerce, Organization for your homepage. This can unlock rich snippets in search results.
favicon.ico exists
A missing favicon triggers 404 errors on every page load. It's a small thing, but it shows up in browser tabs, bookmarks, and some search results.
The one-command version
Going through this checklist manually takes time. If you want to check everything at once, run your site through LintPage. It covers all the critical and warning items above - plus additional checks for HTTP headers, content quality, and performance - in a single 30-second scan.
Sign up for free and run your first audit before your next deploy.