computer, keyboard, letters, typing, code, laptop, electronics, gray computer, gray laptop, gray letter, gray code, gray coding, gray keyboard
Photo by StockSnap on Pixabay

Rules and ethics

Bilingual URL structure in Wales: prefix, domain or parameter

Bilingual technical SEO Wales starts with the URL pattern: compare path prefixes, separate domains and parameters, then see how hreflang and migration follow.

What to take away

  • Choose the URL pattern firstit decides how you segment analytics, write robots rules, split sitemaps and annotate hreflang.
  • A path prefix such as Cardiff Council's /ENG/ and /CYM/ is readable, easy to segment and easy to block or allow in robots.txt.
  • Separate domains, as the Senedd uses with senedd.wales and senedd.cymru, give a clear Welsh identity but split authority and add cost.
  • A language query parameter such as ?lang=cy is harder to canonicalise and harder to report on.
  • Whatever the pattern, hreflang stays reciprocal and self-referencing, and each page keeps a self-canonical.
  • If you inherit a parameter-based estate, plan a migration with a URL map and 301 redirects.

Which URL pattern should a bilingual Welsh site use?

Use a path prefix unless you have a reason to split domains. URL structure is the first decision on a bilingual estate, because every later task, from hreflang to analytics, inherits it. The table sets four patterns against the checks that decide the choice.

PatternExampleWhat worksWhat it costs
Path prefixcardiff.gov.uk/ENG/ and /CYM/Readable, easy to segment in analytics, easy to block or allow in robots.txtBoth languages share one domain and one crawl budget
Separate domainssenedd.wales and senedd.cymruClear Welsh identity, cross-domain hreflang between pairsSplits authority and adds cost
SubdomainA Welsh subdomain such as cy.example.orgKeeps the Welsh site separateSplits authority and adds cost
Query parameter?lang=cyQuick to buildHarder to canonicalise and harder to report on

Language URL Patterns

Prefix /en/ /cy/

Readability
High
Analytics segmentation
Easy
robots.txt control
Easy
Authority
Shared
Canonicalisation
Simple

Subdomain or ccTLD

Readability
Medium
Analytics segmentation
Moderate
robots.txt control
Moderate
Authority
Split
Canonicalisation
Simple

Query ?lang=cy

Readability
Low
Analytics segmentation
Hard
robots.txt control
Hard
Authority
Shared
Canonicalisation
Hard

The Welsh Language (Wales) Measure 2011 opens with a Part on the official status of the Welsh language, which is why the Welsh version should be built as a full estate rather than an add-on. No pattern rescues a weak Welsh page. A bilingual site is two indexable estates sharing a domain, a CMS and a crawl budget, so Welsh pages that are thinner, slower or blocked drag the whole estate down whichever URL shape you choose.

Three questions that settle the choice

Ask who must run the estate, who must read its reports and how distinct the Welsh identity needs to be. The answers usually point to a prefix, and they point away from it only when identity outweighs the extra work of two properties.

Start with the editors. If one team writes both versions in one CMS, a prefix keeps the pair in one workflow and one template. Separate domains are easier to justify when the Welsh site has its own owners, its own publishing rhythm and its own audience.

Then ask who reads the reports. A prefix lets one analytics property segment English and Welsh traffic by path, while separate domains need two properties to be read side by side. Finally, ask whether the brand needs a clearly Welsh address, as a national body might.

Path prefixes: how Cardiff Council separates English and Welsh

Cardiff Council runs cardiff.gov.uk with English and Welsh versions under /ENG/ and /CYM/ path prefixes. Service pages, navigation and metadata are paired by language, and the language switch keeps users in the same section. The prefix also makes it easy to segment English and Welsh traffic in analytics.

Prefixes are readable and simple to block or allow in robots.txt, which matters when you must confirm that the Welsh path is not accidentally disallowed. Confirm too that redirects from old Welsh URLs land on the correct Welsh page, not the English one.

Treat the prefix as a rule the CMS enforces. One content record with two language fields lets editors write both versions in one workflow, and the CMS then generates paired URLs, paired metadata and paired hreflang. Fewer manual steps means fewer broken pairs.

A generic market entry checklist needs adapting for a two-language estate. The pairing rule is language, not market, and the prefix is where that rule becomes visible to crawlers.

Separate domains: the Senedd's senedd.wales and senedd.cymru

The Senedd runs senedd.wales in English and senedd.cymru in Welsh. The two domains use cross-domain hreflang to link each page to its pair, and the language switch gives users the same content in the other language. This pattern suits a national body that wants a clear Welsh identity.

The cost is split authority. A separate-domain estate has two sites to build signals for and two sets of reports to read. A subdomain or country-code domain also works, but it splits authority and adds cost in the same way.

Because the pair sits on different hosts, each hreflang set must name the full URL on both hosts, and both sides must carry it. Check the return link from the Welsh domain as carefully as the one from the English domain.

Why a language query parameter loses to a prefix

Avoid query parameters for language, such as ?lang=cy. They are harder to canonicalise and harder to report on than a path. If you inherit a parameter-based estate, plan a migration with redirects rather than living with the pattern.

A prefix lets a crawl tag each URL by language, template and section. Start with a Screaming Frog or Sitebulb crawl that separates English and Welsh URLs, then compare index coverage, response codes and canonical targets across the two sets. Differences that look cosmetic often signal a structural fault.

How the pattern shapes your hreflang set

Hreflang tells search engines which language version to serve, and the pattern only changes the URLs inside it. For English and Welsh the codes are en and cy. If you target regional variants, en-GB is the usual choice for the English version.

