SEO Audit Checklist: Complete Guide to Auditing Your Website

Learn how to perform a comprehensive SEO audit that identifies problems and opportunities. This step-by-step checklist covers technical SEO, on-page optimization, content, and backlinks.

Introduction: Why SEO Audits Matter

An SEO audit is a health check for your website’s search performance. It reveals what’s working, what’s broken, and where opportunities lie.

Regular audits are essential because:

  • Google’s algorithm constantly changes
  • Websites accumulate technical debt
  • Competitors evolve their strategies
  • New content creates new issues
  • Performance degrades over time

Most businesses either never audit their SEO or only do so when traffic crashes. By then, months of potential revenue have been lost.

This guide provides a comprehensive checklist for auditing your website’s SEO, finding issues, and prioritizing fixes.


SEO Audit Overview

When to Audit

Minimum frequency: Annually for established sites Recommended: Quarterly for active sites Critical times: Before site redesign, after traffic drops, when changing strategy

Tools You’ll Need

Free tools:

  • Google Search Console
  • Google Analytics 4
  • Google PageSpeed Insights
  • Bing Webmaster Tools
  • Screaming Frog (free up to 500 URLs)

Paid tools (optional but helpful):

  • Ahrefs, SEMrush, or Moz for backlinks and keywords
  • Screaming Frog (unlimited)
  • Sitebulb
  • DeepCrawl

Audit Components

  1. Technical SEO
  2. On-page SEO
  3. Content quality
  4. User experience
  5. Backlink profile
  6. Competitive analysis

Technical SEO Audit

Crawlability and Indexability

Check robots.txt:

  • Navigate to yoursite.com/robots.txt
  • Ensure you’re not blocking important pages
  • Verify search engines can access CSS/JS
  • Check for outdated disallow rules

Common mistakes:

# BAD - blocks entire site
User-agent: *
Disallow: /

# GOOD - blocks admin only
User-agent: *
Disallow: /admin/

Check XML sitemap:

  • Verify sitemap exists at yoursite.com/sitemap.xml
  • All important pages included
  • No redirects or 404s in sitemap
  • Submitted to Search Console
  • Updated regularly (dynamic for large sites)

Index coverage:

  • Google Search Console > Index > Coverage
  • Review indexed pages vs. submitted
  • Identify excluded pages and why
  • Fix errors (404s, server errors, redirect errors)
  • Address warnings

Canonical tags:

  • Every page should have canonical tag
  • Self-referencing canonical on unique pages
  • Points to preferred version of duplicate content
  • HTTPS canonical, not HTTP
  • No redirect chains in canonicals

Meta robots tags:

  • Check for unintended noindex tags
  • Verify important pages are indexable
  • Review nofollow usage
  • Check for conflicting directives

Site Architecture

URL structure:

  • Clean, descriptive URLs
  • Logical hierarchy
  • Hyphens, not underscores
  • Lowercase only
  • No unnecessary parameters

Good: yoursite.com/blog/seo-audit-guide Bad: yoursite.com/page.php?id=123&cat=blog

Internal linking:

  • Logical link structure
  • Important pages well-linked
  • Reasonable link depth (max 3 clicks from home)
  • No orphan pages (pages with no internal links)
  • Descriptive anchor text

Site depth:

  • Important pages within 3 clicks of homepage
  • Flat structure for small sites
  • Organized hierarchy for large sites

Pagination and faceted navigation:

  • Proper rel=”next” and rel=”prev” (if used)
  • Canonical strategy for filters
  • Parameter handling in Search Console
  • Avoid duplicate content from sorting/filtering

Mobile Optimization

Mobile-friendliness test:

  • Use Google’s Mobile-Friendly Test
  • Verify responsive design
  • Check tap targets (minimum 48px)
  • Ensure text is readable without zooming
  • No horizontal scrolling

Mobile usability issues (Search Console):

  • Review Mobile Usability report
  • Fix errors (clickable elements too close, text too small, viewport not set)
  • Test on actual mobile devices

