Bilingual SEO in Next.js: Getting Arabic and English Right
May 18, 20265 min read
Next.jsSEOi18nRTL
Why bilingual SEO is different
Serving two languages isn't just translation. Search engines need explicit signals about which page serves which audience.
The checklist
- Locale-prefixed URLs —
/en/blog/...and/ar/blog/.... Unambiguous for crawlers. - hreflang alternates — every page declares its translations via
alternates.languagesin the Next.js Metadata API. - Localized metadata — titles and descriptions written (not machine-translated) per locale.
dir="rtl"and logical CSS properties — usems-/me-instead ofml-/mr-in Tailwind so layouts mirror for free.- JSON-LD in both languages — Person, Article, and BreadcrumbList schemas with localized strings.
- A sitemap with language alternates — one entry per locale per route.
The result
Search engines index both versions independently, Arabic users get Arabic snippets, and you avoid duplicate-content penalties entirely.