[Back to the blog](https://yudis.dev/en/blog) 

# Bilingual Website SEO: Publishing English and Indonesian Pages

A practical English–Indonesian website checklist covering URLs, translated content, language alternates, canonical links and release checks.

By  [Yudistira Ashadi](https://yudis.dev/en/about)   
Published 8 November 2026

![English cover titled "One website. Two languages.", with matching English and Indonesian website previews.](/images/blog/bilingual-website-seo-en-v5.webp)

A bilingual English–Indonesian website works best when each language has a stable URL, complete translated content, and an obvious way to switch to the equivalent page. Treat translation as part of the publishing workflow, with the same attention to accuracy and usability as the original article.

I start with two questions: who needs each language, and who will keep both versions accurate? The tooling comes after that.

## Decide what each audience needs

An Indonesian purchasing team may need a clear service description and a local-language handover. An international partner may need an English explanation of the same responsibilities. Both need accurate contact information and evidence of relevant work.

List the pages each group uses to make a decision: profile, services, project details, articles, and contact. Translate those complete journeys. Translating a homepage while leaving its project links or form errors in another language creates an uneven experience.

Keep names, dates, technical terms, and project outcomes aligned. Adapt the wording so it reads naturally, while preserving the meaning and limitations of the source. A translation must not turn “built a prototype” into “launched a production platform.”

## Choose stable URLs and page pairs

On this site, I use `/en` for English and `/id` for Indonesian. This article lives at `/en/blog/bilingual-website-seo`, with its translation at `/id/blog/bilingual-website-seo`. Other structures work too; choose one consistent rule.

Store an article’s identity separately from its translated title so an editorial title change does not accidentally break its counterpart. Maintain an explicit mapping if slugs differ between languages. A language switch should retain the current page when a translation exists and give an understandable destination when it does not.

## Connect alternates and canonical URLs

Google’s localized-page documentation says language alternates should list themselves and their counterparts using fully qualified URLs and reciprocal links. For a two-language site, review the `en` and `id` entries together; `x-default` can identify a fallback. See  [Google’s localized versions guide](https://developers.google.com/search/docs/specialty/international/localized-versions) .

Canonical links and language alternates serve different purposes. For translated pages intended to be indexed, use a canonical in the same language. Keep sitemap entries, internal links, and canonical URLs consistent. See  [Google’s canonicalization guidance](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) .

The following review table is a practical release aid rather than a complete search-engine specification:

| Page detail | English page | Indonesian page |
| --- | --- | --- |
| Visible content | Complete English article | Complete Indonesian counterpart |
| HTML language | `en` | `id` |
| Title and description | Written for English readers | Written for Indonesian readers |
| Language switch | Equivalent Indonesian page | Equivalent English page |
| Canonical | Preferred English URL | Preferred Indonesian URL |
| Contact journey | Clear next step in English | Clear next step in Indonesian |

## Keep the repository easy to edit

For a modest publication, Markdown files can provide a manageable content workflow. Give each article metadata for its title, description, language, publication date, update date, and status. Review the article and its counterpart in the same change whenever the meaning changes.

Drafts should stay outside public discovery. A scheduled post needs a publishing mechanism that actually runs at the intended time; in a build-based site, that means a new build. An archive decision should update article lists and discovery output together.

Record editorial ownership. If the English text changes a project outcome or service boundary, assign someone to review the Indonesian version. For routine corrections, update the date when the editorial change warrants it rather than advancing dates automatically on every deployment.

## Test the website as a reader

Open both language URLs directly, including an article detail page. Read the title, introduction, project result, navigation, and contact action. Follow the language switch and confirm it reaches the corresponding article. Check a missing page, a long title, and a narrow phone layout.

Inspect the initial HTML response for the visible article and page metadata. Confirm that the language alternates are absolute URLs and point to live pages. Check internal article links in each language. Test that a preview or draft cannot appear in the public article list or sitemap.

After release, keep a short log of indexing issues, broken links, and reader questions. A useful translation review includes a person who understands the business terminology, not only a spell checker.

## Frequently asked questions

### Is translating the menu enough?

It does not provide a complete localized experience. Translate the content a reader needs to decide and act, including project explanations, buttons, form labels, validation messages, and confirmation states.

### Should the Indonesian page canonicalize to the English page?

For a complete Indonesian translation intended for indexing, use a preferred Indonesian URL. Review language alternates separately so the relationship between translations remains clear.

### Can machine translation help?

It can assist drafting. A human should verify meaning, technical vocabulary, numbers, confidentiality, and the next action before publishing. Keep the same review standard for both languages.

### Do we need a separate page for every Indonesian city?

Create pages when they provide distinct, useful service information. A single accurate explanation of collaboration with teams in Surabaya, Jakarta, and elsewhere in Indonesia can be more maintainable than many repetitive pages.

### How can I plan a bilingual site with an engineer?

Bring the audience list, existing pages, preferred languages, and content owner. Read  [the guide to choosing a software engineer](https://yudis.dev/en/blog/choosing-software-engineer-indonesia) , explore  [my projects](https://yudis.dev/en/portfolio) , or  [contact me](https://yudis.dev/en/#contacts)  to discuss the publishing and application requirements together.

## About the author

I’m Yudistira Ashadi, a lead software engineer with 10+ years building web, mobile, and AI products for government, SaaS, and finance.

 [View experience & credentials](https://yudis.dev/en/about)

---

Canonical: https://yudis.dev/en/blog/bilingual-website-seo