Mobile-first indexing:

  • Ensure mobile and desktop content parity
  • Structured data on mobile version
  • Meta tags on mobile version
  • Same internal links on mobile

Page Speed

Core Web Vitals:

LCP (Largest Contentful Paint):

  • Target: <2.5 seconds
  • Measures loading performance
  • Optimize images and server response

FID (First Input Delay) / INP (Interaction to Next Paint):

  • Target: <100ms (FID) / <200ms (INP)
  • Measures interactivity
  • Minimize JavaScript execution

CLS (Cumulative Layout Shift):

  • Target: <0.1
  • Measures visual stability
  • Set image dimensions, avoid injected content

Tools:

  • PageSpeed Insights
  • Search Console > Core Web Vitals report
  • Chrome DevTools > Lighthouse

Speed optimization priorities:

  1. Optimize images (compress, modern formats, lazy load)
  2. Minimize CSS/JavaScript
  3. Enable compression (gzip/brotli)
  4. Leverage browser caching
  5. Use CDN for static assets
  6. Reduce server response time
  7. Eliminate render-blocking resources

HTTPS and Security

SSL certificate:

  • Entire site on HTTPS
  • Valid SSL certificate
  • No mixed content warnings
  • HTTPS canonical tags
  • 301 redirects from HTTP to HTTPS

Security headers:

  • X-Content-Type-Options
  • X-Frame-Options
  • Strict-Transport-Security
  • Content-Security-Policy (optional but recommended)

Structured Data

Schema markup audit:

  • Identify pages that should have schema
  • Verify implementation correctness
  • Test with Rich Results Test
  • Check for errors in Search Console
  • Ensure schema matches visible content

Common schema types:

  • Organization
  • Article
  • Product
  • Review/Rating
  • FAQ
  • How-to
  • Local Business
  • Breadcrumb

Validation:

  • Use Google’s Rich Results Test
  • Check Search Console for structured data errors
  • Verify rich snippets appearing in search results

Duplicate Content

Find duplicates:

  • Use “site:” search with quotes around unique content
  • Check for www vs. non-www issues
  • HTTP vs. HTTPS duplicates
  • Trailing slash inconsistencies
  • Parameter variations

Solutions:

  • 301 redirects to preferred version
  • Canonical tags
  • Noindex on duplicate pages
  • Parameter handling in Search Console

Crawl Errors

404 errors:

  • Review in Search Console
  • Fix important broken links
  • 301 redirect old URLs with backlinks
  • Custom 404 page with helpful navigation

Server errors (5xx):

  • Identify and fix immediately
  • Check server logs
  • Ensure sufficient server resources
  • Monitor uptime

Redirect chains and loops:

  • Identify with Screaming Frog
  • Update to direct redirects
  • Fix redirect loops immediately

On-Page SEO Audit

Title Tags

Checklist:

  • [ ] Every page has unique title
  • [ ] Length: 50-60 characters
  • [ ] Target keyword included (front-loaded)
  • [ ] Compelling and click-worthy
  • [ ] Matches page content
  • [ ] Brand name included (usually at end)
  • [ ] No keyword stuffing

Title tag formula: Primary Keyword – Secondary Keyword | Brand Name

Check for issues:

  • Missing titles
  • Duplicate titles
  • Too long (truncated in SERPs)
  • Too short (wasted opportunity)
  • Generic titles (“Home”, “Services”)

Meta Descriptions

Checklist:

  • [ ] Every important page has description
  • [ ] Length: 150-160 characters
  • [ ] Includes target keyword naturally
  • [ ] Compelling call-to-action
  • [ ] Accurately describes page
  • [ ] Unique per page

Common issues:

  • Missing descriptions
  • Duplicate descriptions
  • Too long or too short
  • Generic or auto-generated
  • Keyword stuffing

Header Tags (H1-H6)

H1 tags:

  • [ ] One H1 per page
  • [ ] Includes target keyword
  • [ ] Describes page topic
  • [ ] Unique per page
  • [ ] Similar but not identical to title

