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?

2 Answers 2


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>
  <link rel="alternate" hreflang="en-us"
        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, 2018 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" Oct 19, 2018 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. Oct 19, 2018 at 21:38

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.