Real fixes from seven live sites. No pitch.Log in / My reports
Idea to Traffic Pressure Test

How to Translate Your Blog Into Another Language Without Hurting SEO

Give each language its own URL, ideally a subfolder such as /en/, translate the whole page with a fluent edit rather than raw machine output, and link each pair with hreflang tags placed on both versions. Keep a self canonical on every version and use a visible language link instead of automatic redirects.

You have a young blog in one language and you want a second audience. Translating is one of the few ways to roughly double the number of searches your content can show up for without inventing new topics. It also has a handful of ways to go wrong quietly: Google indexes only one version, shows French readers the English page, or decides the translated pages are thin. This guide walks through the setup for a French blog adding English, but the steps are the same for any pair of languages.

Give every language its own URL

The single most important decision is that each language version lives at its own address. Google's documentation on multilingual sites says it recommends separate URLs for each language rather than switching the language with cookies or browser settings. Googlebot crawls mostly from the United States and does not send an Accept-Language header, so a site that swaps text based on the visitor's browser will usually be crawled in one language only. The other language effectively does not exist for search.

You have four structures to choose from:

  • Subdirectories on one domain: example.com/fr/ and example.com/en/. This is the best default for a small blog. Both languages share the same domain, the same backlinks and the same Search Console property, and on a static host it is just two folders.
  • Subdomains: fr.example.com and en.example.com. Workable, but each subdomain tends to be treated more like its own site, and you have one more DNS record and one more property to manage.
  • Country domains: example.fr and example.co.uk. These target countries, not languages. Unless you are actually serving different markets with different prices or shipping, they split your authority for no benefit.
  • URL parameters such as ?lang=en. Google lists this option as not recommended. Skip it.

If your existing French posts already live at the root (example.com/my-post), you do not have to move them. Leaving French at the root and adding English under /en/ is perfectly valid and avoids a migration. Moving thousands of URLs only to make the structure look symmetrical costs you rankings for weeks with no upside.

Translate for readers, not for page count

Google's spam policies treat scaled content abuse as producing many pages mainly to manipulate rankings, and automated transformations such as translation are named as one of the techniques that can fall under it. That does not mean machine translation is banned. Large sites use it openly. The line is quality and intent: a translation that a native reader would find natural and useful is fine, a bulk dump of raw output across hundreds of pages is a risk.

A practical workflow that stays on the right side of that line:

  1. Start with your 10 to 20 best posts, the ones that already get impressions in Search Console. Open Search Console > Performance > Search results, set the date range to the last 3 months and sort by impressions. Those are the topics with proven demand.
  2. Check that the topic has English demand too. A French recipe for a regional dish may have no English searches at all, while a guide to a software tool usually has more. Type the English phrase into Google and look at what ranks: if the results are big brands with deep content, plan your page to match that depth.
  3. Draft with a translation tool, then have a fluent speaker edit it. Fix idioms, swap examples that only make sense locally (French tax rules, euro prices, local shops) for ones that fit the new audience.
  4. Translate the whole page: title tag, meta description, headings, image alt text, button labels and navigation. Google's guidance specifically warns against translating only the boilerplate while the main content stays in the original language, and against putting two languages side by side on one page.
  5. Rewrite the slug in the new language. /en/how-to-make-sourdough is better than /en/comment-faire-du-pain-au-levain, both for clicks and for the reader's trust.

Publishing 15 well edited translations beats publishing 300 rough ones. You can add more once the first batch starts collecting impressions.

Connect the versions with hreflang

Hreflang annotations tell Google that two URLs are the same content in different languages, so it can show each searcher the right one. Put these in the <head> of both pages, with identical sets of tags on each:

<link rel="alternate" hreflang="fr" href="https://example.com/pain-au-levain" />
<link rel="alternate" hreflang="en" href="https://example.com/en/how-to-make-sourdough" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pain-au-levain" />

The rules that trip people up most:

  • Every page lists itself and every alternate. Google states that if two pages do not both point to each other, the tags are ignored. A French page that points to English while the English page points nowhere gives you nothing.
  • Use full absolute URLs, including https://, and the final canonical URL of each page. Pointing hreflang at a URL that redirects or is canonicalized elsewhere breaks the pair.
  • Codes are language first, then an optional region: fr, en, en-GB, fr-CA. The language uses ISO 639-1 and the region uses ISO 3166-1 alpha 2. A region on its own, like hreflang="uk" meant as the United Kingdom, is invalid (and uk is actually Ukrainian). If you write one English version for everyone, plain en is correct.
  • x-default is the fallback for searchers whose language matches none of your versions. Point it at whichever version you consider the main one, or at a language chooser page if you have one.
  • Each version keeps a self canonical. The English page's rel="canonical" points to the English URL, never to the French one. Canonicalizing a translation to the original tells Google to drop it.