Header hierarchy:

  • [ ] Logical structure (H1 > H2 > H3)
  • [ ] No skipped levels
  • [ ] Keywords in headers naturally
  • [ ] Descriptive and useful

Image Optimization

For each image:

  • [ ] Descriptive file names (seo-audit-checklist.jpg not IMG_1234.jpg)
  • [ ] Alt text describing image
  • [ ] Appropriate file format (WebP > JPEG > PNG)
  • [ ] Compressed for web
  • [ ] Appropriate dimensions
  • [ ] Lazy loading for below-fold images
  • [ ] Responsive images (srcset)

Image audit checklist:

  • Missing alt text
  • Generic alt text (“image”, “photo”)
  • Oversized images
  • Unoptimized formats
  • Missing images (broken src)

Content Quality

Length and depth:

  • [ ] Sufficient content for topic (typically 1,500+ words for competitive topics)
  • [ ] Comprehensive coverage
  • [ ] Original content (not duplicate)
  • [ ] Value to users

Keyword optimization:

  • [ ] Target keyword in first 100 words
  • [ ] Natural keyword usage throughout
  • [ ] Related terms and synonyms
  • [ ] No keyword stuffing
  • [ ] LSI keywords included

Readability:

  • [ ] Short paragraphs (2-4 sentences)
  • [ ] Subheadings for scannability
  • [ ] Bullet points and lists
  • [ ] Readable font size
  • [ ] Adequate white space

Freshness:

  • [ ] Content is current and accurate
  • [ ] Outdated content updated or removed
  • [ ] Dates displayed where relevant
  • [ ] Regular content updates

Internal Linking

Audit focus:

  • [ ] Every page linked from at least one other page
  • [ ] Important pages have more internal links
  • [ ] Descriptive anchor text (not “click here”)
  • [ ] Reasonable number of links per page
  • [ ] Links to related content
  • [ ] No broken internal links

URL Optimization

Best practices:

  • [ ] Descriptive URLs
  • [ ] Include target keyword
  • [ ] Short and clean
  • [ ] Hyphens between words
  • [ ] Lowercase
  • [ ] No stop words (the, and, of) unless necessary
  • [ ] Match content hierarchy

Content Audit

Content Inventory

Catalog all content:

  • URL
  • Title
  • Topic/category
  • Publish date
  • Last updated
  • Word count
  • Traffic (last 6 months)
  • Conversions
  • Backlinks

Content Performance Analysis

Identify:

  • Top performers (keep, update, expand)
  • Declining performers (refresh or retire)
  • Non-performers (improve or delete)
  • Keyword cannibalization (multiple pages targeting same keyword)

Content Quality Score

Rate each piece on:

  • Accuracy and freshness (1-10)
  • Comprehensiveness (1-10)
  • Readability (1-10)
  • Engagement metrics (1-10)
  • SEO optimization (1-10)

Content Gaps

Find opportunities:

  • Keywords competitors rank for that you don’t
  • Questions your audience asks
  • Topics your competitors cover that you don’t
  • New trends in your industry
  • Seasonal content opportunities

Thin Content

Identify and fix:

  • Pages with <300 words
  • Duplicate or near-duplicate content
  • Auto-generated content
  • Scraped content
  • Doorway pages
  • Pages with no unique value

Solutions:

  • Expand with valuable content
  • Consolidate similar pages
  • Noindex or delete
  • 301 redirect to better pages

User Experience Audit

Navigation

Checklist:

  • [ ] Clear main navigation
  • [ ] Logical menu structure
  • [ ] Important pages easily accessible
  • [ ] Breadcrumbs on deep pages
  • [ ] Search functionality
  • [ ] Mobile-friendly menu

Site Search

If you have site search:

  • [ ] Returns relevant results
  • [ ] Handles misspellings
  • [ ] Shows results count
  • [ ] Filters/refinement options
  • [ ] Analytics tracking

Engagement Metrics

Analyze in GA4:

  • Bounce rate (high may indicate UX issues)
  • Time on page
  • Pages per session
  • Scroll depth
  • Click tracking on CTAs

