구조·마크업 · 공식 문서

hreflang 태그 넣는 법과 3가지 방법 선택 기준

hreflang 은 같은 내용의 언어·지역별 페이지가 서로 짝이라는 것을 구글에 알리는 표시로, 구글은 이를 보고 사용자 언어·지역에 맞는 버전을 보여 줍니다. HTML 태그·HTTP 헤더·사이트맵 3가지 방법은 구글에게 같은 효과이므로 사이트에 편한 하나를 고르고, 각 버전이 자기 자신과 다른 버전을 모두 적게 합니다.

한국어 페이지 옆에 영어·일본어 페이지를 두면, 검색엔진은 셋이 같은 내용인지 따로 알아야 합니다. 그 짝을 알려 주는 표시가 hreflang 입니다.

넣는 자리는 HTML·HTTP 헤더·사이트맵 셋 중 하나입니다. 어디에 넣든 규칙은 같아서, 규칙을 먼저 알면 방법은 사이트 사정으로 고르면 됩니다.

발견 01

hreflang 은 언어·지역별 페이지가 같은 내용의 짝이라고 알리는 표시이고, 언어 판별은 구글 알고리즘이 따로 합니다

If you have multiple versions of a page for different languages or regions, tell Google about these different variations. Doing so will help Google Search point users to the most appropriate version of your page by language or region.

언어나 지역별로 한 페이지의 여러 버전이 있으면 구글에 알린다. 그러면 구글 검색이 사용자에게 언어·지역에 가장 맞는 버전을 보여 주는 데 도움이 된다.

Google Search Central 「Tell Google about localized versions of your page」
구글이 hreflang 을 권하는 상황원문
메뉴·푸터만 번역하고 본문은 한 언어If you keep the main content in a single language and translate only the template, such as the navigation and footer.본문은 한 언어로 두고 메뉴·푸터 같은 틀만 번역한 경우.
같은 언어로 지역마다 조금 다른 내용If your content has small regional variations with similar content, in a single language.한 언어로 된 비슷한 내용이 지역마다 조금씩 다른 경우.
사이트 전체를 여러 언어로 번역If your site content is fully translated into multiple languages.사이트 콘텐츠를 여러 언어로 모두 번역한 경우.
본문을 번역한 현지화 페이지는 중복으로 보지 않는다고 같은 문서에 적었습니다.
알아 둘 것원문
중복 여부Localized versions of a page are only considered duplicates if the main content of the page remains untranslated.현지화된 페이지는 주요 콘텐츠가 번역되지 않은 경우에만 중복으로 봅니다.
언어 판별Google doesn't use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.구글은 페이지 언어를 감지할 때 hreflang 이나 HTML lang 속성을 쓰지 않고, 알고리즘으로 언어를 판단한다.
하위 도메인 이름Note that the language-specific subdomains in these URLs (en, en-gb, en-us, de) are not used by Google to determine the target audience for the page; you must explicitly map the target audience.URL의 언어별 하위 도메인(en, en-gb, en-us, de)은 구글이 페이지 대상 판단에 쓰지 않으므로 대상을 명시적으로 지정해야 합니다.
en.·de. 같은 하위 도메인 이름만으로는 대상이 정해지지 않습니다. hreflang 으로 직접 적습니다.

발견 02

넣는 방법은 3가지이고 구글에게는 같은 효과라서, 파일 종류와 관리 방식으로 하나를 고릅니다

방법넣는 자리이럴 때 고릅니다예공식 문서 원문
HTML 태그각 페이지 <head> 안의 <link> 요소HTML 페이지이고, 사이트맵이나 응답 헤더를 손대기 어려울 때<link rel="alternate" hreflang="ko" href="https://example.com/ko/page" />This is useful if you don't have a sitemap or the ability to specify HTTP response headers for your site. The set of links is identical for every version of the page.사이트맵이 없거나 HTTP 응답 헤더를 지정할 수 없을 때 쓸모 있다. 링크 묶음은 모든 버전에서 같다.
HTTP 헤더서버 응답의 Link 헤더PDF 처럼 HTML 이 아닌 파일일 때Link: <https://example.com/ko/file.pdf>; rel="alternate"; hreflang="ko", <https://example.com/en/file.pdf>; rel="alternate"; hreflang="en"This is useful for non-HTML files (like PDFs).PDF 처럼 HTML 이 아닌 파일에 쓸모 있다.
사이트맵XML 사이트맵의 <url> 마다 <xhtml:link> 하위 요소페이지가 많아 한 파일에서 묶어 관리하고 싶을 때<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page"/>Therefore if you have 3 versions of a page, your sitemap will have entries for the URLs of each version, and each entry will have 3 identical child entries. Child elements don't count towards the URL limit for sitemaps.한 페이지의 버전이 셋이면 사이트맵에 버전마다 항목이 있고, 항목마다 같은 하위 요소 셋이 붙는다. 하위 요소는 사이트맵 URL 수 한도에 들어가지 않는다.
예의 URL 은 설명용입니다. 실제로는 언어 버전마다 한 줄씩, 자기 자신까지 모두 적습니다.
The three methods are equivalent from Google's perspective and you can choose the method that's the most convenient for your site. 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).

