International SEO
International SEO helps your website reach audiences in different countries and languages. It involves technical implementation and content strategy for global markets.
URL Structures for International Sites
ccTLDs (Country Code Top-Level Domains)
example.fr, example.de, example.co.uk
Strongest geo signal, but expensive and harder to manage
Subdirectories
example.com/fr/, example.com/de/
Recommended - consolidates authority, easy to manage
Subdomains
fr.example.com, de.example.com
Treated as separate sites, harder to share authority
Hreflang Implementation
Hreflang tells search engines which language/region a page targets:
<!-- In <head> of each page -->
<link rel="alternate" hreflang="en" href="https://example.com/page" />
<link rel="alternate" hreflang="es" href="https://example.com/es/page" />
<link rel="alternate" hreflang="fr" href="https://example.com/fr/page" />
<link rel="alternate" hreflang="de" href="https://example.com/de/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
<!-- Language + Region targeting -->
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/page" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/page" />
<link rel="alternate" hreflang="es-ES" href="https://example.com/es-es/page" />
<link rel="alternate" hreflang="es-MX" href="https://example.com/es-mx/page" />
Next.js i18n Configuration
// next.config.js
module.exports = {
i18n: {
locales: ['en', 'es', 'fr', 'de'],
defaultLocale: 'en',
localeDetection: true,
},
};
// app/[locale]/layout.tsx
export async function generateStaticParams() {
return [
{ locale: 'en' },
{ locale: 'es' },
{ locale: 'fr' },
{ locale: 'de' },
];
}
// Generate hreflang in metadata
export async function generateMetadata({ params }) {
const locales = ['en', 'es', 'fr', 'de'];
const alternates = {
languages: {},
};
locales.forEach(locale => {
alternates.languages[locale] = `https://example.com/${locale}/page`;
});
return {
alternates,
};
}
Content Localization Best Practices
Do:
- Translate AND localize content
- Use native speakers for translation
- Localize dates, currencies, numbers
- Research keywords per market
- Consider cultural differences
Don't:
- Use auto-translation alone
- Copy English keywords directly
- Ignore local search engines
- Forget right-to-left languages
- Mix languages on same page
Common Hreflang Mistakes
- Missing return links: Every page must link to all language versions including itself
- Wrong language codes: Use ISO 639-1 codes (en, es, fr, not english, spanish)
- Missing x-default: Always include a default fallback
- Inconsistent URLs: Use absolute URLs consistently
- Conflicting canonicals: Canonical and hreflang must align