Red flags:

  • Very high bounce rates (>80%)
  • Very short time on page (<30 seconds for content)
  • Low pages per session (<2)
  • High exit rates on key pages

Conversion Elements

For conversion pages:

  • [ ] Clear value proposition
  • [ ] Prominent CTA
  • [ ] Trust signals (reviews, testimonials, badges)
  • [ ] Contact information visible
  • [ ] Forms optimized (minimal fields)
  • [ ] No distractions

Backlink Profile Audit

Backlink Metrics

Overall health:

  • Total backlinks
  • Referring domains
  • Domain Authority/Rating
  • Link growth over time
  • Link velocity

Use Ahrefs, SEMrush, or Moz to analyze.

Link Quality Assessment

Evaluate each linking domain:

  • Domain authority/rating
  • Relevance to your industry
  • Traffic to site
  • Spam score
  • Link placement (contextual vs. sidebar/footer)

Toxic Links

Identify problematic links:

  • Spammy domains
  • Irrelevant sites
  • Link farms
  • PBNs (Private Blog Networks)
  • Unnatural anchor text patterns
  • Site-wide links from low-quality sites

Action:

  • Attempt removal (contact webmaster)
  • Disavow file for toxic links that can’t be removed

Anchor Text Analysis

Review anchor text distribution:

  • Branded (company name) – should be majority
  • Naked URLs (yoursite.com)
  • Generic (“click here”, “website”)
  • Partial match (brand + keyword)
  • Exact match (exact keyword) – should be minority

Red flag: High percentage of exact match anchors can indicate manipulation.

Lost Links

Monitor for:

  • Recently lost backlinks
  • Broken backlinks (404 on your site)
  • Links that changed to competitors

Recover:

  • Fix broken pages that had backlinks
  • Reach out to restore valuable lost links
  • Create 301 redirects from broken URLs with backlinks

Link Building Opportunities

Find opportunities:

  • Competitor backlinks you don’t have
  • Broken links on other sites (broken link building)
  • Unlinked brand mentions
  • Guest posting opportunities
  • Resource pages in your industry

Competitive Analysis

Identify Top Competitors

In Google Search Console:

  • See which sites compete for your queries

In SEO tools:

  • Enter your domain
  • View organic competitors
  • Identify top 5-10 competitors

Competitor Comparison

Analyze:

  • Keywords they rank for that you don’t
  • Their content strategy
  • Their backlink sources
  • Their site structure
  • Their technical SEO
  • Their content frequency

Gap Analysis

Find opportunities where competitors are winning:

  • Keywords with high volume they rank for
  • Content types they produce
  • Backlink sources they have
  • Features they offer
  • Technical advantages

Local SEO Audit

Google Business Profile

Checklist:

  • [ ] Claimed and verified
  • [ ] Complete business information
  • [ ] Correct category
  • [ ] Service areas defined
  • [ ] Hours accurate
  • [ ] Photos uploaded
  • [ ] Posts published regularly
  • [ ] Reviews managed and responded to

NAP Consistency

Name, Address, Phone must be identical across:

  • Your website
  • Google Business Profile
  • Bing Places
  • Facebook
  • Yelp
  • Industry directories
  • Citations

Check for:

  • Different phone numbers
  • Variations in business name
  • Old addresses
  • Suite/unit number inconsistencies

Local Citations

Audit citations on:

  • Major platforms (Google, Bing, Apple, Yelp)
  • Local directories
  • Industry-specific directories
  • News sites and blogs

Check for:

  • Missing citations
  • Incorrect information
  • Duplicate listings
  • Inconsistencies

Local Content

On-page local signals:

  • [ ] City/region in title tags
  • [ ] Local keywords in content
  • [ ] Location pages for multi-location
  • [ ] Local schema markup
  • [ ] Embedded Google Map
  • [ ] Address in footer

International/Multi-Language SEO

Hreflang Implementation

If targeting multiple countries/languages:

  • [ ] Hreflang tags implemented
  • [ ] Correct country/language codes
  • [ ] Self-referencing tags
  • [ ] Reciprocal tags
  • [ ] X-default tag for unmatched users
  • [ ] No errors in Search Console