세 방법은 구글에게 같으므로 사이트에 가장 편한 것을 고른다. 셋을 함께 써도 검색에 이득은 없고, 오히려 셋을 관리하기가 훨씬 어려울 수 있다.

Google Search Central 「Tell Google about localized versions of your page」

셋을 함께 쓰면 관리할 자리만 늘어납니다. 원문도 하나를 고르라고 권합니다.

HTML 태그는 <head> 안에 있어야 하고, 사이트맵 방법은 사이트맵 규칙도 함께 따릅니다. 사이트맵 기본은 「사이트맵 뜻과 sitemap.xml」 편에 자세히 적었습니다.

발견 03

어느 방법이든 공통 규칙은 6가지이고, 서로 가리키지 않으면 표시가 무시됩니다

규칙하는 일공식 문서 원문
자기 자신도 적기각 언어 버전은 자기 자신과 다른 모든 언어 버전을 적습니다.Each language version must list itself as well as all other language versions.각 언어 판은 자기 자신과 다른 모든 언어 판을 나열해야 합니다.
서로 가리키기A 가 B 를 적으면 B 도 A 를 적어야 합니다. 한쪽만 적으면 무시됩니다.If two pages don't both point to each other, the tags will be ignored. Missing return links: If page X links to page Y, page Y must link back to page X.두 페이지가 서로를 가리키지 않으면 태그는 무시된다. 흔한 실수인 돌아오는 링크 누락: X 가 Y 를 적으면 Y 도 X 를 적어야 한다.
전체 URLhttps:// 부터 적은 전체 URL 을 씁니다. 다른 도메인이어도 됩니다.Alternate URLs must be fully-qualified, including the transport method (http/https), so: Alternate URLs do not need to be in the same domain.대체 URL 은 http·https 를 포함한 전체 URL 이어야 한다. 대체 URL 이 같은 도메인일 필요는 없다.
언어 코드 먼저첫 코드는 언어(ISO 639-1), 둘째는 지역(ISO 3166-1 Alpha 2)이며 지역은 빼도 됩니다.The first code of the hreflang attribute is the language code (in ISO 639-1 format) followed by an optional second code that represents the region code (in ISO 3166-1 Alpha 2 format) of an alternate URL.hreflang 의 첫 코드는 언어 코드(ISO 639-1)이고, 그 뒤에 지역 코드(ISO 3166-1 Alpha 2)를 붙일 수 있다.
x-default어느 언어에도 맞지 않는 사용자를 보낼 페이지(언어 선택 페이지 등)를 x-default 로 적습니다.Consider adding a fallback page for unmatched languages, especially on language/country selectors or auto-redirecting home pages.특히 언어·국가 선택 페이지나 자동 리디렉션 홈에는 맞지 않는 언어를 위한 대체 페이지를 두는 것을 검토한다.
같은 언어의 캐노니컬캐노니컬은 같은 언어 페이지로 둡니다.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 을 쓴다면 같은 언어의 표준 페이지를, 없으면 가장 알맞은 대체 언어의 페이지를 표준으로 지정한다.
캐노니컬 규칙은 구글 「How to specify a canonical URL」 문서 원문입니다. 캐노니컬 자체는 「캐노니컬 태그」 편에 자세히 적었습니다.

가장 흔한 실수는 돌아오는 링크가 빠진 경우입니다. 한국어 페이지만 영어 페이지를 적고 영어 페이지가 한국어 페이지를 적지 않으면 그 짝은 무시됩니다.

그래서 hreflang 은 페이지마다 따로 쓰기보다 한 목록에서 만들어 모든 버전에 같은 묶음을 넣습니다. 원문도 링크 묶음은 모든 버전에서 같다고 적었습니다.

발견 04

한국어 코드는 ko 이고, 국가 코드처럼 보이는 kr 은 언어 코드표에서 다른 언어입니다

