Skip to content
tutorial

Complete Astro SEO Checklist: 25 Steps to Perfect Technical SEO

March 10, 2026 By Wumty Team
Complete Astro SEO Checklist: 25 Steps to Perfect Technical SEO

Getting a perfect Lighthouse SEO score is easy. Actually ranking on Google requires more. This checklist covers the 25 technical SEO steps that matter for Astro sites in 2026, organized by priority.

Bookmark this page and work through it for every site you launch.

Foundation (Do These First)

1. Set Canonical URLs on Every Page

Every page needs a <link rel="canonical"> pointing to its preferred URL. Without canonicals, Google may index duplicate versions of your pages (with/without trailing slashes, with/without www).

<link rel="canonical" href={`${import.meta.env.SITE}${Astro.url.pathname}`} />

In Wumty templates, canonical URLs are generated automatically from your base_url config and the page pathname. Override per-page via frontmatter when needed.

2. Configure Trailing Slash Consistency

Pick a trailing slash strategy and stick with it. Mixed URLs (/about and /about/) create duplicate content issues.

// astro.config.mjs
export default defineConfig({
  trailingSlash: "always", // or "never"
});

Set trailingSlash: "always" in your Astro config and make sure your internal links match. Google treats /about and /about/ as different URLs.

3. Create a robots.txt

Place a robots.txt in your public/ directory:

User-agent: *
Allow: /
Disallow: /404
Disallow: /api/

Sitemap: https://yoursite.com/sitemap-index.xml

Block pages you don’t want indexed (404, API endpoints, staging environments). Always include your sitemap URL.

4. Generate an XML Sitemap

Astro has a built-in sitemap integration:

pnpm add @astrojs/sitemap
// astro.config.mjs
import sitemap from "@astrojs/sitemap";

export default defineConfig({
  site: "https://yoursite.com",
  integrations: [sitemap()],
});

This generates a sitemap-index.xml at build time with all your static and dynamic routes. Submit it to Google Search Console after deployment.

5. Set the Site URL

This sounds obvious, but Astro needs the site property in astro.config.mjs to generate correct canonical URLs, sitemaps, and Open Graph tags:

export default defineConfig({
  site: "https://yoursite.com",
});

Without this, absolute URLs in meta tags and sitemaps will be wrong or missing.

Meta Tags (Essential for Every Page)

6. Write Unique Title Tags

Every page needs a unique <title> tag under 60 characters. Lead with your primary keyword:

# Good: keyword-first
meta_title: "Astro SEO Checklist 2026 | 25 Technical Steps | Wumty"

# Bad: brand-first
meta_title: "Wumty | Astro SEO Checklist"

Google displays roughly 60 characters in search results. Front-load the most important keywords.

7. Write Unique Meta Descriptions

Every page needs a unique <meta name="description"> under 160 characters that accurately describes the content and includes a call to action:

description: "The complete Astro SEO checklist for 2026. 25 actionable steps covering meta tags, structured data, Core Web Vitals, and content optimization."

Meta descriptions don’t directly affect rankings, but they strongly affect click-through rates from search results.

8. Add Open Graph Tags

Open Graph tags control how your pages appear when shared on social media:

<meta property="og:title" content="Page Title" />
<meta property="og:description" content="Page description" />
<meta property="og:image" content="https://yoursite.com/images/og/page.png" />
<meta property="og:url" content="https://yoursite.com/page/" />
<meta property="og:type" content="website" />

Use images sized 1200x630px for optimal display on Facebook, LinkedIn, and Twitter. Each page should ideally have a unique OG image.

9. Add Twitter Card Tags

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Page Title" />
<meta name="twitter:description" content="Page description" />
<meta name="twitter:image" content="https://yoursite.com/images/og/page.png" />

Use summary_large_image for pages with visual content. Test your cards with Twitter’s Card Validator.

10. Set Robots Meta Per Page

Control indexing at the page level:

<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />

Use max-image-preview:large to allow Google to show large image previews in search results. Set noindex on pages like thank-you pages or internal tools.

Structured Data (Rich Results)

11. Add Organization Schema

Every site needs an Organization (or Person) schema on the homepage:

{
  "@type": "Organization",
  "name": "Your Business",
  "url": "https://yoursite.com",
  "logo": "https://yoursite.com/images/logo.svg",
  "sameAs": ["https://twitter.com/you", "https://github.com/you"]
}

This tells Google who owns the site and connects your social profiles.

12. Add WebSite Schema with SearchAction

