Optimizing SEO for Multilingual Websites
Technical SEO best practices for sites with multiple languages.
Why SEO Matters for Multilingual Sites
Search engines need clear signals about language and regional targeting. A well-structured multilingual site can rank in multiple countries simultaneously.
Hreflang Tags
Hreflang tells Google which language version of a page to show:
<link rel="alternate" hreflang="en" href="https://example.com/en/about" /><link rel="alternate" hreflang="id" href="https://example.com/id/about" /><link rel="alternate" hreflang="x-default" href="https://example.com/about" />This starter includes automatic hreflang generation via the hreflangLinks() function in src/lib/seo.ts.
Canonical URLs
Every page should have a self-referencing canonical URL:
export function canonicalUrl(locale: Locale, path: string): string { const prefix = localePrefix(locale); const normalized = path.replace(/\/$/, ""); return `${SITE_CONFIG.url}${prefix}${normalized || ""}`;}Structured Data (JSON-LD)
Use jsonLdWebSite() for the home page and jsonLdBlogPost() for articles:
const websiteJsonLd = jsonLdWebSite({ title: "My Site", description: "Site description", locale: "en", url: "https://example.com",});Sitemap
The @astrojs/sitemap integration generates a sitemap-index.xml that includes all locale variants of every page, ensuring search engines discover all language versions.
Performance Considerations
- Static generation: Pages are pre-built, ensuring fast load times
- CDN delivery: Cloudflare’s global network caches content at the edge
- Core Web Vitals: Astro’s zero-JS architecture helps achieve good scores