URL Structure

Choose one approach:

  • ccTLDs (yoursite.de, yoursite.fr)
  • Subdirectories (yoursite.com/de/, yoursite.com/fr/)
  • Subdomains (de.yoursite.com, fr.yoursite.com)

Ensure:

  • Consistent structure
  • Proper redirects by location
  • Content fully translated (not auto-translated)
  • Local hosting or CDN

Prioritizing Audit Findings

Impact vs. Effort Matrix

Quick wins (High impact, low effort):

  • Fix missing/duplicate title tags and meta descriptions
  • Add alt text to images
  • Fix broken links
  • Improve page speed (low-hanging fruit)

Major projects (High impact, high effort):

  • Site restructure
  • Content overhaul
  • Technical infrastructure improvements
  • Comprehensive backlink building

Fill ins (Low impact, low effort):

  • Minor content updates
  • Schema markup additions
  • Internal link optimization

Low priority (Low impact, high effort):

  • Defer or skip unless required

Creating Action Plan

Template:

IssueImpactEffortPriorityOwnerDeadline
Missing meta descriptions on 50 pagesMediumLowHighMarketingWeek 1
Slow page speed (LCP 4s)HighMediumHighDevWeek 2
Thin content on 20 pagesMediumHighMediumContentMonth 1

SEO Audit Automation with n8n

Automated Crawl Monitor

{
  "name": "Weekly SEO Health Check",
  "nodes": [
    {
      "parameters": {
        "rule": {"interval": [{"field": "weeks", "weeksInterval": 1}]}
      },
      "name": "Weekly Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [250, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://www.googleapis.com/pagespeedonline/v5/runPagespeed",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {"name": "url", "value": "https://yoursite.com"},
            {"name": "category", "value": "performance"},
            {"name": "category", "value": "seo"},
            {"name": "strategy", "value": "mobile"}
          ]
        }
      },
      "name": "PageSpeed Insights",
      "type": "n8n-nodes-base.httpRequest",
      "position": [450, 300]
    },
    {
      "parameters": {
        "jsCode": "const data = $input.first().json;\nconst lighthouse = data.lighthouseResult;\n\nconst scores = {\n  performance: Math.round(lighthouse.categories.performance.score * 100),\n  seo: Math.round(lighthouse.categories.seo.score * 100),\n  lcp: lighthouse.audits['largest-contentful-paint'].displayValue,\n  cls: lighthouse.audits['cumulative-layout-shift'].displayValue,\n  fid: lighthouse.audits['max-potential-fid'].displayValue\n};\n\nconst issues = [];\nif (scores.performance < 50) issues.push('⚠️ Poor performance score');\nif (scores.seo < 90) issues.push('⚠️ SEO score below 90');\nif (parseFloat(scores.lcp) > 2.5) issues.push('⚠️ LCP above 2.5s');\n\nreturn [{\n  json: {\n    ...scores,\n    issues,\n    url: 'https://yoursite.com',\n    date: new Date().toISOString()\n  }\n}];"
      },
      "name": "Process Results",
      "type": "n8n-nodes-base.code",
      "position": [650, 300]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.issues.length }}",
              "operation": "larger",
              "value2": 0
            }
          ]
        }
      },
      "name": "Any Issues?",
      "type": "n8n-nodes-base.if",
      "position": [850, 300]
    },
    {
      "parameters": {
        "channel": "#seo-alerts",
        "text": "🔍 *SEO Health Check Alert*\n\n*Scores:*\n• Performance: {{ $json.performance }}/100\n• SEO: {{ $json.seo }}/100\n\n*Core Web Vitals:*\n• LCP: {{ $json.lcp }}\n• CLS: {{ $json.cls }}\n• FID: {{ $json.fid }}\n\n*Issues:*\n{{ $json.issues.join('\\n') }}"
      },
      "name": "Alert Team",
      "type": "n8n-nodes-base.slack",
      "position": [1050, 200]
    },
    {
      "parameters": {
        "operation": "append",
        "sheetId": "YOUR_SHEET_ID",
        "sheetName": "SEO Metrics",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "date": "={{ $json.date }}",
            "performance": "={{ $json.performance }}",
            "seo": "={{ $json.seo }}",
            "lcp": "={{ $json.lcp }}",
            "cls": "={{ $json.cls }}"
          }
        }
      },
      "name": "Log Metrics",
      "type": "n8n-nodes-base.googleSheets",
      "position": [1050, 400]
    }
  ]
}