Reciprocal Hreflang Pair

  1. English page lists Welsh page
  2. English page lists itself
  3. Welsh page lists English page
  4. Welsh page lists itself
  5. x-default set once

Every pair must be reciprocal. The English page lists the Welsh page, the Welsh page lists the English page, and each page also lists itself. A one-way annotation is ignored: if the English page points to the Welsh page, the Welsh page must point back, or the cluster fails.

For example, the same reciprocal set appears on both pages:

link rel="alternate" hreflang="en-GB" href="https://www.example.org/en/service"
link rel="alternate" hreflang="cy" href="https://www.example.org/cy/gwasanaeth"
link rel="alternate" hreflang="x-default" href="https://www.example.org/en/service"

Replace the example URLs with your own. Keep the set identical on both sides.

Use x-default on the page you want shown when no language matches. For most Welsh organisations that is the English page, but a bilingual homepage can serve as the default if it routes users correctly. The value is the fallback for users whose browser language matches none of your versions.

The annotations can live in the head, in HTTP headers or in the sitemap. Pick one method and keep it consistent, because mixing methods across templates invites errors. Do not rely on browser language detection alone: it is a user experience aid, not a ranking signal.

Run a validation pass on every template. Check that the Welsh page returns 200 and that its hreflang set matches its English pair exactly. A single missing return link can void the cluster. A full hreflang audit for multilingual sites covers the wider tests.

Canonicals, sitemaps and robots rules for the chosen pattern

Each language version should be self-canonical: the English page canonicalises to itself and the Welsh page canonicalises to itself. Cross-language canonicals are wrong and will suppress one version. With a prefix the rule is one line in the template, while separate domains need the same check on both hosts.

Sitemaps should list both language versions, with xhtml:link alternates if you use the sitemap method for hreflang. Split sitemaps by language if the estate is large, which makes index coverage reporting clearer in Search Console. Follow Google's sitemap rules on format, size and submission, then confirm both files are fetched and parsed without errors.

Crawl checks should cover status codes, redirect chains and robots.txt rules for both language paths. On a large Welsh public-sector site, thousands of thin Welsh pages can pull crawl away from the pages that need it, so keep an eye on the share of crawl each path receives.

Set up a technical SEO review methodology that runs these checks on a schedule. Bilingual estates drift when templates change and no one re-tests the pairs.

Migrating from ?lang=cy to /cy/: a worked example

A Cardiff-based body migrates from ?lang=cy to /cy/. The plan lists 1,200 Welsh URLs, maps each to its new path and sets 301 redirects. Without the mapping step, half the Welsh estate would 404. The sequence below keeps the pairs intact.

  1. List all 1,200 Welsh URLs, with their English pairs.
  2. Map each Welsh URL to its new path under /cy/.
  3. Set a 301 redirect from every old URL to its mapped Welsh page.
  4. Update hreflang on both sides of every pair.
  5. Resubmit both sitemaps.
  6. Monitor index coverage for eight weeks.

Metadata moves with the URL. Each page keeps its own title, description and Open Graph locale, cy_GB on the Welsh page and en_GB on the English one, so social previews match the page language. A Welsh page with an English title tag is a mismatch, and it weakens relevance signals.

Decide early whether you need Screaming Frog, Sitebulb, a log analyser such as GoAccess, or a combination. A technical SEO tool implementation plan should cover how you segment by language, how often you crawl and who reads the output.

A pre-release checklist for bilingual URLs

Check every item below before a release, after a migration and at least twice a year. The list assumes an English and a Welsh version of shared content under whichever pattern you chose, and the first four items catch most indexing faults.

Bilingual Technical SEO Checklist

  • Every English URL has a Welsh pair
  • Hreflang reciprocal and self-referencing
  • Language codes en-GB and cy correct
  • Each language version self-canonical
  • Both language sitemaps submitted and valid
  • Welsh URLs not blocked or noindexed
  • html lang matches page language
  • Every English URL has a Welsh pair, and every Welsh URL has an English pair.
  • Hreflang annotations are reciprocal and self-referencing on both sides.
  • Language codes are correcten-GB and cy, with x-default set once.
  • Both language sitemaps are submitted, valid and free of errors.
  • Welsh URLs are not blocked by robots.txt or noindex rules.
  • Titles, descriptions and Open Graph locales are written in the page language.
  • html lang matches the page language on every template.
  • Navigation, breadcrumbs and internal links stay within the same language.
  • Redirects from legacy Welsh URLs land on Welsh pages, not English ones.
  • Search Console coverage is reported separately for both language paths.

Public bodies carry one more item. GDS explained in 2018 that every new public sector website needs to meet accessibility standards and publish a statement saying they have been met, so keep that statement available in both languages.

Finally, agree what good looks like. A technical SEO quality checklist signed off by both language leads prevents the usual drift, where Welsh pages quietly fall behind after a template change.

Common questions

Can I use a subdomain for the Welsh version?
Yes, it works. A subdomain or country-code domain splits authority and adds cost, so a path prefix is the simpler choice unless you want a separate Welsh identity.
Should the language switch keep users in the same section?
Yes. Cardiff Council's switch keeps users in the same section, and the Senedd's gives users the same content in the other language. Pair every page, not just the homepage.
Can I use en instead of en-GB for the English pages?
You can, and Google accepts it. en-GB is more precise for a UK audience and is the better choice when you also serve other English-speaking markets.
Does the hreflang set change with separate domains?
Only the URLs change. Each set names the full URL on both hosts, both sides carry it, and each page still lists itself.
How often should I re-test hreflang pairs?
After every template change, every CMS upgrade and every migration. Otherwise, twice a year is a sensible baseline. Bilingual estates drift quietly, and a single broken pair can void a cluster.

More in Rules and ethics