원시 HTML 및 렌더링된 HTML 검사기
Free, no signup. Open the page in a browser and it looks complete; Google sees raw HTML first, then runs JavaScript and looks again — and those two views don't always agree. Test a public URL through the bounded rendering service to find where they diverge, with a side-by-side raw-vs-rendered diff.
Free, no sign-up. The page is rendered in headless Chrome only when the initial HTML looks incomplete — most server-rendered sites never need it.
검사는 당사 서버에서 실행됩니다. 입력한 URL을 가져오지만 결과는 보관하지 않습니다. Reports are kept 7 days so you can share a link to the result. Anonymous aggregate stats feed our research posts; domains are counted once via an anonymized hash and never stored in the clear. 익명 실행별 결과 계수는 종합 연구에 사용될 수 있습니다. URL, 도메인, IP 및 식별자는 절대 포함되지 않으며 100회 미만의 실행에 대한 통계는 공개하지 않습니다.
+를 눌러 현재 사이트 또는 페이지를 저장합니다. 저장된 사이트, 페이지 또는 목록 옆의 ☆를 사용해 즐겨찾기에 추가하세요. 최근 검사 기록은 아래에 표시됩니다.
이름 있는 목록 만들기
로컬 선택에서 대상을 입력했습니다.
사이트 패스포트 이 저장된 사이트의 로컬 컨텍스트
로컬 데이터
저장된 대상, 이름 있는 목록 및 최근 검사 요약은 이 브라우저에만 남습니다.
What JavaScript changed
Resources Google and AI bots couldn’t get
What non-rendering AI crawlers can see
This is a fast, directional check. For anything that affects indexing, confirm it in Google Search Console's URL Inspection tool — that's Google's own renderer and the real source of truth.
이 도구 평가하기
What this is checking
The render gap
Google can process JavaScript in a rendering phase after crawling. Content that appears only after rendering depends on that phase and is absent from the initial response; this comparison does not predict discovery or indexing timing.
The most restrictive rule wins
If a noindex appears in either the raw or rendered HTML, Google may use it — and an initial-HTML noindex may cause Google to skip rendering, so JavaScript cannot reliably undo it.
Canonicals are conditional
JavaScript may add a canonical when the raw HTML has none, or keep the same value. A different or additional value creates competing canonical input.
Checks based on the JavaScript SEO guide on Ahrefs. Confirm findings in Search Console.
이 도구 정보
서버가 전달한 원시 HTML과 JavaScript 실행 후 DOM을 비교해 중요한 콘텐츠, link 또는 head tag가 렌더링 단계에서만 나타나는지 확인합니다. 초기 HTML이 불완전해 보일 때만 제한된 headless Chrome 렌더링을 실행합니다.
결과는 방향성 있는 기술 비교이며 Google이 URL을 언제 크롤링하거나 색인할지 예측하지 않습니다.
기능
- 원시 HTML과 렌더링 DOM의 나란한 보기 및 핵심 필드 10개의 line diff
- 초기 HTML이 불완전하다는 제한 휴리스틱이 감지될 때만 headless Chrome 실행
- noindex, canonical, robots.txt, link, soft 404와 structured data를 포함한 약 15개 JavaScript SEO 검사
- Problems, Worth fixing, Notes 및 Passing으로 구분된 근거와 공유 가능한 보고서
작동 방식
공개 URL을 제한된 Worker가 먼저 가져와 원시 HTML과 robots.txt를 읽습니다. shell이 불완전해 보일 때만 headless Chrome을 실행합니다. 두 버전을 inert 상태로 parsing하고 필드를 정규화한 뒤 각 차이에 severity, 관찰 근거와 수정 지침을 연결합니다.
제한사항
- headless Chrome은 Google의 Evergreen renderer와 동일하지 않으며 network, timing 및 resource 조건도 다릅니다.
- 렌더링을 건너뛰었다고 SSR 또는 완전한 parity가 증명되는 것은 아니며 원시 HTML이 실행 휴리스틱을 충족했다는 뜻입니다.
- 대형 페이지, 복잡한 interaction과 click 뒤 콘텐츠는 제한되며 Search Console URL Inspection을 대체하지 않습니다.
자주 묻는 질문
JavaScript SEO에서 렌더링 격차란 무엇인가요?
서버가 전달한 원시 HTML의 내용과 브라우저가 JavaScript를 실행해 최종 DOM을 만든 뒤의 내용 사이 차이입니다. Google은 크롤링 뒤 별도 단계에서 JavaScript를 처리할 수 있습니다. 실행 후에만 나타나는 요소는 렌더링 성공에 의존하며 최초 응답에는 없습니다. 이 도구는 그 의존성을 측정할 뿐 Google의 발견 또는 색인 시점을 예측하지 않습니다.
Google은 실제로 JavaScript를 렌더링하나요?
예. Google은 최신 Chromium으로 페이지를 렌더링하므로 클라이언트 측 콘텐츠도 색인될 수 있습니다. 렌더링은 별도 처리 단계이며 차단된 리소스나 JavaScript 오류 때문에 콘텐츠가 나타나지 않을 수 있습니다. Google 검색은 콘텐츠를 불러오기 위해 페이지와 상호작용하지 않으므로 상호작용이 필요한 콘텐츠도 렌더링된 HTML에 이미 있어야 합니다. 핵심 콘텐츠와 태그를 서버 응답에 넣으면 이 의존성이 사라집니다.
도구가 가끔 페이지를 렌더링하지 않는 이유는 무엇인가요?
초기 HTML이 불완전해 보인다는 제한된 휴리스틱 판단이 있을 때만 헤드리스 브라우저가 실행됩니다. 원시 제목, 링크, 본문이 충분하면 렌더링을 건너뛸 수 있지만 서버 렌더링임이나 JavaScript가 아무것도 추가하지 않음을 입증하지는 않습니다. 이 경우 렌더링 비교 없이 초기 HTML 분석만 제공됩니다.
JavaScript로 삽입한 canonical 또는 noindex를 Google이 따르나요?
Google은 초기 HTML에서 noindex를 보면 렌더링을 건너뛸 수 있어 나중에 JavaScript로 이를 안정적으로 제거할 수 없습니다. 렌더링 단계에서만 추가한 noindex는 사용할 수 있습니다. canonical은 초기 HTML에 없을 때 JavaScript로 추가할 수 있고 같은 값을 설정하는 것은 괜찮지만, 다른 값으로 바꾸거나 여러 값을 남기면 위험한 경쟁 신호가 됩니다.
Google Search Console의 URL 검사 도구와 같은가요?
아니며 이를 대체하려는 도구도 아닙니다. 빠른 방향성 비교입니다. Search Console의 URL 검사는 확인된 속성에 대해 Google별 크롤링, 색인, 실시간 검사 근거를 제공하지만, 어느 도구도 향후 크롤링에서 URL이 어떻게 처리될지 보장하지 않습니다.
자주 발생하는 문제와 해결 방법
- 경고 초기 문서 헤드가 예상보다 일찍 닫힙니다 해결 방법: 초기 HTML에서 메타데이터가 유효한 <head> 요소 하나 안에 유지되도록 잘못된 헤드 마크업을 수정하세요.
- 오류 제목이 없습니다 해결 방법: 페이지의 주요 주제를 명시하는 간결하고 고유한 <title> 하나를 초기 HTML에 추가하세요.
- 경고 렌더링 후 제목이 변경됩니다 해결 방법: 클라이언트 측 변경이 의도적으로 필요한 경우가 아니면 서버와 렌더링된 <title> 값을 동일하게 만드세요.
- 오류 JavaScript 실행 후에만 제목이 나타납니다 해결 방법: JavaScript로 삽입하지 말고 최종 <title>을 초기 HTML에 출력하세요.
- 경고 메타 설명이 없습니다 해결 방법: 콘텐츠를 정확히 요약하는 페이지별 메타 설명을 초기 HTML에 추가하세요.
- 경고 렌더링 후 메타 설명이 변경됩니다 해결 방법: 크롤러가 일관된 요약 하나를 받도록 초기 메타 설명과 렌더링된 메타 설명을 맞추세요.
- 오류 초기 정규 URL과 렌더링된 정규 URL이 충돌합니다 해결 방법: 선호하는 절대 URL을 선택하고 초기 및 렌더링된 정규 태그가 이를 가리키게 하세요.
- 오류 JavaScript가 정규 URL을 덮어씁니다 해결 방법: 초기 HTML에 정규 URL 하나를 유지하고 렌더링 후 클라이언트 코드가 교체하지 못하게 하세요.
- 경고 렌더링 후에만 정규 URL이 존재합니다 해결 방법: JavaScript 실행 후에만 추가하지 말고 정규 태그를 초기 HTML로 옮기세요.
- 오류 JavaScript가 noindex를 제거합니다 해결 방법: 페이지가 색인되어야 한다면 초기 서버 응답에서 noindex를 제거하고 JavaScript로 되돌리는 방식에 의존하지 마세요.
- 경고 JavaScript가 noindex를 추가합니다 해결 방법: 색인 가능한 상태를 유지해야 하는 페이지에 클라이언트 코드가 noindex를 추가하지 못하게 하세요.
- 오류 렌더링 후에도 noindex가 남아 있습니다 해결 방법: 페이지가 색인되어야 한다면 초기 HTML과 렌더링된 HTML 모두에서 noindex 지시어를 제거하세요.
- 경고 렌더링 후에도 Nofollow가 남아 있습니다 해결 방법: 크롤러가 페이지 링크를 따라야 한다면 nofollow를 제거하고, 필요한 링크에만 범위를 한정하세요.
- 경고 렌더링 후에만 hreflang이 나타납니다 해결 방법: JavaScript로만 추가하지 말고 모든 hreflang 주석을 초기 HTML 또는 HTTP 헤더에 출력하세요.
- 경고 렌더링 후 hreflang이 변경됩니다 해결 방법: 초기 및 렌더링된 hreflang 집합을 동일하고 상호 연결되게 하며 의도한 로캘 URL을 가리키게 하세요.
- 오류 렌더링 후에만 중요한 콘텐츠가 나타납니다 해결 방법: 중요한 문구가 초기 HTML에 존재하도록 서버 렌더링하거나 정적으로 생성하세요.
- 경고 렌더링 후 상당한 콘텐츠가 추가됩니다 해결 방법: 핵심적인 JavaScript 추가 문구를 초기 HTML로 옮기고 필수적이지 않은 개선만 클라이언트에 남기세요.
- 경고 렌더링 후에만 중요한 링크가 나타납니다 해결 방법: 초기 HTML에서 중요한 대상을 일반 <a href> 링크로 노출하세요.
- 오류 렌더링된 링크가 크롤링 가능한 URL이 아닙니다 해결 방법: onclick 처리기, javascript: 또는 버튼 탐색을 크롤링 가능한 <a href> URL로 교체하세요.
- 경고 렌더링된 이미지에 alt 속성이 없습니다 해결 방법: 의미 있는 렌더링 이미지에는 간결한 alt 텍스트를, 장식용 이미지에는 빈 alt 속성을 추가하세요.
- 오류 robots.txt가 렌더링 리소스를 차단합니다 해결 방법: 페이지 렌더링에 필요한 차단된 JavaScript, CSS 또는 데이터 리소스를 Googlebot이 가져올 수 있게 허용하세요.
- 경고 렌더링 중 콘솔 오류가 발생합니다 해결 방법: 지목된 클라이언트 측 예외를 수정하고 콜드 로드에서도 핵심 콘텐츠가 렌더링되는지 확인하세요.
- 경고 렌더링 중 리소스 요청이 실패합니다 해결 방법: 렌더링 결과에 필요한 실패한 각 리소스 요청을 복원하거나 올바르게 라우팅하거나 제거하세요.
- 경고 중요한 콘텐츠를 보려면 상호작용이 필요합니다 해결 방법: 클릭이나 스크롤을 요구하지 말고 전체 콘텐츠를 로드된 DOM에 넣거나 크롤링 가능한 URL을 제공하세요.
- 오류 렌더링된 페이지가 소프트 404처럼 보입니다 해결 방법: 누락된 페이지에는 404/410을 반환하거나 200 URL의 얇은 오류형 본문을 충실한 콘텐츠로 교체하세요.
- 경고 JavaScript가 페이지를 리디렉션합니다 해결 방법: JavaScript 리디렉션을 최종 URL로 보내는 적절한 서버 측 3xx 응답으로 교체하세요.
- 정보 구조화 데이터가 없습니다 해결 방법: 구조화 데이터가 적절하다면 페이지의 주요 지원 엔터티에 정확한 JSON-LD를 추가하세요.
- 경고 렌더링 후에만 구조화 데이터가 나타납니다 해결 방법: JavaScript 실행 후에만 삽입하지 말고 검증된 JSON-LD를 초기 HTML에 출력하세요.
- 정보 페이지가 렌더링 중 WebSocket에 의존합니다 해결 방법: 열린 WebSocket 없이 핵심 콘텐츠를 렌더링하고 안정적인 HTTP 또는 서버 렌더링 대체 경로를 제공하세요.
- 경고 뷰포트 메타 태그가 없습니다 해결 방법: 초기 헤드에 <meta name="viewport" content="width=device-width, initial-scale=1">를 추가하세요.
- 오류 핵심 콘텐츠가 클라이언트 렌더링에 의존합니다 해결 방법: 제목, H1, 링크, 주요 콘텐츠를 서버 렌더링하거나 사전 렌더링해 초기 HTML에 포함하세요.
- 경고 페이지가 해시 라우팅에 의존합니다 해결 방법: 서버가 URL 프래그먼트 없이 확인할 수 있는 기록 모드 경로로 라우터를 전환하세요.
- 경고 제목 요소가 HTML 헤드 밖에 있습니다 해결 방법: 제목을 문서 헤드 안으로 옮기고 비어 있지 않은 제목 값 하나만 유지하세요.
- 경고 정규 요소가 HTML 헤드 밖에 있습니다 해결 방법: 의도한 정규 링크를 문서 헤드 안으로 옮기고 본문 수준의 정규 선언을 제거하세요.
- 경고 초기 HTML에 충돌하는 정규 URL이 있습니다 해결 방법: JavaScript로 충돌 선언을 고치는 방식에 의존하지 말고 초기 HTML에 정규 URL 하나만 출력하세요.