XML 사이트맵 검사기는 크롤러가 읽는 방식 그대로 사이트맵을 읽어, 검색엔진이 문제를 발견하기 전에 먼저 알려 줍니다. urlset 사이트맵이나 sitemapindex 파일의 XML을 붙여 넣으면 URL 수, 오류와 경고 수, lastmod가 얼마나 최신인지를 대시보드로 보여 주고, URL마다 구체적인 지적 사항과 파일 속 줄 번호를 한 행씩 나열합니다.
사이트맵 생성기, CMS 플러그인, 빌드 스크립트를 바꾼 직후에 쓰기 좋습니다. 전체 URL 대신 상대 경로가 들어가거나, 네임스페이스가 빠지거나, 이스케이프하지 않은 & 때문에 XML이 깨지거나, 같은 URL이 두 번 들어가는 문제는 쉽게 생기지만 수천 줄짜리 파일에서는 눈에 잘 띄지 않습니다.
붙여 넣은 XML은 브라우저의 내장 XML 파서로만 처리되고 업로드되지 않습니다. 이 도구는 구조와 loc 값만 검사하며 URL에 실제로 요청을 보내지는 않으므로, 페이지가 200을 반환하는지, 리다이렉트되는지, robots.txt로 막혀 있는지는 알 수 없습니다.
사용 방법
사이트맵 붙여 넣기 또는 열기
XML을 붙여 넣거나
.xml·.xml.gz파일을 끌어 놓거나 파일 열기를 사용합니다. gzip 압축을 푼 뒤 50 MiB(52,428,800바이트)까지 받습니다.대시보드 읽기
입력하는 즉시 XML을 파싱하고 큰 입력은 백그라운드 워커에서 분석합니다. 타일에 URL 수, 오류, 경고, 호스트 수가 나오고, 막대는
lastmod가 얼마나 최근인지(7일, 30일, 90일, 365일, 그 이상, 없음, 미래)로 URL을 묶어 보여 줍니다.파일 전체 점검 확인
파일 전체에 대한 지적이 먼저 나옵니다. 네임스페이스 누락·불일치, 빈 파일, 50,000개 초과, 한 파일에 여러 호스트나 http·https가 섞인 경우, 구글이 무시하는
changefreq·priority사용 등입니다.표 훑어보기
URL마다
lastmod와 경과 일수, 각 지적 사항(쉬운 말로)과 해당 줄 번호가 한 행으로 나옵니다. 오류나 경고만 걸러 볼 수 있고, 표는 100행씩 보여 줍니다.수정 후 재검사
생성 원본에서 파일을 고쳐 다시 만든 뒤 경고가 사라질 때까지 붙여 넣어 확인합니다.
작동 원리
sitemaps.org 프로토콜
사이트맵 프로토콜(sitemaps.org)은 네임스페이스 http://www.sitemaps.org/schemas/sitemap/0.9에서 두 가지 XML 문서를 정의합니다. urlset은 페이지 URL을 나열하며 각 url 요소에 필수 loc과 선택 lastmod, changefreq, priority를 둡니다. sitemapindex는 다른 사이트맵 파일을 나열하며 각 sitemap 요소에 필수 loc과 선택 lastmod를 둡니다.
사이트맵 파일 하나에는 URL이 최대 50,000개까지 들어갑니다. 프로토콜은 압축을 푼 크기 제한을 50 MB라고 부르면서 52,428,800바이트로 정의합니다. 이는 정확히 50 MiB이며, 이 도구는 모호하지 않은 이 단위를 표시합니다. 더 큰 사이트는 URL을 여러 파일로 나누고 사이트맵 인덱스에서 참조합니다. 인덱스에도 사이트맵 50,000개와 같은 비압축 바이트 상한이 적용됩니다. 모든 loc은 프로토콜로 시작하는 완전한 URL이어야 하고 2,048자 미만이어야 하며 엔티티 이스케이프(&는 &)가 되어 있어야 합니다.
이 도구가 검사하는 것과 검사하지 않는 것
이 도구는 입력이 올바른 XML인지(맨몸 &, 닫히지 않은 태그, 알 수 없는 엔티티는 줄 번호와 함께 보고), 루트가 sitemaps.org 네임스페이스의 urlset 또는 sitemapindex인지, 항목 수가 50,000개와 압축 해제 기준 52,428,800바이트를 넘지 않는지 확인합니다. URL마다 loc이 있고 비어 있지 않으며 2,048자 이하의 절대 http·https URL이고 한 번만 나오는지, lastmod가 올바른 W3C Datetime(2026-09-28 또는 시간대가 있는 전체 시각)이며 미래가 아닌지, changefreq·priority가 허용된 값인지 봅니다. 파일 전체로는 호스트나 http·https가 섞였는지 살핍니다.
xhtml:link 대체 URL은 XHTML 네임스페이스, rel="alternate", hreflang 코드와 절대 href, 언어 중복, 자기 참조, 같은 사이트맵에 실린 대체 URL끼리의 상호 참조를 검사합니다. 사이트맵 네임스페이스에 속한 요소만 사이트맵 필드로 보므로 image:loc 같은 확장 요소는 페이지로 오인되지 않고, 이미지 항목은 따로 개수만 셉니다. URL로 요청을 보내지는 않으므로 페이지가 200을 반환하는지, 색인 가능한지는 알 수 없습니다. 결과가 깨끗해도 "구조가 온전하다"는 뜻일 뿐 사이트맵이 받아들여진다는 보증은 아닙니다.
| 점검 항목 | 이 도구가 확인? |
|---|---|
올바른 XML, 루트가 urlset 또는 sitemapindex | 예 |
| sitemaps.org 네임스페이스 사용 | 예 |
각 loc이 절대 http·https URL | 예 |
loc 중복 | 예 (문자열이 정확히 같은 경우) |
| 항목 50,000개 초과 | 예 |
| 프로토콜의 50 MB(압축 해제 후 52,428,800바이트 / 50 MiB) | 예 |
loc 2,048자 미만, lastmod 형식·최신성, 같은 호스트, hreflang, changefreq·priority 값 | 예 |
| URL이 200을 반환하는지·색인 가능한지 | 아니요 (요청을 보내지 않음) |
구글이 선택 필드를 다루는 방식
구글은 priority와 changefreq를 무시한다고 문서에 밝히고 있습니다. lastmod는 페이지의 마지막 실질 변경 시점과 일치하는 등 값이 꾸준히 검증 가능하게 정확할 때만 사용합니다. 또 사이트맵이 있다고 크롤링이나 색인이 보장되지는 않으며, 찾아 주었으면 하는 대표(canonical) URL을 알려 주는 힌트일 뿐입니다.
실제 예시
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://example.com/</loc></url>
<url><loc>https://example.com/about</loc></url>
<url><loc>https://example.com/about</loc></url>
</urlset>URL 3, 오류 0, 경고 1
3번째 줄: 경고, #2 항목과 중복입니다.세 URL 모두 형식은 올바르므로 오류는 없고, 반복된 항목은 경고입니다. lastmod가 없으니 최신성 막대에는 "유효한 lastmod 없음"으로 잡힙니다.
<urlset>
<url><loc>https://example.com/</loc></url>
</urlset>URL 1, 오류 1, 경고 0
파일 전체 점검: 오류, 루트 요소에 xmlns가 없습니다. xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"를 추가하세요.파일은 파싱되고 URL도 집계되지만 크롤러는 루트 요소에 sitemaps.org 네임스페이스가 있기를 기대하므로 오류입니다.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://example.com/pricing</loc></url>
<url><loc>/contact</loc></url>
</urlset>URL 2, 오류 1, 경고 0
2번째 줄: 오류, <loc>은 http:// 또는 https://로 시작하는 절대 URL이어야 합니다.loc에는 스킴과 호스트가 있어야 합니다. /contact 같은 경로만으로는 절대 URL 검사를 통과하지 못합니다.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://example.com/list?a=1&b=2</loc></url>
</urlset>XML 형식이 올바르지 않습니다: the character & must be written as & (2번째 줄).URL을 https://example.com/list?a=1&b=2 로 써야 합니다. 리포트가 문제와 줄 번호를 알려 줍니다.
자주 하는 실수
압축 파일 크기만 확인하는 실수
프로토콜의 50 MB 제한은 압축을 푼 내용 52,428,800바이트를 뜻합니다. 작은
.xml.gz도 이 상한보다 크게 풀릴 수 있으며, 이 도구는 압축 파일 크기가 아니라 압축 해제된 크기를 검사해 상한에서 중단합니다.이미지·동영상 항목이 목록에 나올 거라는 기대
사이트맵 네임스페이스의
loc만 URL로 봅니다.image:image,image:loc같은 확장 요소는 페이지로 나열되지 않고 이미지 항목 개수만 대시보드에 표시됩니다. 확장 필드는 검색엔진 문서로 따로 확인하세요.미세하게 다른 중복
중복 검사는 문자열이 정확히 같은지만 봅니다.
https://example.com/a와https://example.com/a/는 서버에서 같은 페이지여도 중복으로 잡히지 않습니다. 호스트가 다르거나http와https가 섞인 경우는 중복이 아니라 호스트·스킴 혼재로 보고합니다.사이트맵 인덱스를 페이지 목록으로 읽는 실수
sitemapindex의 항목은 페이지가 아니라 하위 사이트맵 파일입니다. 리포트에 유형이 표시되니 구분하고, 하위 사이트맵은 각각 따로 검사해야 합니다.색인되면 안 되는 URL을 넣는 문제
리다이렉트되거나 noindex이거나 robots.txt로 막힌 URL은 사이트맵에 넣지 않는 것이 맞지만, 이 도구는 그것을 볼 수 없습니다. robots.txt 테스터와 함께 쓰고 상태 코드는 따로 확인하세요.
자주 묻는 질문
사이트맵 최대 크기는 얼마인가요?
사이트맵 프로토콜은 파일 하나당 URL 50,000개를 허용하며, 압축 해제 후 바이트 상한을 50 MB(52,428,800바이트)라고 부릅니다. 이 바이트 수는 정확히 50 MiB이며 이 도구는 그렇게 표시합니다. 더 크면 여러 파일로 나누고 사이트맵 인덱스에 등록하세요.
네임스페이스가 없다는 경고는 무슨 뜻인가요?
루트 요소에 xmlns 속성이 없다는 뜻입니다. URL 사이트맵이면 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">로 쓰고, 사이트맵 인덱스에서는 <sitemapindex>에 같은 네임스페이스를 붙입니다.
lastmod, changefreq, priority가 꼭 필요한가요?
필수는 loc뿐입니다. 구글은 priority와 changefreq를 무시하고 lastmod도 믿을 만하게 정확할 때만 쓰므로, 틀린 lastmod는 없는 것보다 나쁩니다.
사이트맵에 다른 도메인의 URL을 넣어도 되나요?
일반적으로 안 됩니다. 사이트맵은 자신이 호스팅된 호스트(와 경로 범위)의 URL만 담아야 하며, 검색엔진 콘솔에서 교차 제출을 설정한 경우만 예외입니다. 이 도구는 한 파일에 여러 호스트가 섞이면 경고하지만 파일의 실제 게시 URL이나 교차 제출 설정은 알 수 없습니다. http와 https URL이 섞여도 경고합니다.
앰퍼샌드 하나로 사이트맵이 깨지는 이유는요?
XML에서는 &를 &로 써야 합니다. 이스케이프하지 않은 앰퍼샌드가 있으면 문서가 올바른 형식이 아니게 되어 파일 전체가 파싱에 실패합니다.
페이지가 200을 반환하는지도 검사하나요?
아니요. 붙여 넣은 XML만 읽고 나열된 URL에는 요청을 보내지 않습니다.
내 사이트맵이 어딘가로 업로드되나요?
아니요. 파싱은 브라우저 안에서 이루어지며 내용은 서버로 전송되지 않습니다.
gzip으로 압축한 사이트맵도 되나요?
됩니다. .xml.gz 파일을 열거나 끌어 놓으면 브라우저 안에서 압축을 풉니다. 52,428,800바이트 상한은 압축을 푼 내용에 적용됩니다.
더 깊이 읽기
마지막 업데이트:
