구조·마크업 · 공식 문서
hreflang 태그 확인 방법, 반환 링크와 코드 점검 순서
언어 판 짝표를 만든 뒤 <head> 위치, 자기 자신 포함 여부, 반환 링크, 절대 URL, 언어·지역 코드, x-default, 캐노니컬을 차례로 봅니다. 구글은 반환 링크 누락과 잘못된 언어·지역 코드를 가장 흔한 실수로 적었습니다.
hreflang 은 넣는 것보다 맞게 넣는 것이 어렵습니다. 한 판에서 줄 하나가 빠지면 짝이 깨지고, 구글은 그 표시를 무시할 수 있습니다.
이 편은 구글 공식 문서가 적은 규칙과 흔한 실수를 점검 순서로 다시 세웠습니다. 외부 검사 도구를 쓰더라도 무엇을 봐야 하는지는 같습니다.
발견 01
hreflang 점검은 짝표에서 시작해 캐노니컬까지 9단계로 봅니다
| 순서 | 볼 것 | 어디서 보나 | 공식 문서 원문 |
|---|---|---|---|
| 1 | 언어 판 짝표 만들기 | 페이지마다 언어별 URL을 한 줄에 적은 표 | Each language version must list itself as well as all other language versions.각 언어 판은 자기 자신과 다른 모든 언어 판을 나열해야 합니다. |
| 2 | <head> 안에 있는지 | 브라우저 실행 후 HTML을 HTML 검사기에 붙여 확인 | The <link> tags must be inside a well-formed <head> section of the HTML. If in doubt, paste code from your rendered page into an HTML validator to ensure that the links are inside the <head> element.<link> 태그는 HTML의 올바른 <head> 안에 있어야 합니다. 확실하지 않으면 렌더링된 페이지의 코드를 HTML 검사기에 붙여 링크가 <head> 안에 있는지 확인합니다. |
| 3 | 자기 자신 포함, 모든 판이 같은 묶음인지 | 판마다 hreflang 줄 수와 URL 비교 | Each language version must list itself as well as all other language versions. The set of links is identical for every version of the page.언어 판마다 자기 자신과 다른 모든 언어 판을 나열해야 합니다. 링크 묶음은 모든 판에서 같습니다. |
| 4 | 반환 링크 | A 판이 B 를 가리키면 B 판도 A 를 가리키는지 | Missing return links: If page X links to page Y, page Y must link back to page X. If this is not the case for all pages that use hreflang annotations, those annotations may be ignored or not interpreted correctly.반환 링크 누락: 페이지 X 가 Y 를 가리키면 Y 도 X 를 가리켜야 합니다. hreflang 을 쓰는 모든 페이지가 그렇지 않으면 주석이 무시되거나 잘못 해석될 수 있습니다. |
| 5 | 절대 URL | href 가 https:// 로 시작하는지 | Alternate URLs must be fully-qualified, including the transport method (http/https), so: https://example.com/foo, not //example.com/foo or /foo대체 URL은 http·https 까지 포함한 전체 URL이어야 합니다. //example.com/foo 나 /foo 가 아니라 https://example.com/foo 로 씁니다. |
| 6 | 언어 코드 | 첫 코드가 ISO 639-1 언어 코드인지, 국가 코드만 쓰지 않았는지 | Only language codes listed in ISO 639-1 and region codes listed in ISO 3166-1 Alpha 2 are supported; other codes that aren't listed in those standards, such as es-419, aren't supported. You can't specify the country code by itself.ISO 639-1 언어 코드와 ISO 3166-1 Alpha 2 지역 코드만 지원하고, es-419 처럼 그 표준에 없는 코드는 지원하지 않습니다. 국가 코드만 따로 적을 수는 없습니다. |
| 7 | 지역 코드 | UK·EU 같은 예약 코드 대신 GB 등 ISO 3166-1 코드인지 | If you use codes that are listed as reserved for something else, Google Search ignores that part of the annotation (for example, using EU, UN, or UK in hreflang annotations doesn't have an effect on Google Search).다른 용도로 예약된 코드를 쓰면 구글 검색은 그 부분을 무시한다. 예를 들어 EU·UN·UK 는 구글 검색에 효과가 없다. |
| 8 | x-default | 맞는 언어가 없는 방문자용 줄이 있는지 | Consider adding a fallback page for unmatched languages, especially on language/country selectors or auto-redirecting home pages.특히 언어·국가 선택 페이지나 자동 리디렉션 홈에는 맞지 않는 언어를 위한 대체 페이지를 두는 것을 검토한다. |
| 9 | 캐노니컬 | 각 판의 캐노니컬이 같은 언어 판을 가리키는지 | If you're using hreflang elements, make sure to specify a canonical page in the same language, or the best possible substitute language if a canonical page doesn't exist for the same language.hreflang 을 쓴다면 같은 언어의 표준 페이지를, 없으면 가장 알맞은 대체 언어의 페이지를 표준으로 지정한다. |
첫 단계인 짝표가 나머지의 기준입니다. 페이지마다 한국어·영어·일본어 URL을 한 줄에 적어 두면 빠진 줄과 틀린 URL이 바로 보입니다.
둘째 단계는 원본 소스가 아니라 브라우저 실행 후 HTML로 봅니다. 스크립트가 hreflang 을 넣거나 <head> 밖으로 밀어내는 경우가 있기 때문입니다.
발견 02
구글이 가장 먼저 꼽은 흔한 실수는 반환 링크 누락이고, 짝이 안 맞으면 표시가 무시될 수 있습니다
Missing return links: If page X links to page Y, page Y must link back to page X. If this is not the case for all pages that use hreflang annotations, those annotations may be ignored or not interpreted correctly.
반환 링크 누락: 페이지 X 가 Y 를 가리키면 Y 도 X 를 가리켜야 합니다. hreflang 을 쓰는 모든 페이지가 그렇지 않으면 주석이 무시되거나 잘못 해석될 수 있습니다.
| 흔한 실수(문서 순서) | 확인하는 법 | 공식 문서 원문 |
|---|---|---|
| 반환 링크 누락 | 짝표의 모든 칸에서 서로 가리키는지 대조 | If two pages don't both point to each other, the tags will be ignored.두 페이지가 서로를 가리키지 않으면 태그는 무시됩니다. |
| 잘못된 언어 코드 | 첫 코드가 언어인지(be 는 벨라루스어) | You can't specify the country code by itself.국가 코드만 따로 적을 수는 없습니다. |
| 잘못된 지역 코드 | UK 대신 GB, EU·UN 은 효과 없음 | If you use codes that are listed as reserved for something else, Google Search ignores that part of the annotation (for example, using EU, UN, or UK in hreflang annotations doesn't have an effect on Google Search).다른 용도로 예약된 코드를 쓰면 구글 검색은 그 부분을 무시한다. 예를 들어 EU·UN·UK 는 구글 검색에 효과가 없다. |
모든 언어 쌍을 다 잇기 어려우면 일부를 빼도 됩니다. 구글은 서로 가리키는 쌍만 처리한다고 적었습니다(원문: If it becomes difficult to maintain a complete set of bidirectional links for every language, you can omit some languages on some pages; Google will still process the ones that point to each other.)
이때도 새로 연 언어 판은 원래 주력 언어 판과 서로 잇는 것을 먼저 챙깁니다.
발견 03
HTML·HTTP 헤더·사이트맵 3가지 방법은 확인 자리가 다르고, 하나만 고르면 점검이 쉬워집니다
| 방법 | 확인할 것 | 공식 문서 원문 |
|---|---|---|
| HTML <link> | <head> 안 위치, 다른 속성(media 등)과 한 태그에 섞지 않았는지 | Additionally, don't combine link tags for alternate representations of the document; for example don't combine hreflang annotations with other attributes such as media in a single <link> tag.대체 표현의 link 태그를 섞지 않습니다. 예를 들어 hreflang 주석을 media 같은 다른 속성과 한 <link> 태그에 합치지 않습니다. |
| HTTP 헤더 | PDF 같은 파일의 응답 헤더 Link: 값이 판마다 같은지 | This is useful for non-HTML files (like PDFs). The Link: header returned for every version of a page is identical.HTTP 헤더 방식은 PDF 같은 HTML이 아닌 파일에 유용합니다. 페이지의 모든 판이 돌려주는 Link: 헤더는 같습니다. |
| 사이트맵 | <url> 마다 자기 자신 포함 모든 판의 xhtml:link 가 있는지 | Each <url> element must have a child element <xhtml:link rel="alternate" hreflang="supported_language-code"> that lists every alternate version of the page, including itself.사이트맵의 <url> 마다 자기 자신을 포함한 모든 대체 판을 나열하는 xhtml:link 하위 요소가 있어야 합니다. |
While you can use all three methods at the same time, there's no benefit in Search (in fact, it maybe be much harder to manage three implementations instead of just picking one).
세 방법을 동시에 써도 되지만 검색에서 얻는 이득은 없고, 하나만 고르는 것보다 관리가 훨씬 어려울 수 있습니다.
HTTP 헤더는 터미널에서 응답 헤더만 받아 Link: 줄을 봅니다. 사이트맵은 xhtml 네임스페이스와 <url> 마다의 xhtml:link 수를 셉니다.
외부 hreflang 검사 도구도 쓸 수 있습니다. 구글은 문서에 도구 두 개를 소개하면서 구글이 관리하거나 확인하는 도구는 아니라고 적었습니다.
Lighthouse 의 hreflang 항목은 「구글 SEO 점수, Lighthouse 검사」 편에 적었습니다.
발견 04
B2B·B2C·B2G 는 hreflang 이 깨지는 자리가 서로 다릅니다
예시 ① 해외 대리점용 영문 사이트를 따로 둔 B2B 기업
국문 사이트와 영문 사이트가 서로 다른 도메인입니다. 대체 URL은 같은 도메인일 필요가 없어 두 사이트를 hreflang 으로 이을 수 있습니다.
점검해 보니 영문 사이트만 국문을 가리키고 국문 사이트에는 줄이 없었습니다. 4단계 반환 링크에서 걸리는 경우입니다.
예시 ② 영국·미국 판을 나눈 쇼핑몰(B2C)
영국 판에 hreflang="en-UK" 를 적어 두었습니다. UK 는 예약 코드라 구글이 그 부분을 무시하므로 en-GB 로 고칩니다.
상품 수가 많아 HTML 대신 사이트맵 방식을 고르고, HTML 의 hreflang 줄은 지워 방법을 하나로 맞춥니다.
예시 ③ 국문·영문 안내 PDF를 내는 공공기관 누리집(B2G)
같은 안내서의 국문·영문 PDF가 있습니다. PDF에는 <head> 가 없으므로 HTTP 헤더 방식으로 두 파일을 잇습니다.
두 PDF의 응답 헤더 Link: 값이 같은지, 각자 자기 자신을 포함하는지 확인합니다.
그럼 오늘 무엇부터 확인하나요?
- 언어 판이 있는 페이지 목록을 사이트맵에서 뽑아 짝표를 만듭니다.
- 대표 페이지 몇 개의 브라우저 실행 후 HTML을 HTML 검사기에 붙여 <head> 안 위치를 봅니다.
- 위 9단계 표를 순서대로 따라가며 짝표 칸마다 표시합니다.
- 반환 링크와 코드 오류부터 고칩니다. x-default 를 어디에 둘지는 「hreflang x-default」 편에 자세히 적었습니다.
- HTML·HTTP 헤더·사이트맵 중 실제로 쓰는 방법 하나만 남깁니다.
조사 방법
- Google Search Central 「Tell Google about localized versions of your page」 (문서 수정일 2026-09-21) · 최종 확인일 2026-10-25 · https://developers.google.com/search/docs/specialty/international/localized-versions
- Google Search Central 「How to specify a canonical URL with rel="canonical" and other methods」 (문서 수정일 2026-07-10) · 최종 확인일 2026-10-18 · https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls
- 점검 순서 9단계는 위 문서의 규칙과 「일반적인 실수」를 확인 순서로 묶은 것입니다. 묶는 방식은 편집 판단입니다.
- 구글 문서가 소개한 외부 도구 두 개는 이름을 옮기지 않았습니다. 문서에 구글이 관리·확인하지 않는 도구라고 적혀 있습니다.
- 예시 ①②③은 이해를 돕기 위해 만든 가상 상황이며, 실제 기업·기관의 사례가 아닙니다.
- 원문은 영어판(hl=en)이고, 절 이름은 같은 문서 한국어판(hl=ko) 표기를 따랐습니다.