Broken Link Monitor

{
  "name": "Broken Link Checker",
  "nodes": [
    {
      "parameters": {
        "rule": {"interval": [{"field": "days", "daysInterval": 7}]}
      },
      "name": "Weekly Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [250, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://api.apify.com/v2/acts/apify~broken-link-checker/runs/last/dataset/items",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "queryParameters": {
          "parameters": [
            {"name": "token", "value": "YOUR_APIFY_TOKEN"}
          ]
        }
      },
      "name": "Get Broken Links",
      "type": "n8n-nodes-base.httpRequest",
      "position": [450, 300]
    },
    {
      "parameters": {
        "jsCode": "const links = $input.all();\n\nconst broken = links.filter(l => {\n  return l.json.statusCode >= 400 || l.json.statusCode === 0;\n});\n\nconst grouped = broken.reduce((acc, link) => {\n  const page = link.json.referrer || 'Unknown';\n  if (!acc[page]) acc[page] = [];\n  acc[page].push({\n    url: link.json.url,\n    status: link.json.statusCode\n  });\n  return acc;\n}, {});\n\nreturn [{\n  json: {\n    totalBroken: broken.length,\n    brokenByPage: grouped,\n    date: new Date().toISOString()\n  }\n}];"
      },
      "name": "Process Broken Links",
      "type": "n8n-nodes-base.code",
      "position": [650, 300]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.totalBroken }}",
              "operation": "larger",
              "value2": 0
            }
          ]
        }
      },
      "name": "Any Broken Links?",
      "type": "n8n-nodes-base.if",
      "position": [850, 300]
    },
    {
      "parameters": {
        "fromEmail": "seo@yoursite.com",
        "toEmail": "team@yoursite.com",
        "subject": "⚠️ Broken Links Found on Website",
        "emailType": "html",
        "html": "<h2>Broken Link Report</h2><p><strong>Total broken links found: {{ $json.totalBroken }}</strong></p>{{ Object.entries($json.brokenByPage).map(([page, links]) => `<h3>${page}</h3><ul>${links.map(l => `<li>${l.url} (${l.status})</li>`).join('')}</ul>`).join('') }}"
      },
      "name": "Email Report",
      "type": "n8n-nodes-base.gmail",
      "position": [1050, 200]
    }
  ]
}

Post-Audit Monitoring

Set Up Tracking

Weekly monitoring:

  • Core Web Vitals
  • Index coverage
  • Search Console errors
  • Ranking changes

Monthly monitoring:

  • Organic traffic trends
  • Keyword rankings
  • Backlink profile
  • Competitor movements

Quarterly full audits:

  • Complete technical audit
  • Content audit
  • Backlink audit
  • Competitive analysis

Conclusion: Continuous Improvement

An SEO audit isn’t a one-time event—it’s the first step in continuous improvement. The audit identifies issues; the real work is fixing them and monitoring results.

Start with quick wins for immediate impact. Tackle major projects systematically. Monitor progress and re-audit regularly.

SEO is never “done.” Algorithms change, competitors improve, and websites evolve. Regular audits keep you ahead of problems and positioned for growth.

Use this checklist as your roadmap. Work through it systematically. Fix what’s broken, optimize what’s working, and watch your organic traffic grow.


Need help with your SEO audit? At marketingadvice.ai, we perform comprehensive SEO audits that identify issues and create prioritized action plans. From technical fixes to content strategy, we help you rank higher. Get a free SEO audit.

Visit: marketingadvice.ai

Similar Posts