One brand, every market.
Expanding into new regions usually splits your ranking authority across competing duplicates. We wire locale routing and reciprocal hreflang through the App Router so every market gets a stable, crawlable URL, and engines never see your own pages as rivals.
Locale architecture
Sub-path or sub-domain routing wired through the App Router so each market resolves to one stable, indexable URL.
Reciprocal hreflang
Bidirectional language-region annotations with an x-default fallback. No market quietly competing against another.
Content parity
Translated metadata, aligned canonicals, and localized currency and formats that keep domain authority consolidated.
1import type { Metadata } from "next";2 3// Every market addressable; x-default catches the rest.4const LOCALES = ["en-US", "en-GB", "es-ES", "de-DE", "fr-FR"] as const;5 6export async function generateMetadata(7 { params }: { params: Promise<{ locale: string }> },8): Promise<Metadata> {9 const { locale } = await params;10 const languages = Object.fromEntries(11 LOCALES.map((l) => [l, `https://ranklyhub.com/${l}`]),12 );13 return {14 alternates: {15 canonical: `https://ranklyhub.com/${locale}`,16 languages: { ...languages, "x-default": "https://ranklyhub.com" },17 },18 };19}Reciprocal hreflang with an x-default fallback, generated from a single source of truth. Every market reachable, zero self-competition.
Check your global setup. Free, in 60 seconds.
Live crawl · hreflang and canonical inspection · instant health score · the exact fix list. No login.