{
  "@type": "WebSite",
  "url": "https://yoursite.com",
  "name": "Your Site Name",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://yoursite.com/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

This can enable a sitelinks search box in Google results.

13. Add BreadcrumbList Schema

Breadcrumbs help Google understand your site hierarchy:

{
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yoursite.com/" },
    { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://yoursite.com/blog/" },
    { "@type": "ListItem", "position": 3, "name": "This Post" }
  ]
}

Wumty templates generate breadcrumb schema automatically from the URL pathname.

14. Add Article Schema for Blog Posts

Every blog post should include BlogPosting or Article schema:

{
  "@type": "BlogPosting",
  "headline": "Post Title",
  "datePublished": "2026-03-10",
  "dateModified": "2026-03-13",
  "author": { "@type": "Person", "name": "Author Name" },
  "description": "Post description"
}

Include dateModified and update it when you revise content. Google uses this for freshness signals.

15. Add FAQ Schema Where Appropriate

FAQ sections with proper schema can earn rich results in search:

{
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Your question?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Your answer."
      }
    }
  ]
}

Only use FAQ schema on pages where FAQs are a primary content feature. Don’t spam it on every page.

Performance (Core Web Vitals)

16. Achieve Sub-2.5s Largest Contentful Paint

LCP measures how quickly the main content loads. For Astro sites:

  • Use loading="eager" and fetchpriority="high" on hero images
  • Preload critical fonts with <link rel="preload">
  • Inline critical CSS in the <head>
  • Avoid render-blocking JavaScript

17. Achieve Zero Cumulative Layout Shift

CLS measures visual stability. Prevent layout shifts by:

  • Setting explicit width and height on all images
  • Using font-display: swap with proper font fallbacks
  • Avoiding dynamically injected content above the fold

18. Minimize Total Blocking Time

TBT measures JavaScript blocking. Astro’s zero-JS default makes this easy:

  • Use client:visible or client:media instead of client:load where possible
  • Keep interactive islands small and focused
  • Avoid third-party scripts that block the main thread

19. Optimize Images

Every image should be:

  • Served in WebP or AVIF format
  • Responsively sized with srcset
  • Lazy loaded below the fold (loading="lazy")
  • Include descriptive alt text for accessibility and image search

Astro’s built-in <Image> component handles format conversion and responsive sizing automatically.

20. Optimize Font Loading

<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />

Use font-display: swap to prevent invisible text while fonts load. Consider self-hosting fonts to eliminate third-party DNS lookups.

Content & Internal Linking

21. Use Proper Heading Hierarchy

Every page needs exactly one <h1>. Subheadings should follow a logical hierarchy:

h1: Page Title
  h2: Major Section
    h3: Subsection
  h2: Another Major Section

Don’t skip levels (h1 → h3). Heading hierarchy helps Google understand content structure and can influence featured snippets.

Every page should link to 3-5 related pages on your site. This distributes PageRank and helps Google discover content:

  • Blog posts link to related products/services
  • Product pages link to relevant blog tutorials
  • Category pages link to individual items

23. Use Descriptive Anchor Text

<!-- Good: descriptive -->
<a href="/blog/astro-seo-guide/">complete Astro SEO guide</a>

<!-- Bad: generic -->
<a href="/blog/astro-seo-guide/">click here</a>

Anchor text tells Google what the linked page is about. Use natural, keyword-relevant phrases.

24. Add Alt Text to All Images

Every <img> needs descriptive alt text:

<!-- Good: descriptive -->
<img alt="Lighthouse performance score showing 100/100" src="..." />

<!-- Bad: keyword stuffing -->
<img alt="astro template astro lighthouse astro seo" src="..." />

Alt text serves accessibility and helps images rank in Google Image Search.

25. Keep URLs Clean and Descriptive

Good: /blog/astro-seo-checklist/
Bad:  /blog/post-12345/
Bad:  /blog/the-complete-and-ultimate-astro-seo-checklist-for-beginners-2026/

Use 3-5 words that describe the content. Avoid stop words, numbers, and excessively long URLs.

Post-Launch

After deploying, complete these tasks:

  1. Submit sitemap to Google Search Console
  2. Request indexing for your most important pages
  3. Test structured data with Google’s Rich Results Test
  4. Test OG tags with Facebook’s Sharing Debugger and Twitter’s Card Validator
  5. Run Lighthouse on key pages to verify scores
  6. Set up Search Console monitoring for crawl errors, indexing issues, and Core Web Vitals

Using This Checklist with Wumty

Wumty templates handle items 1-15 and 16-20 automatically through the SEO Toolkit and Performance Toolkit. Items 21-25 depend on your content, but our templates provide the structure (heading hierarchy, image components with required alt text, clean URL routing).

Download the free Starter Kit with SEO fundamentals included, or get the full technical SEO stack with the Single Site. The SEO Toolkit handles items 11-15 automatically, while the Performance Toolkit covers items 16-20. For dark mode without FOUC (item 17), the Theme System solves it out of the box. For a deeper dive into performance, read how we get 100/100 Lighthouse on every site.


Want a site that nails every item on this checklist out of the box? The Starter Kit is free and achieves top Lighthouse performance from day one. See all kits on the pricing page.

Tags: tutorial
Share:

Ready to build your next agency site?

Start free with the Starter Kit, or get the full system with Single Site, Studio, or Agency.

Get Started Solutions