hreflang은 한국어판과 영어판처럼 서로 대응하는 언어별, 지역별 URL을 Google에 알리는 표시입니다. Google이 검색한 사람에게 더 알맞은 현지화 URL을 고르는 데 도움을 줍니다. 페이지 언어를 판별하거나 번역을 만드는 기능은 아닙니다.
같은 영어권 안에서도 국가별 가격과 배송 조건이 다를 수 있어 언어와 지역을 함께 구분해야 할 때가 있습니다. 페이지 전체를 번역했거나 같은 언어라도 국가별 내용이 다를 때, 본문은 같아도 메뉴와 바닥글을 번역했을 때 적용을 검토할 수 있습니다.
이 글은 Google 검색 센터의 현지화 버전 공식 문서(2026년 4월 27일 갱신판)를 기준으로 작성했습니다.
언어와 지역 코드 작성 규칙
<link rel="alternate" hreflang="ko" href="https://example.com/ko/page/">
<link rel="alternate" hreflang="en" href="https://example.com/en/page/">
<link rel="alternate" hreflang="x-default" href="https://example.com/page/">
코드에는 정해진 규격이 있습니다. 언어는 ISO 639-1 코드, 지역은 ISO 3166-1 Alpha 2 코드를 쓰고, 두 표준에 없는 코드(중남미 스페인어를 뜻하는 es-419 같은)는 지원되지 않습니다. 규칙에서 자주 틀리는 지점은 이렇습니다.
- 지역 코드만 단독으로 쓸 수 없습니다. 첫 코드는 반드시 언어여야 합니다
- EU, UK 같은 코드는 공식 지역 코드가 아니라서 무시됩니다
- 언어 코드와 국가 코드가 겹쳐 보이는 함정이 있습니다. 벨기에를 노리고 be라고 쓰면 벨라루스어가 됩니다. 벨기에 대상은 언어별로 de-be, nl-be, fr-be처럼 써야 합니다
x-default는 명시된 언어 어디에도 맞지 않는 사용자를 위한 예약값인데, 구글은 특히 언어 선택 페이지나 자동 리디렉션되는 홈페이지에 쓰도록 설계했다고 밝힙니다.
HTML, HTTP 헤더, 사이트맵 설정 위치
| 방식 | 적합한 경우 |
|---|---|
| HTML link 요소 | 일반 HTML 페이지 |
| HTTP Link 헤더 | PDF처럼 HTML head가 없는 파일 |
| XML 사이트맵 | 언어 버전을 중앙에서 관리할 때 |
세 방식은 Google 관점에서 동등합니다. 구글은 여러 방식을 동시에 써도 이득이 없고 관리만 어려워진다고 명시하므로, 하나를 정확히 운영하세요. HTML 방식이라면 hreflang link 태그에 media 같은 다른 속성을 섞지 말고 별도 태그로 분리하는 것도 공식 규칙입니다.
양방향 상호 참조 요건
한국어 페이지가 영어 페이지를 지정했다면 영어 페이지도 한국어 페이지를 가리켜야 합니다. 서로 가리키지 않으면 Google이 해당 관계를 무시할 수 있습니다. 구글이 밝힌 흔한 오류 세 가지 중 첫째가 바로 이 반환 링크 누락이고, 나머지 둘이 잘못된 언어 코드와 잘못된 지역 코드입니다.
각 페이지는 자기 자신도 목록에 넣고, 상대 경로가 아닌 완전한 절대 URL을 사용합니다.
언어권과 지역을 함께 운영할 때의 권장 구성도 공식 문서에 있습니다. en-ie, en-ca처럼 지역별 영어 페이지를 나눴다면, 나머지 영어 사용자를 받을 일반 en 페이지를 함께 두는 것이 권장 구성입니다. 언어가 많아 전체 상호 연결이 어렵다면 일부를 생략할 수 있는데, 새로 확장한 언어는 사이트의 원래 주력 언어와 우선 연결하라고 안내합니다.
hreflang과 canonical을 함께 쓰는 규칙
각 언어 페이지에 실제로 번역된 고유한 내용이 있다면 일반적으로 자기 주소를 캐노니컬 태그로 지정하고 hreflang으로 서로 연결합니다.
canonical은 대표 URL, hreflang은 현지화 대체 관계를 설명합니다. 모든 번역 페이지의 canonical을 원문 하나로 모으면 현지화 URL이 검색되기 어려울 수 있습니다. 이 조합 규칙은 현지화 문서가 아닌 canonical 쪽 관행으로 통용되는 내용이라, 세부 상황은 canonical 문서 기준으로 확인하는 것이 안전합니다.
hreflang 묶음에는 Google이 실제로 접근하고 색인 후보로 처리할 URL만 넣는 편이 안전합니다. 301로 다른 곳에 이동하는 주소, 404와 noindex 페이지가 섞이면 언어 관계보다 해당 URL의 상태부터 바로잡아야 합니다. 다른 언어의 원문 URL로 canonical을 몰아 현지화 페이지를 없애는 설정도 피합니다. 같은 언어의 지역별 중복을 하나의 선호 URL로 정리하는 경우에는 canonical과 hreflang의 의도를 함께 확인합니다.
번역과 지역별 페이지를 나누는 판단
hreflang은 언어가 다르거나 같은 언어 안에서 국가별 내용이 실제로 달라질 때 씁니다.
| 운영 상황 | 권장 판단 |
|---|---|
| 한국어 원문과 영어 번역문 | ko, en 대체 관계로 연결 |
| 미국과 영국에서 가격, 배송, 연락처가 다름 | en-us, en-gb처럼 지역까지 구분 |
| 영어 내용은 같고 URL만 국가별로 복제 | 중복 운영 필요성과 canonical부터 검토 |
| 언어 선택 화면이 모든 사용자의 입구 | 언어별 URL과 함께 x-default 검토 |
사용자의 IP를 보고 무조건 다른 URL로 보내면 Googlebot과 사용자가 원하는 버전을 열기 어려울 수 있습니다. 자동 이동을 쓰더라도 언어 선택 링크와 각 버전의 고유 URL을 제공하고, x-default는 자동 이동이나 언어 선택 페이지에 연결할 수 있습니다.
자주 생기는 오류
구글이 공식 문서에 명시한 3대 오류부터 챙깁니다.
- 반환 링크 누락, 한쪽 페이지에만 관계를 적는 경우
- 잘못된 언어 코드, 지역 코드만 단독으로 쓰는 경우
- 잘못된 지역 코드, EU 같은 비공식 코드를 쓰는 경우
실무에서 함께 점검할 것도 있습니다. 상대 URL 사용, 자기 자신을 목록에서 빼는 것, 리디렉션되거나 없는 URL 연결, 번역 없이 대량 연결 같은 경우입니다.
Google은 hreflang이나 HTML lang 속성만으로 페이지 언어를 감지하지 않습니다. 실제 본문 언어를 일관되게 제공해야 합니다.
실제 구현을 확인하는 방법
언어별 URL을 직접 열어 페이지 소스의 hreflang 목록을 비교합니다. 각 URL이 자기 자신과 모든 대응 페이지를 같은 절대 URL로 적었는지, 상대 페이지에서도 반환 링크가 있는지 봅니다. 사이트맵 방식이라면 제출한 XML에서 같은 URL 묶음이 서로를 빠짐없이 참조하는지 확인합니다. Google Search Console의 국제 타겟팅 보고서는 종료됐으므로, 소스와 크롤링 결과를 직접 대조해야 합니다.
페이지가 많다면 URL 한 개씩 보지 말고 묶음 단위로 검사합니다. 각 행에 URL, 언어 코드, HTTP 상태, canonical과 선언된 대체 URL을 모은 뒤 다음 오류를 찾습니다.
- 같은 묶음에서 반환 링크가 빠진 URL
- 자기 자신을 선언하지 않은 URL
- 200이 아닌 URL이나 noindex URL
- 다른 언어 URL로 canonical을 보내거나, 같은 언어의 중복 정리 의도와 맞지 않는 canonical
- 같은 언어와 지역 조합을 두 URL이 중복 선언한 경우
오류를 고친 뒤 실제 검색에서는 국가와 언어 조건을 바꿔 원하는 버전이 선택되는지 표본 확인합니다. hreflang은 힌트이므로 코드가 맞아도 Google이 다른 URL을 선택할 수 있고, 그때는 본문 언어와 지역 정보, canonical과 리디렉션까지 함께 봐야 합니다.
hreflang은 Google 검색의 언어별 URL 선택을 돕는 표시입니다. ChatGPT, Claude와 같은 범용 챗봇이 답변 언어나 인용 URL을 고르는 공통 규칙은 아닙니다. AI 서비스의 언어 선택은 제품별 검색 시스템과 모델 동작에 따라 달라집니다.
자주 묻는 질문
hreflang을 쓰면 자동 번역되나요?
아닙니다. 이미 존재하는 현지화 페이지의 관계를 알릴 뿐입니다.
영어 페이지가 하나뿐이어도 en-us를 써야 하나요?
국가별 차이가 없다면 일반 언어 코드인 en을 사용할 수 있습니다. 오히려 지역을 잘게 나눴다면 나머지 사용자를 받을 일반 en 페이지를 함께 두는 것이 구글 권장입니다.
간체와 번체 중국어는 어떻게 구분하나요?
zh-Hans(간체), zh-Hant(번체)처럼 문자 체계 코드를 명시할 수 있습니다. zh-TW처럼 지역 코드로 쓰면 구글이 문자 체계를 유추하지만, 명시하는 쪽이 분명합니다.
다른 도메인의 페이지도 연결할 수 있나요?
가능합니다. 다만 각 페이지가 서로의 관계를 양방향으로 표시해야 합니다.