So I came across a library that helps with adding locale code to the route of your website. eg website.com/en-US/about/

The library claims that one should do it this way because "Google needs different URLs to crawl and render your pages for each language.". Is this correct?

Also, would simply putting the locale code in the query string accomplish the same thing? eg website.com/about/?locale=en-US

More generally: what are the advantages and disadvantages of route-based vs query-based?


From an SEO perspective, it doesn't matter. However, in the general case, using query-based language configuration complicates server code all over the place. It makes handling forms slightly more complicated, can complicate template processing, removes the possibility of static language-based files (e.g. imagine a banner image in each language, you can't just dump them to the file system, you need a image handler to determine which file to serve...).

Overall, unless you have some sort of platform that specifically takes advantage of a query-based i18n setup, you should avoid doing so, simply because it will complicate the server code in a myriad of not-so-fun ways. It's also incredibly non-standard, as almost all major packages (e.g. WordPress) does use route-based language configuration. It's simply easier to use.


They should be identical as far as SEO is concerned, because Google doesn't look in the URL to determine language - to determine language they actually use machine learning on the text content itself.

The important part for SEO is to just make Google aware of the different language versions of each page by using meta tags like so:

  <title>Your Website</title>
        href="http://website.com/en-US/about/" />
  <link rel="alternate" hreflang="de"
        href="http://website.com/de/about/" />

More info at Google's guidelines for specifying web page languages.

  • Don't forget the Content-Language header that can include it as well (not sure if Google looks at it). – jaxad0127 Oct 19 '18 at 5:19
  • @jaxad0127 You can use headers instead of meta tags to indicate alternate languages, like this: Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en", <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch" – Maximillian Laumeister Oct 19 '18 at 15:44
  • I also agree with phyrfox that while for SEO it doesn't matter, for overall website maintainability you should go with i18n in the path and not the query string if you have a choice. – Maximillian Laumeister Oct 19 '18 at 21:38

Your Answer