코드뜻규칙에 맞음
ko한국어(지역 무관)맞음
ko-KR한국어, 대한민국 사용자맞음
en영어(지역 무관)맞음
ja일본어(지역 무관)맞음
zh-Hans중국어 간체맞음
krISO 639-1 코드표에서 kr 은 카누리어(Kanuri)입니다틀림
en-UKUK 는 예약된 코드라 지역 부분이 무시됩니다(영국은 en-GB)틀림
언어 코드는 미국 의회도서관 ISO 639-2 코드표의 ISO 639-1 열로 확인했습니다. 대소문자는 어느 쪽이든 됩니다.
코드 규칙원문
국가 코드만은 안 됨You can't specify the country code by itself. The first code stands for the language and Google doesn't automatically derive the language from a country code.국가 코드만 적을 수는 없다. 첫 코드는 언어이며, 구글은 국가 코드에서 언어를 자동으로 끌어내지 않는다.
예약된 코드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 는 구글 검색에 효과가 없다.
대소문자The hreflang value is case-insensitive; Google accepts lowercase and uppercase codes, but formatting region codes in uppercase (for example, en-GB) follows ISO 3166-1 Alpha 2 convention.hreflang 값은 대소문자를 가리지 않는다. 다만 지역 코드를 대문자로 쓰는 것(en-GB)이 ISO 3166-1 Alpha 2 관례다.
hreflang="kr" 은 국가 코드만 적은 실수이고, 언어 자리로 읽히면 카누리어가 됩니다.

발견 05

B2B·B2C·B2G 는 hreflang 을 넣는 방법이 서로 다르게 맞습니다

예시 ① 영어 카탈로그 PDF 를 둔 수출 제조사(B2B)

수출 제조사의 문의형 기업 사이트가 제품 페이지와 카탈로그 PDF 를 한국어·영어로 둡니다. 제품 페이지는 HTML 태그로 ko·en 짝을 넣습니다.

PDF 는 HTML 이 아니어서 <head> 가 없습니다. 서버의 Link 헤더로 ko·en 짝을 보내고, 두 파일 모두 같은 헤더를 돌려주게 합니다.

예시 ② 일본어 페이지를 연 쇼핑몰(B2C)

자사 쇼핑몰이 한국어·영어·일본어 상품 페이지와 언어 선택 페이지를 둡니다. 상품 수가 많아 사이트맵 방법으로 네 줄 묶음을 한 파일에서 만듭니다.

언어 선택 페이지는 x-default 로 적습니다. 일본어 페이지가 한국어 페이지를 적지 않은 줄이 생기면 그 짝은 무시되므로, 생성 뒤 줄마다 묶음 수를 셉니다.

예시 ③ 외국어 안내 페이지를 둔 공공기관 누리집(B2G)

공공기관 누리집이 민원 안내를 한국어·영어·중국어 간체로 둡니다. 페이지 수가 적어 HTML 태그로 ko·en·zh-Hans 묶음을 넣습니다.

메뉴·푸터만 번역한 페이지도 hreflang 대상이지만, 본문이 번역되지 않으면 중복으로 볼 수 있습니다. 민원 안내 본문까지 번역해 둡니다.

그럼 hreflang 은 어떤 순서로 넣나요?

  1. 같은 내용의 언어·지역별 페이지를 한 줄에 한 묶음씩 표로 적고, 묶음마다 언어 코드를 붙입니다.
  2. 위 선택 기준으로 HTML 태그·HTTP 헤더·사이트맵 중 하나를 고릅니다. PDF 가 있으면 그 파일은 HTTP 헤더로 넣습니다.
  3. 묶음의 모든 페이지에 자기 자신을 포함한 같은 목록을 넣고, 전체 URL 로 적었는지 봅니다.
  4. 언어 선택 페이지가 있으면 x-default 로 더하고, 코드에 kr·en-UK 같은 실수가 없는지 확인합니다.
  5. 각 버전의 캐노니컬이 같은 언어 페이지를 가리키는지 확인합니다.

조사 방법

  • 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
  • Library of Congress 「ISO 639-2 Language Code List - Codes for the representation of names of languages」 (문서 수정일 2026-01-15) · 최종 확인일 2026-10-25 · https://www.loc.gov/standards/iso639-2/php/code_list.php
  • 방법별 선택 기준과 공통 규칙 6가지는 위 구글 문서의 방법·가이드라인·흔한 실수 항목을 작업 단위로 묶은 것입니다. 묶는 방식은 편집 판단입니다.
  • 코드 표의 언어 이름은 미국 의회도서관 코드표의 ISO 639-1 열을 대조한 결과입니다.
  • 예시 ①②③은 이해를 돕기 위해 만든 가상 상황이며, 실제 기업·기관의 사례가 아닙니다.
  • 원문은 영어판(hl=en)이고, 도구·보고서 이름은 같은 문서 한국어판(hl=ko) 표기를 따랐습니다. 코드표는 영어 원문만 있습니다.