Hreflang can also live in your XML sitemap or in HTTP headers. Google treats the three methods as equivalent, so pick one. For a static site, the <head> method is easiest to check by eye. If you generate a sitemap anyway, the sitemap method keeps all pairs in one file:

<url>
  <loc>https://example.com/en/how-to-make-sourdough</loc>
  <xhtml:link rel="alternate" hreflang="fr" href="https://example.com/pain-au-levain"/>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/how-to-make-sourdough"/>
</url>

The sitemap root needs xmlns:xhtml="http://www.w3.org/1999/xhtml" declared for those lines to be valid.

Set the lang attribute and add a visible switcher

Put <html lang="en"> on English pages and <html lang="fr"> on French ones. Google says it detects a page's language from the visible content rather than from this attribute, so it will not rescue a badly translated page, but screen readers, browsers and other search engines do use it, and it costs nothing.

Then add a plain link on every post to the same post in the other language, such as "Read this in French" near the top. Google's guidance is to avoid automatically redirecting visitors between language versions based on location or browser language. Redirects trap travelers and expats in the wrong language and can stop Googlebot from ever reaching one version. A visible link lets people choose and gives crawlers a normal path to every page.

Check it before and after you publish

Once a pair is live, confirm both sides from the command line. This prints every hreflang tag on a page:

curl -s https://example.com/en/how-to-make-sourdough | grep -io '<link[^>]*hreflang[^>]*>'

Run it on the French URL too. You should see the same set of tags on both, each URL should return status 200 (check with curl -sI URL | head -1), and none should redirect.

In Search Console, you no longer get a dedicated hreflang report: Google retired the International Targeting report in 2022. Instead:

  • Use URL Inspection on a new English URL and click Request indexing. Look at Page indexing > User-declared canonical and Google-selected canonical. If Google picked the French URL as canonical for your English page, the content is probably not translated enough, or your canonical tag points the wrong way.
  • After a few weeks, open Performance, add a filter for Page containing /en/, and switch to the Countries tab. English pages should start collecting impressions in English speaking countries. If they get impressions only in France, Google is not yet matching them to English searchers.
  • Submit an updated sitemap that includes the new URLs under Indexing > Sitemaps.

New translated pages index on roughly the same timeline as any new page on your site, often days to a few weeks for a small blog. They benefit from the authority your domain already has, which is one reason the subdirectory setup pays off.

If you want a quick look at the basics around this, such as whether your pages return clean 200 status codes, carry a canonical tag and are present in your sitemap, the free site checker runs those checks on any URL.

Mistakes that cost translated blogs their traffic

  • Translating posts with no demand in the new language. The page gets indexed and never earns an impression. Check demand first.
  • One way hreflang. Adding tags to the new English pages but forgetting to update the existing French pages. Both sides must be edited.
  • Canonical pointing to the original. Common with plugins and copied templates. Each language is its own canonical.
  • Mixed language pages. English body with French navigation, French date formats and a French cookie banner reads as a half finished translation to visitors and to quality systems.
  • Leaving the old language's internal links. English posts should link to other English posts. Linking from an English article to French articles sends readers to pages they cannot read.
  • Expecting AdSense earnings to match. If you monetize with ads, rates per 1,000 views vary widely by country. English traffic from the United States or United Kingdom typically pays more than French traffic, while English traffic from lower income countries may pay less. Measure it per country in AdSense rather than assuming.

Start small: translate five strong posts, wire up hreflang on both sides, verify with curl and URL Inspection, and wait for impressions before scaling. That gives you real data on whether the second language is worth the editing time.

Where this question came from

Questions about translating a blog for SEO

Is machine translated content bad for SEO?

Not by itself. Google's spam policies target translation used to mass produce low value pages. A machine draft that a fluent speaker edits, on topics with real demand in the new language, is treated like any other useful page.

Should I use a subfolder or a subdomain for a translated blog?

For a small blog, a subfolder such as example.com/en/ is usually best. Both languages share the domain's existing authority and one Search Console property, and on a static host it is just another folder.

Will translated pages count as duplicate content?

No. Google says localized versions are only treated as duplicates when the main content is left untranslated. Fully translated pages with correct hreflang and a self canonical are separate pages.

Do I need hreflang if I only have two languages?

It is still worth adding. Without it, Google has to guess which version to show, and it can show your original language page to people searching in the new language. Two tags plus x-default on each page is enough.