Squarespace multilingual SEO: a checklist for hreflang, page language and URLs
Squarespace has no built-in way to publish one site in several languages, so most multilingual Squarespace sites end up one of two ways: a translation service layered on top, or a separate set of pages for each language. If you built separate pages, the SEO work is yours. It comes down to seven checks, in the order I would do them.
I used this list on this site, which runs in English, Spanish and French. While writing it I audited my own pages and found two things wrong. I'll point them out as we go.
1. Give every language its own URL
Put each language at its own path, such as /en/, /es/ and /fr/, with a real translated page at each address. Google's guidance for multilingual sites is to use a different URL for each language version, and to let visitors choose a language instead of redirecting them automatically based on their browser. A script that swaps the text on a single URL gives search engines nothing separate to index.
2. Add reciprocal hreflang tags
hreflang tells search engines which page is the Spanish version of which English page, so the right one appears for the right searcher. There are three rules. Every page lists every version in its group, including itself. The links are reciprocal: if the English page points to the Spanish page, the Spanish page points back. And you add an x-default for visitors who match none of your languages.
Squarespace has no hreflang setting for hand-built pages, so you add the tags yourself. On each page, open Page Settings, choose Advanced, and paste into Page Header Code Injection. Use full URLs, and paste the same block on every version in the group:
<link rel="alternate" hreflang="en" href="https://www.example.com/en/about" />
<link rel="alternate" hreflang="es" href="https://www.example.com/es/acerca-de" />
<link rel="alternate" hreflang="fr" href="https://www.example.com/fr/a-propos" />
<link rel="alternate" hreflang="x-default" href="https://www.example.com/en/about" />Check that each address matches the live page exactly. A typo makes the pair invalid, and search engines quietly ignore it.
3. Leave each page's canonical pointing at itself
Squarespace gives every page a canonical URL that points at the page itself. Leave that alone. If the Spanish page's canonical pointed at the English page, you would be telling search engines to ignore the Spanish page.
4. Fix the page language
Squarespace writes one lang attribute on every page, taken from Settings, Language and Region. Here is the first of my two findings: on this site the Spanish and French pages arrived in the HTML as lang="en-US". Search engines mostly judge a page's language from its visible text, so this is not a ranking switch. But screen readers use the attribute to choose a pronunciation voice, and browsers use it when deciding whether to offer translation, so it is worth fixing.
A few lines of JavaScript can set it from the URL. In the Pages panel, open Custom Code, then Code Injection, and add this to the Footer:
<script>
document.documentElement.lang =
location.pathname.indexOf("/es/") === 0 ? "es" :
location.pathname.indexOf("/fr/") === 0 ? "fr" : "en";
</script>It runs after the page loads, so treat it as an accessibility fix rather than a ranking signal. Language Switch sets this for you at load time, from the first segment of the URL path.
5. Translate everything search engines read
A Spanish page with an English title tag shows an English title in Spanish search results. For every page, translate the SEO title, the SEO description, the URL slug (/es/acerca-de, not /es/about), the image alt text, and the social sharing image if it contains words. Squarespace keeps most of these in each page's SEO and Social Image settings.
6. Link within the language
Once a page exists in Spanish, every Spanish page should link to the Spanish version, not the English one. Here is the second of my two findings: the Spanish and French Contact pages still linked to the English Client Questions page, even though both translations existed. A visitor reading Spanish clicked a link and landed in English. The fix took two minutes. Finding it meant clicking through every language like a visitor, which is the only reliable way to catch it.
7. Make the language menu link to the matching page
A language menu that always lands on the other language's home page makes visitors start over, and it gives search engines fewer links between your versions. Link each page to its translated equivalent where one exists. Most switchers, including Language Switch, link to each language's home page by default. On this site I added a small mapping so the menu sends you to the matching page.
Check your work
View source on each page and search for hreflang. Every version in a group should list the same set of addresses.
In Google Search Console, run URL Inspection on one page per language and look at which canonical Google chose.
Read each language as a visitor: click the menu, the buttons, the footer and the links in the text.
Give it time. Changes like these can take days or weeks to show up in search results.
None of this requires a plugin. If you would rather not keep the menu and footer in sync by hand across several languages, that is the part Language Switch handles. For more on this setup, see how to set up a multilingual site with URL mapping and Weglot vs Language Switch.