SEO ANALYZER / GEO ANALYZER / CHECK CATALOG
SEO·GEO 분석기는 무엇을 확인하나
9개 분야 · 189개 판정 항목. 속성의 의미와 판정 조건, 성능·색인·GEO·접근성·보안 중 어디에 관련되는지 한 표에 모았습니다.
189 / 189개 표시
식별
-
WARNING 기계가 읽을 수 있는 작성자 정보
identity.author-missing판정이 발생한 경우작성자(author) 정보가 없습니다
판정 조건이 없을 때콘텐츠 페이지의 작성 주체를 기계가 읽을 수 있게 명시함
meta author 또는 JSON-LD author는 작성 주체를 기계가 읽을 수 있게 한다. 검색 순위나 AI 인용을 보장하지는 않는다.
-
INFO LTR 페이지에 Arabic / Hebrew 텍스트가 dir 또는 <bdi> 없이 삽입되어 있습니다
identity.bidi-fragment-no-dir판정이 발생한 경우LTR 페이지에 Arabic / Hebrew 텍스트가 dir 또는 <bdi> 없이 삽입되어 있습니다
판정 조건이 없을 때LTR 페이지에 Arabic / Hebrew 텍스트가 dir 또는 <bdi> 없이 삽입되어 있습니다가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
CRITICAL 정본(canonical) URL이 다른 곳을 가리킵니다 (현재: … → canonical: …)
identity.canonical-conflict판정이 발생한 경우정본(canonical) URL이 다른 곳을 가리킵니다 (현재: … → canonical: …)
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING 대표 URL을 알리는 <link rel="canonical"> 태그
identity.canonical-missing판정이 발생한 경우대표 URL을 알리는 <link rel="canonical"> 태그가 없습니다
판정 조건이 없을 때대표 URL을 알리는 <link rel="canonical"> 태그가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO 연락처 / 약관 정보가 노출되지 않습니다
identity.contact-info-missing판정이 발생한 경우연락처 / 약관 정보가 노출되지 않습니다
판정 조건이 없을 때연락처 / 약관 정보가 노출되지 않습니다가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO dateModified가 datePublished보다 이른 날짜입니다
identity.date-modified-before-published판정이 발생한 경우dateModified가 datePublished보다 이른 날짜입니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING dateModified가 미래 날짜입니다
identity.date-modified-future판정이 발생한 경우dateModified가 미래 날짜입니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO 마지막 수정일이 …개월 이상 경과했습니다
identity.date-modified-stale판정이 발생한 경우마지막 수정일이 …개월 이상 경과했습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO 게시일(datePublished) 정보
identity.date-published-missing판정이 발생한 경우게시일(datePublished) 정보가 없습니다
판정 조건이 없을 때게시일(datePublished) 정보가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO lang="…"와 dir="…"이 충돌합니다
identity.dir-conflicts-with-lang판정이 발생한 경우lang="…"와 dir="…"이 충돌합니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING <html lang="…"> 페이지에 dir="rtl"
identity.dir-missing-for-rtl-lang판정이 발생한 경우<html lang="…"> 페이지에 dir="rtl"이 없습니다
판정 조건이 없을 때<html lang="…"> 페이지에 dir="rtl"가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING <html lang="…">가 실제 본문 언어와 다릅니다
identity.lang-mismatch판정이 발생한 경우<html lang="…">가 실제 본문 언어와 다릅니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
CRITICAL <html lang> 속성
identity.lang-missing판정이 발생한 경우<html lang> 속성이 없습니다
판정 조건이 없을 때<html lang> 속성가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO Naver Search Advisor 인증 메타
identity.naver-verification-missing판정이 발생한 경우Naver Search Advisor 인증 메타가 없습니다 (한국 사이트)
판정 조건이 없을 때Naver Search Advisor 인증 메타가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO 폼이 있지만 개인정보처리방침 / Privacy 링크
identity.privacy-policy-missing판정이 발생한 경우폼이 있지만 개인정보처리방침 / Privacy 링크가 없습니다
판정 조건이 없을 때폼이 있지만 개인정보처리방침 / Privacy 링크가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING 발행 기관(publisher) 정보
identity.publisher-missing판정이 발생한 경우발행 기관(publisher) 정보가 없습니다
판정 조건이 없을 때발행 기관(publisher) 정보가 필요한 위치에서 확인됨
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO meta robots에 유효하지 않은 지시어가 있습니다 ("…")
identity.robots-invalid-directive판정이 발생한 경우meta robots에 유효하지 않은 지시어가 있습니다 ("…")
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO Article 페이지에 max-image-preview:large
identity.robots-max-image-preview-recommended판정이 발생한 경우Article 페이지에 max-image-preview:large가 없습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING meta name="robots"가 …개 있습니다 (중복)
identity.robots-meta-duplicate판정이 발생한 경우meta name="robots"가 …개 있습니다 (중복)
판정 조건이 없을 때같은 역할의 선언이 불필요하게 중복되지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
WARNING meta robots에 nofollow 지시어가 있습니다
identity.robots-meta-nofollow판정이 발생한 경우meta robots에 nofollow 지시어가 있습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
CRITICAL meta robots에 noindex 지시어가 있습니다
identity.robots-meta-noindex판정이 발생한 경우meta robots에 noindex 지시어가 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO max-snippet:0이 설정되어 검색 발췌가 표시되지 않습니다
identity.robots-snippet-restricted판정이 발생한 경우max-snippet:0이 설정되어 검색 발췌가 표시되지 않습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
INFO unavailable_after 만료 (…) — 페이지가 색인에서 빠진 상태입니다
identity.robots-unavailable-after-expired판정이 발생한 경우unavailable_after 만료 (…) — 페이지가 색인에서 빠진 상태입니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
-
— URL 상태 코드 …
identity.url-status판정이 발생한 경우URL 상태 코드 …
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
언어·대표 URL·작성 주체처럼 페이지를 식별하는 정보를 확인한다.
다국어
-
INFO html lang ↔ hreflang 불일치
i18n.hreflang-lang-mismatch판정이 발생한 경우html lang ↔ hreflang 불일치
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
페이지 언어와 텍스트 방향, 대체 언어 연결이 서로 맞는지 확인한다.
-
WARNING hreflang 형식 오류
i18n.hreflang-malformed판정이 발생한 경우hreflang 형식 오류
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
페이지 언어와 텍스트 방향, 대체 언어 연결이 서로 맞는지 확인한다.
-
WARNING hreflang 누락
i18n.hreflang-missing판정이 발생한 경우hreflang 누락
판정 조건이 없을 때hreflang 누락가 필요한 위치에서 확인됨
페이지 언어와 텍스트 방향, 대체 언어 연결이 서로 맞는지 확인한다.
-
WARNING hreflang 자기참조 없음
i18n.hreflang-no-self-reference판정이 발생한 경우hreflang 자기참조 없음
판정 조건이 없을 때hreflang 자기참조 없음가 필요한 위치에서 확인됨
페이지 언어와 텍스트 방향, 대체 언어 연결이 서로 맞는지 확인한다.
-
INFO x-default 없음
i18n.hreflang-no-x-default판정이 발생한 경우x-default 없음
판정 조건이 없을 때x-default 없음가 필요한 위치에서 확인됨
페이지 언어와 텍스트 방향, 대체 언어 연결이 서로 맞는지 확인한다.
검색 & 공유
-
INFO og:type=article인데 article:author 메타
search-social.article-author-meta-missing판정이 발생한 경우og:type=article인데 article:author 메타가 없습니다
판정 조건이 없을 때og:type=article인데 article:author 메타가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
CRITICAL <meta name="description"> 태그가 없거나 비어 있습니다
search-social.description-missing판정이 발생한 경우<meta name="description"> 태그가 없거나 비어 있습니다
판정 조건이 없을 때<meta name="description"> 태그가 없거나 비어 있습니다가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING Description이 너무 깁니다 (… / …자)
search-social.description-too-long판정이 발생한 경우Description이 너무 깁니다 (… / …자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING Description이 너무 짧습니다 (… / …자)
search-social.description-too-short판정이 발생한 경우Description이 너무 짧습니다 (… / …자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— Favicon URL이 깨졌습니다 (HTTP …)
search-social.favicon-broken판정이 발생한 경우Favicon URL이 깨졌습니다 (HTTP …)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO favicon이 …px로 작습니다 (권장 …px 이상)
search-social.favicon-low-res판정이 발생한 경우favicon이 …px로 작습니다 (권장 …px 이상)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO favicon이 선언되지 않았습니다
search-social.favicon-missing판정이 발생한 경우favicon이 선언되지 않았습니다
판정 조건이 없을 때favicon이 선언되지 않았습니다가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— Favicon 응답이 이미지가 아닙니다 (…)
search-social.favicon-wrong-content-type판정이 발생한 경우Favicon 응답이 이미지가 아닙니다 (…)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— 소셜 공유용 설명(og:description) 메타 태그
search-social.og-description-missing판정이 발생한 경우소셜 공유용 설명(og:description) 메타 태그가 없습니다
판정 조건이 없을 때소셜 공유용 설명(og:description) 메타 태그가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— og:image URL이 깨졌습니다 (HTTP …)
search-social.og-image-broken판정이 발생한 경우og:image URL이 깨졌습니다 (HTTP …)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO 소셜 공유 이미지 크기가 권장(…×…) 미만입니다 (…×…)
search-social.og-image-dimensions-low판정이 발생한 경우소셜 공유 이미지 크기가 권장(…×…) 미만입니다 (…×…)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO og:image는 있지만 og:image:width / og:image:height
search-social.og-image-dimensions-undeclared판정이 발생한 경우og:image는 있지만 og:image:width / og:image:height가 없습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— 소셜 공유용 이미지(og:image) 메타 태그
search-social.og-image-missing판정이 발생한 경우소셜 공유용 이미지(og:image) 메타 태그가 없습니다
판정 조건이 없을 때소셜 공유용 이미지(og:image) 메타 태그가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING og:image가 절대 URL이 아닙니다
search-social.og-image-relative-url판정이 발생한 경우og:image가 절대 URL이 아닙니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— og:image 응답이 이미지가 아닙니다 (…)
search-social.og-image-wrong-content-type판정이 발생한 경우og:image 응답이 이미지가 아닙니다 (…)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO <html lang="…">과 og:locale="…"의 언어가 다릅니다
search-social.og-locale-lang-mismatch판정이 발생한 경우<html lang="…">과 og:locale="…"의 언어가 다릅니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO og:title이 <title>과 크게 다릅니다
search-social.og-title-mismatch판정이 발생한 경우og:title이 <title>과 크게 다릅니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— 소셜 공유용 제목(og:title) 메타 태그
search-social.og-title-missing판정이 발생한 경우소셜 공유용 제목(og:title) 메타 태그가 없습니다
판정 조건이 없을 때소셜 공유용 제목(og:title) 메타 태그가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO Article 성격 페이지인데 og:type이 "…"입니다
search-social.og-type-article-mismatch판정이 발생한 경우Article 성격 페이지인데 og:type이 "…"입니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING og:url이 canonical과 다릅니다
search-social.og-url-canonical-mismatch판정이 발생한 경우og:url이 canonical과 다릅니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
— 소셜 공유용 정본 URL(og:url) 메타 태그
search-social.og-url-missing판정이 발생한 경우소셜 공유용 정본 URL(og:url) 메타 태그가 없습니다
판정 조건이 없을 때소셜 공유용 정본 URL(og:url) 메타 태그가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO <title>이 <h1>과 완전히 동일합니다
search-social.title-duplicate-of-h1판정이 발생한 경우<title>이 <h1>과 완전히 동일합니다
판정 조건이 없을 때같은 역할의 선언이 불필요하게 중복되지 않음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
INFO title과 h1이 주제 단어를 하나도 공유하지 않습니다
search-social.title-h1-topic-mismatch판정이 발생한 경우title과 h1이 주제 단어를 하나도 공유하지 않습니다
판정 조건이 없을 때서로 비교하는 값과 선언이 맞음
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
CRITICAL <title> 태그가 없거나 비어 있습니다
search-social.title-missing판정이 발생한 경우<title> 태그가 없거나 비어 있습니다
판정 조건이 없을 때<title> 태그가 없거나 비어 있습니다가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING Title이 너무 깁니다 (… / …자)
search-social.title-too-long판정이 발생한 경우Title이 너무 깁니다 (… / …자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING Title이 너무 짧습니다 (… / …자)
search-social.title-too-short판정이 발생한 경우Title이 너무 짧습니다 (… / …자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING twitter:card 메타
search-social.twitter-card-missing판정이 발생한 경우twitter:card 메타가 없습니다
판정 조건이 없을 때twitter:card 메타가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
-
WARNING twitter:card=summary_large_image지만 이미지를 찾을 수
search-social.twitter-large-card-no-image판정이 발생한 경우twitter:card=summary_large_image지만 이미지를 찾을 수 없습니다
판정 조건이 없을 때twitter:card=summary_large_image지만 이미지를 찾을 수가 필요한 위치에서 확인됨
검색 결과와 공유 카드에 전달되는 제목·설명·대표 이미지 정보를 확인한다.
구조
-
WARNING article 의미 구조
structure.article-missing판정이 발생한 경우<article> 태그가 없습니다
판정 조건이 없을 때독립 콘텐츠 영역일 때 article 요소로 구분함
article 요소는 독립적으로 배포할 수 있는 콘텐츠 영역을 표시한다. 모든 페이지에 필요한 요소는 아니다.
-
WARNING <div>가 너무 많고 시맨틱 태그도 부족합니다 (…개)
structure.div-overuse판정이 발생한 경우<div>가 너무 많고 시맨틱 태그도 부족합니다 (…개)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO <footer> 랜드마크
structure.footer-missing판정이 발생한 경우<footer> 랜드마크가 없습니다
판정 조건이 없을 때<footer> 랜드마크가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
CRITICAL <h1> 태그
structure.h1-missing판정이 발생한 경우<h1> 태그가 없습니다
판정 조건이 없을 때<h1> 태그가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING <h1> 태그가 …개 있습니다
structure.h1-multiple판정이 발생한 경우<h1> 태그가 …개 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING <h1> 태그 …개가 모두 비어 있습니다
structure.h1-text-deferred판정이 발생한 경우<h1> 태그 …개가 모두 비어 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING <header> 랜드마크
structure.header-missing판정이 발생한 경우<header> 랜드마크가 없습니다
판정 조건이 없을 때<header> 랜드마크가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING 빈 <h…> 태그가 있습니다
structure.heading-empty판정이 발생한 경우빈 <h…> 태그가 있습니다
판정 조건이 없을 때빈 <h…> 태그가 있습니다가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING 헤딩 레벨이 건너뛰어집니다 (h… → h…)
structure.heading-skip판정이 발생한 경우헤딩 레벨이 건너뛰어집니다 (h… → h…)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO heading 텍스트가 너무 깁니다 (…자)
structure.heading-text-too-long판정이 발생한 경우heading 텍스트가 너무 깁니다 (…자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO heading이 너무 짧거나 symbol-only 입니다 ("…")
structure.heading-text-too-short-or-symbol판정이 발생한 경우heading이 너무 짧거나 symbol-only 입니다 ("…")
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
CRITICAL <main> 태그
structure.main-missing판정이 발생한 경우<main> 태그가 없습니다
판정 조건이 없을 때<main> 태그가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
WARNING <main> 태그가 …개 있습니다
structure.main-multiple판정이 발생한 경우<main> 태그가 …개 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO <nav> 랜드마크
structure.nav-missing판정이 발생한 경우<nav> 랜드마크가 없습니다
판정 조건이 없을 때<nav> 랜드마크가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO HTML5 시맨틱 태그 활용도가 낮습니다 (… / …종)
structure.semantic-coverage판정이 발생한 경우HTML5 시맨틱 태그 활용도가 낮습니다 (… / …종)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO <span>이 매우 많습니다 (…개, 권장 …개 이하)
structure.span-overuse판정이 발생한 경우<span>이 매우 많습니다 (…개, 권장 …개 이하)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
-
INFO 본문에 날짜 표기는 있지만 <time> 요소
structure.time-element-missing판정이 발생한 경우본문에 날짜 표기는 있지만 <time> 요소가 없습니다
판정 조건이 없을 때본문에 날짜 표기는 있지만 <time> 요소가 필요한 위치에서 확인됨
제목 단계와 의미 영역 등 문서의 HTML 구조를 확인한다.
콘텐츠
-
WARNING 본문에 보이지 않는 양방향 제어 문자가 …개 있습니다
content.bidi-control-chars판정이 발생한 경우본문에 보이지 않는 양방향 제어 문자가 …개 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO meta description이 없는데 본문 첫 단락이 의미 없는 텍스트입니다
content.first-paragraph-empty-or-nav판정이 발생한 경우meta description이 없는데 본문 첫 단락이 의미 없는 텍스트입니다
판정 조건이 없을 때meta description이 없는데 본문 첫 단락이 의미 없는 텍스트입니다가 필요한 위치에서 확인됨
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO "…" 단어가 …%로 과도하게 반복됩니다
content.keyword-density-extreme판정이 발생한 경우"…" 단어가 …%로 과도하게 반복됩니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO lang="…" 페이지에 다른 언어가 …% 섞여 있습니다
content.lang-mixing-suspicious판정이 발생한 경우lang="…" 페이지에 다른 언어가 …% 섞여 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO 문단 길이
content.paragraphs-too-long판정이 발생한 경우평균 또는 가장 긴 문단이 현재 길이 기준을 넘었습니다
판정 조건이 없을 때문단 길이가 현재 검사 기준 안에 있음
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
WARNING 본문 문장 가독성
content.readability-low판정이 발생한 경우평균 또는 가장 긴 문장이 현재 가독성 기준을 넘었습니다
판정 조건이 없을 때문장 길이가 현재 가독성 기준 안에 있음
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO 문장 길이
content.sentences-too-long판정이 발생한 경우평균 또는 가장 긴 문장이 현재 길이 기준을 넘었습니다
판정 조건이 없을 때문장 길이가 현재 검사 기준 안에 있음
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
WARNING 텍스트/HTML 비율이 매우 낮습니다 (…%, 권장 …% 이상)
content.text-html-ratio-low판정이 발생한 경우텍스트/HTML 비율이 매우 낮습니다 (…%, 권장 …% 이상)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
INFO 본문이 매우 깁니다 (…단어) — 목차 없음
content.too-long판정이 발생한 경우본문이 매우 깁니다 (…단어) — 목차 없음
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
-
WARNING 본문이 너무 짧습니다 (… / …단어)
content.too-short판정이 발생한 경우본문이 너무 짧습니다 (… / …단어)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
본문의 분량·중복·표현처럼 콘텐츠 자체의 읽기 단서를 확인한다.
링크 / 미디어
-
INFO 외부 링크 …개 중 nofollow / sponsored / ugc가 적용된 것
links-media.external-link-no-nofollow-policy판정이 발생한 경우외부 링크 …개 중 nofollow / sponsored / ugc가 적용된 것이 없습니다
판정 조건이 없을 때외부 링크 …개 중 nofollow / sponsored / ugc가 적용된 것가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO iframe …개에 loading="lazy"
links-media.iframe-no-lazy판정이 발생한 경우iframe …개에 loading="lazy"가 없습니다
판정 조건이 없을 때iframe …개에 loading="lazy"가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING 첫 화면(above-the-fold) 이미지에 loading="lazy"가 걸려 있습니다
links-media.image-above-fold-lazy판정이 발생한 경우첫 화면(above-the-fold) 이미지에 loading="lazy"가 걸려 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO <figure>·<figcaption> 안 이미지의 alt가 figcaption과 중복됩니다
links-media.image-alt-figcaption-redundant판정이 발생한 경우<figure>·<figcaption> 안 이미지의 alt가 figcaption과 중복됩니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING 이미지 alt 텍스트 품질이 낮습니다
links-media.image-alt-low-quality판정이 발생한 경우이미지 alt 텍스트 품질이 낮습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
CRITICAL …번째 이미지에 alt 속성
links-media.image-alt-missing판정이 발생한 경우…번째 이미지에 alt 속성이 없습니다 (…)
판정 조건이 없을 때…번째 이미지에 alt 속성가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO 이미지 alt와 title이 동일합니다
links-media.image-alt-title-redundant판정이 발생한 경우이미지 alt와 title이 동일합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO 이미지 alt가 너무 깁니다 (…자)
links-media.image-alt-too-long판정이 발생한 경우이미지 alt가 너무 깁니다 (…자)
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING 이미지 크기 속성
links-media.image-dimensions-missing판정이 발생한 경우이미지에 width/height 속성이 없습니다
판정 조건이 없을 때이미지의 고유 크기를 width/height로 알림
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO 최신 이미지 포맷 제공
links-media.image-format-modern판정이 발생한 경우JPEG/PNG 이미지가 …개 있습니다 (WebP/AVIF 권장)
판정 조건이 없을 때최신 이미지 포맷 또는 적절한 대체 경로를 제공함
WebP·AVIF 같은 포맷은 같은 시각 품질에서 전송량을 줄일 수 있다. 원본 형식과 브라우저 대체 경로를 함께 둔다.
-
INFO 화면 밖 이미지 지연 로딩
links-media.image-lazy-missing판정이 발생한 경우below-the-fold 이미지에 loading="lazy"가 없습니다
판정 조건이 없을 때화면 밖 이미지 지연 로딩가 필요한 위치에서 확인됨
첫 화면 밖 이미지를 늦게 불러오면 초기 네트워크 사용량을 줄일 수 있다. 첫 화면 핵심 이미지에는 지연 로딩을 쓰지 않는다.
-
INFO 이미지 …개에 loading="auto"가 명시되어 있습니다 (기본값과 동일)
links-media.image-loading-auto-noise판정이 발생한 경우이미지 …개에 loading="auto"가 명시되어 있습니다 (기본값과 동일)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO width ≥ 600인 이미지 …개가 srcset 없이 단일 src로 로드됩니다
links-media.image-no-srcset-responsive판정이 발생한 경우width ≥ 600인 이미지 …개가 srcset 없이 단일 src로 로드됩니다
판정 조건이 없을 때width ≥ 600인 이미지 …개가 srcset 없이 단일 src로 로드됩니다가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING <a href="javascript:..."> 링크가 …개 있습니다
links-media.javascript-link-anti-pattern판정이 발생한 경우<a href="javascript:..."> 링크가 …개 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING 의미 없는 앵커 텍스트 링크가 …개 있습니다
links-media.link-anchor-vague판정이 발생한 경우의미 없는 앵커 텍스트 링크가 …개 있습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
CRITICAL HTTPS 페이지에 HTTP 리소스가 …개 있습니다 (Mixed Content)
links-media.link-mixed-content판정이 발생한 경우HTTPS 페이지에 HTTP 리소스가 …개 있습니다 (Mixed Content)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
INFO 내부 링크의 …%에 rel="nofollow"가 있습니다
links-media.link-nofollow-coverage판정이 발생한 경우내부 링크의 …%에 rel="nofollow"가 있습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING target="_blank" 링크 …개에 rel="noopener"
links-media.link-target-blank-no-rel판정이 발생한 경우target="_blank" 링크 …개에 rel="noopener"가 없습니다
판정 조건이 없을 때target="_blank" 링크 …개에 rel="noopener"가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
-
WARNING …번째 inline <svg>에 접근 가능한 이름
links-media.svg-no-accessible-name판정이 발생한 경우…번째 inline <svg>에 접근 가능한 이름이 없습니다
판정 조건이 없을 때…번째 inline <svg>에 접근 가능한 이름가 필요한 위치에서 확인됨
링크와 이미지·영상·iframe의 접근성 및 로딩 조건을 확인한다.
AI 답변
-
INFO 외부 출처/인용 링크가 거의
ai-answer.citation-pattern-low판정이 발생한 경우외부 출처/인용 링크가 거의 없습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 작성자(author)가 명시되어 있지만 author 페이지 링크
ai-answer.eeat-author-page-missing판정이 발생한 경우작성자(author)가 명시되어 있지만 author 페이지 링크가 없습니다
판정 조건이 없을 때작성자(author)가 명시되어 있지만 author 페이지 링크가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 페이지 주제 엔티티("…")가 초반 100자에서 명확하지 않습니다
ai-answer.entity-clarity-low판정이 발생한 경우페이지 주제 엔티티("…")가 초반 100자에서 명확하지 않습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO /llms.txt 파일
ai-answer.llms-txt-missing판정이 발생한 경우/llms.txt 파일이 없습니다
판정 조건이 없을 때/llms.txt 파일가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
WARNING 콘텐츠 페이지인데 Article 구조화 데이터
ai-answer.schema-article-missing판정이 발생한 경우콘텐츠 페이지인데 Article 구조화 데이터가 없습니다
판정 조건이 없을 때콘텐츠 페이지인데 Article 구조화 데이터가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO Article 구조화 데이터의 author가 문자열입니다 (Person 객체 권장)
ai-answer.schema-author-not-structured판정이 발생한 경우Article 구조화 데이터의 author가 문자열입니다 (Person 객체 권장)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO BreadcrumbList 구조화 데이터
ai-answer.schema-breadcrumb-missing판정이 발생한 경우BreadcrumbList(이동 경로) 구조화 데이터가 없습니다
판정 조건이 없을 때페이지 계층을 표현할 필요가 있을 때 BreadcrumbList를 제공함
BreadcrumbList는 페이지의 위치와 계층을 구조화 데이터로 전달한다. 검색 노출이나 순위를 보장하지는 않는다.
-
— Course 구조화 데이터 필수 필드
ai-answer.schema-course-missing-required판정이 발생한 경우Course 구조화 데이터에 필수 필드가 빠졌습니다
판정 조건이 없을 때Course 유형에 필요한 필드가 있음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
— Event 구조화 데이터 필수 필드
ai-answer.schema-event-missing-required판정이 발생한 경우Event 구조화 데이터에 필수 필드가 빠졌습니다
판정 조건이 없을 때Event 유형에 필요한 필드가 있음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
WARNING Q&A 패턴이 감지되었지만 FAQPage 구조화 데이터
ai-answer.schema-faq-missing판정이 발생한 경우Q&A 패턴이 감지되었지만 FAQPage 구조화 데이터가 없습니다
판정 조건이 없을 때Q&A 패턴이 감지되었지만 FAQPage 구조화 데이터가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 단계별 설명이 감지되었지만 HowTo 구조화 데이터
ai-answer.schema-howto-missing판정이 발생한 경우단계별 설명이 감지되었지만 HowTo 구조화 데이터가 없습니다
판정 조건이 없을 때단계별 설명이 감지되었지만 HowTo 구조화 데이터가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
CRITICAL 구조화 데이터(JSON-LD) 파싱에 실패했습니다
ai-answer.schema-invalid판정이 발생한 경우구조화 데이터(JSON-LD) 파싱에 실패했습니다
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
— JobPosting 구조화 데이터 필수 필드
ai-answer.schema-jobposting-missing-required판정이 발생한 경우JobPosting 구조화 데이터에 필수 필드가 빠졌습니다
판정 조건이 없을 때JobPosting 유형에 필요한 필드가 있음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
WARNING 구조화 데이터(JSON-LD)
ai-answer.schema-missing판정이 발생한 경우구조화 데이터(JSON-LD)가 없습니다
판정 조건이 없을 때구조화 데이터(JSON-LD)가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
WARNING Article 구조화 데이터에 작성자(author)
ai-answer.schema-no-author판정이 발생한 경우Article 구조화 데이터에 작성자(author)가 없습니다
판정 조건이 없을 때Article 구조화 데이터에 작성자(author)가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO Organization 구조화 데이터(발행 기관 정보)
ai-answer.schema-organization-missing판정이 발생한 경우Organization 구조화 데이터(발행 기관 정보)가 없습니다
판정 조건이 없을 때Organization 구조화 데이터(발행 기관 정보)가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
— Product 구조화 데이터 필수 필드
ai-answer.schema-product-missing-required판정이 발생한 경우Product 구조화 데이터에 필수 필드가 빠졌습니다
판정 조건이 없을 때Product 유형에 필요한 필드가 있음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
— Recipe 구조화 데이터 필수 필드
ai-answer.schema-recipe-missing-required판정이 발생한 경우Recipe 구조화 데이터에 필수 필드가 빠졌습니다
판정 조건이 없을 때Recipe 유형에 필요한 필드가 있음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 요약 블럭(TL;DR / 요약)이 본문 초반에
ai-answer.summary-block-missing판정이 발생한 경우요약 블럭(TL;DR / 요약)이 본문 초반에 없습니다
판정 조건이 없을 때요약 블럭(TL;DR / 요약)이 본문 초반에가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 요약 블럭이 페이지 하단에 위치합니다
ai-answer.summary-block-not-on-top판정이 발생한 경우요약 블럭이 페이지 하단에 위치합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
-
INFO 외부 링크 …개 중 신뢰 출처(Wikipedia / .gov / .edu 등)
ai-answer.trusted-source-citation-missing판정이 발생한 경우외부 링크 …개 중 신뢰 출처(Wikipedia / .gov / .edu 등)가 없습니다
판정 조건이 없을 때외부 링크 …개 중 신뢰 출처(Wikipedia / .gov / .edu 등)가 필요한 위치에서 확인됨
구조화 데이터와 답변 가능한 콘텐츠 단서를 확인한다.
접근성
-
WARNING … role="alertdialog" 안에 포커스 가능한 요소
a11y.alertdialog-no-focusable판정이 발생한 경우… role="alertdialog" 안에 포커스 가능한 요소가 없습니다
판정 조건이 없을 때… role="alertdialog" 안에 포커스 가능한 요소가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <a>에 href
a11y.anchor-no-href판정이 발생한 경우<a>에 href가 없습니다 — 키보드로 활성화 불가
판정 조건이 없을 때<a>에 href가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO aria-label이 보이는 텍스트와 동일합니다 ("…")
a11y.aria-label-redundant판정이 발생한 경우aria-label이 보이는 텍스트와 동일합니다 ("…")
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING aria-labelledby가 자기 자신을 참조합니다 ("#…")
a11y.aria-labelledby-self-reference판정이 발생한 경우aria-labelledby가 자기 자신을 참조합니다 ("#…")
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING ARIA(보조 기술 라벨) … — …
a11y.aria-misuse판정이 발생한 경우ARIA(보조 기술 라벨) … — …
판정 조건이 없을 때해당 기능을 용도와 문법에 맞게 사용함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING …의 …가 존재하지 않는 id를 가리킵니다 (…)
a11y.aria-ref-broken판정이 발생한 경우…의 …가 존재하지 않는 id를 가리킵니다 (…)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING role="…" 요소에 필수 속성 …이(가)
a11y.aria-required-state-missing판정이 발생한 경우role="…" 요소에 필수 속성 …이(가) 없습니다
판정 조건이 없을 때role="…" 요소에 필수 속성 …이(가)가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING …="…"은(는) 유효하지 않은 ARIA 값입니다
a11y.aria-value-invalid판정이 발생한 경우…="…"은(는) 유효하지 않은 ARIA 값입니다
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <audio>에 트랜스크립트 / 자막
a11y.audio-no-captions판정이 발생한 경우<audio>에 트랜스크립트 / 자막이 없습니다
판정 조건이 없을 때<audio>에 트랜스크립트 / 자막가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
— 버튼의 접근 가능한 이름
a11y.button-without-name판정이 발생한 경우button
판정 조건이 없을 때버튼의 접근 가능한 이름가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO 접근성 검사 범위가 좁습니다
a11y.coverage-low판정이 발생한 경우접근성 검사 범위가 좁습니다
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
CRITICAL … role="…"에 접근 가능한 이름
a11y.dialog-without-name판정이 발생한 경우… role="…"에 접근 가능한 이름이 없습니다
판정 조건이 없을 때… role="…"에 접근 가능한 이름가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING outline: none이 :focus-visible 대체 없이 사용됩니다
a11y.focus-visible-disabled판정이 발생한 경우outline: none이 :focus-visible 대체 없이 사용됩니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING aria-invalid="true"인 입력 필드에 오류 메시지가 연결되지 않았습니다
a11y.form-error-no-describedby판정이 발생한 경우aria-invalid="true"인 입력 필드에 오류 메시지가 연결되지 않았습니다
판정 조건이 없을 때aria-invalid="true"인 입력 필드에 오류 메시지가 연결되지 않았습니다가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO autocomplete 속성
a11y.form-input-no-autocomplete판정이 발생한 경우autocomplete 속성이 없습니다 (권장: autocomplete="…")
판정 조건이 없을 때autocomplete 속성가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
CRITICAL …에 연결된 레이블
a11y.form-label-missing판정이 발생한 경우…에 연결된 레이블이 없습니다
판정 조건이 없을 때…에 연결된 레이블가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING name="…" … 그룹이 fieldset/legend 또는 role="…" 없이 노출됩니다
a11y.form-radio-group-no-fieldset판정이 발생한 경우name="…" … 그룹이 fieldset/legend 또는 role="…" 없이 노출됩니다
판정 조건이 없을 때name="…" … 그룹이 fieldset/legend 또는 role="…" 없이 노출됩니다가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO <h…>이 너무 짧습니다 ("…")
a11y.heading-too-short판정이 발생한 경우<h…>이 너무 짧습니다 ("…")
판정 조건이 없을 때현재 규칙의 권장 범위를 충족함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <iframe>에 title 속성
a11y.iframe-no-title판정이 발생한 경우<iframe>에 title 속성이 없습니다 (또는 비어있음)
판정 조건이 없을 때<iframe>에 title 속성가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING role="…" 요소에 onclick은 있지만 키보드 핸들러
a11y.interactive-no-keyboard-handler판정이 발생한 경우role="…" 요소에 onclick은 있지만 키보드 핸들러가 없습니다
판정 조건이 없을 때role="…" 요소에 onclick은 있지만 키보드 핸들러가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING role="…" 요소가 키보드로 포커스 불가능합니다
a11y.interactive-not-focusable판정이 발생한 경우role="…" 요소가 키보드로 포커스 불가능합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <nav>가 …개 있는데 이름
a11y.landmark-duplicate-without-label판정이 발생한 경우<nav>가 …개 있는데 이름이 없습니다
판정 조건이 없을 때<nav>가 …개 있는데 이름가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <html lang="…">가 BCP 47 형식이 아닙니다
a11y.lang-malformed판정이 발생한 경우<html lang="…">가 BCP 47 형식이 아닙니다
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
— 링크의 접근 가능한 이름
a11y.link-without-name판정이 발생한 경우링크에 접근 가능한 이름이 없습니다
판정 조건이 없을 때링크의 목적을 텍스트나 접근성 속성으로 알림
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING role="menubar" 안에 tabindex="0" menuitem이 …개 있습니다 (1개여야 함)
a11y.menu-roving-broken판정이 발생한 경우role="menubar" 안에 tabindex="0" menuitem이 …개 있습니다 (1개여야 함)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO … role="menuitem"이 서브메뉴를 가지지만 aria-haspopup
a11y.menuitem-missing-haspopup판정이 발생한 경우… role="menuitem"이 서브메뉴를 가지지만 aria-haspopup이 없습니다
판정 조건이 없을 때… role="menuitem"이 서브메뉴를 가지지만 aria-haspopup가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO … aria-modal="true"인데 형제 콘텐츠에 aria-hidden 없음
a11y.modal-background-not-hidden판정이 발생한 경우… aria-modal="true"인데 형제 콘텐츠에 aria-hidden 없음
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING 자연스러운 키보드 이동 순서
a11y.positive-tabindex판정이 발생한 경우양수 tabindex가 사용돼 자연스러운 탭 순서가 바뀝니다
판정 조건이 없을 때DOM 순서와 tabindex 0·-1을 사용해 이동 순서를 유지함
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING role="region"에 accessible name
a11y.region-without-name판정이 발생한 경우role="region"에 accessible name이 없습니다
판정 조건이 없을 때role="region"에 accessible name가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING 본문 바로가기 링크
a11y.skip-link-missing판정이 발생한 경우"본문 바로가기" 스킵 링크가 없습니다
판정 조건이 없을 때본문 바로가기 링크가 필요한 위치에서 확인됨
본문 바로가기 링크는 키보드 사용자가 반복되는 내비게이션을 건너뛸 수 있게 한다.
-
WARNING 스킵 링크가 가리키는 id가 페이지에
a11y.skip-link-target-missing판정이 발생한 경우스킵 링크가 가리키는 id가 페이지에 없습니다 (href="…")
판정 조건이 없을 때스킵 링크가 가리키는 id가 페이지에가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING … role="tab"에 aria-selected
a11y.tab-missing-aria-selected판정이 발생한 경우… role="tab"에 aria-selected가 없습니다
판정 조건이 없을 때… role="tab"에 aria-selected가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING … role="tab"에 aria-controls가 없거나 tabpanel을 가리키지 않습니다
a11y.tab-missing-controls판정이 발생한 경우… role="tab"에 aria-controls가 없거나 tabpanel을 가리키지 않습니다
판정 조건이 없을 때… role="tab"에 aria-controls가 없거나 tabpanel을 가리키지 않습니다가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING … role="tab"이 role="tablist" 안에
a11y.tab-outside-tablist판정이 발생한 경우… role="tab"이 role="tablist" 안에 없습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO <table>에 <caption> 또는 aria-label
a11y.table-caption-missing판정이 발생한 경우<table>에 <caption> 또는 aria-label이 없습니다
판정 조건이 없을 때<table>에 <caption> 또는 aria-label가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <table>의 <th> 셀에 scope 속성
a11y.table-th-no-scope판정이 발생한 경우<table>의 <th> 셀에 scope 속성이 없습니다 (…행 …열)
판정 조건이 없을 때<table>의 <th> 셀에 scope 속성가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO … role="tabpanel"에 aria-labelledby
a11y.tabpanel-missing-labelledby판정이 발생한 경우… role="tabpanel"에 aria-labelledby가 없습니다
판정 조건이 없을 때… role="tabpanel"에 aria-labelledby가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
INFO 터치 타깃이 너무 작습니다 (…×…px)
a11y.touch-target-too-small판정이 발생한 경우터치 타깃이 너무 작습니다 (…×…px)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING autoplay인 <video>에 controls
a11y.video-autoplay-no-controls판정이 발생한 경우autoplay인 <video>에 controls가 없습니다
판정 조건이 없을 때autoplay인 <video>에 controls가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <video>에 자막(track[kind="captions"]) 트랙
a11y.video-no-captions판정이 발생한 경우<video>에 자막(track[kind="captions"]) 트랙이 없습니다
판정 조건이 없을 때<video>에 자막(track[kind="captions"]) 트랙가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
-
WARNING <meta viewport>가 사용자 확대를 금지합니다 (…)
a11y.viewport-no-zoom판정이 발생한 경우<meta viewport>가 사용자 확대를 금지합니다 (…)
판정 조건이 없을 때<meta viewport>가 사용자 확대를 금지합니다 (…)가 필요한 위치에서 확인됨
키보드·스크린리더·색상 등 접근성 사용 조건을 확인한다.
기술 인프라
-
INFO <meta charset>가 선언되어 있지 않습니다
tech.charset-missing판정이 발생한 경우<meta charset>가 선언되어 있지 않습니다
판정 조건이 없을 때<meta charset>가 선언되어 있지 않습니다가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO CSP 정책 선언
tech.csp-missing판정이 발생한 경우Content-Security-Policy 메타가 없습니다
판정 조건이 없을 때사이트에 맞는 CSP가 응답 헤더 또는 HTML 메타로 적용됨
CSP는 브라우저가 허용할 콘텐츠 출처를 제한하는 보안 정책이다. 현재 줍줍은 HTML의 CSP 메타만 확인하며 HTTP 응답 헤더는 확인하지 못한다.
-
WARNING 사용 중단된(deprecated) HTML 태그가 있습니다: …
tech.deprecated-html판정이 발생한 경우사용 중단된(deprecated) HTML 태그가 있습니다: …
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO @font-face가 있지만 link rel="preload" as="font"
tech.font-preload-missing판정이 발생한 경우@font-face가 있지만 link rel="preload" as="font"가 없습니다
판정 조건이 없을 때@font-face가 있지만 link rel="preload" as="font"가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
CRITICAL 페이지가 HTTPS로 제공되지 않습니다
tech.https-missing판정이 발생한 경우페이지가 HTTPS로 제공되지 않습니다
판정 조건이 없을 때페이지가 HTTPS로 제공되지 않습니다가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
WARNING meta refresh 리다이렉트가 사용되었습니다 (…초 후 → …)
tech.meta-refresh-detected판정이 발생한 경우meta refresh 리다이렉트가 사용되었습니다 (…초 후 → …)
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
CRITICAL HTTPS 페이지에서 HTTP 스크립트를 …개 로드합니다
tech.mixed-content-active-script판정이 발생한 경우HTTPS 페이지에서 HTTP 스크립트를 …개 로드합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
WARNING 폼 …개가 HTTP로 데이터를 전송합니다
tech.mixed-content-form판정이 발생한 경우폼 …개가 HTTP로 데이터를 전송합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO 모바일 입력창 …개의 font-size가 16px 미만입니다
tech.mobile-input-font-too-small판정이 발생한 경우모바일 입력창 …개의 font-size가 16px 미만입니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO 비밀번호 input에 autocomplete="off"가 적용되었습니다
tech.password-autocomplete-off판정이 발생한 경우비밀번호 input에 autocomplete="off"가 적용되었습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
WARNING 비밀번호 input이 있는 form이 GET method를 사용합니다
tech.password-via-get판정이 발생한 경우비밀번호 input이 있는 form이 GET method를 사용합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO 중요 외부 출처 사전 연결
tech.preconnect-missing판정이 발생한 경우preconnect 적용을 검토할 외부 출처가 …개 있습니다
판정 조건이 없을 때초기 로딩의 핵심 외부 출처에 필요할 때만 preconnect를 적용함
preconnect는 곧 사용할 핵심 외부 출처의 연결을 미리 시작하는 선택적 성능 힌트다. 모든 외부 출처에 필요한 설정은 아니다.
-
WARNING link rel="preload" 오용: …
tech.preload-misuse판정이 발생한 경우link rel="preload" 오용: …
판정 조건이 없을 때해당 기능을 용도와 문법에 맞게 사용함
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO referrer 정책이 약합니다 ("…")
tech.referrer-policy-weak판정이 발생한 경우referrer 정책이 약합니다 ("…")
판정 조건이 없을 때현재 검사 규칙의 권장 수준을 충족함
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
CRITICAL robots.txt가 이 페이지를 크롤링 차단합니다
tech.robots-txt-blocking-this판정이 발생한 경우robots.txt가 이 페이지를 크롤링 차단합니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO /robots.txt 파일
tech.robots-txt-missing판정이 발생한 경우/robots.txt 파일이 없습니다
판정 조건이 없을 때/robots.txt 파일가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO 외부 정적 자원 무결성 검증
tech.script-no-sri판정이 발생한 경우SRI 무결성 검증 없이 불러온 외부 …가 …개 있습니다
판정 조건이 없을 때검사 대상인 교차 출처 고정 자원에 유효한 integrity 해시가 있음
SRI는 내용이 고정된 외부 파일의 해시를 검증한다. 동적으로 바뀌는 자원이나 같은 출처의 파일에는 그대로 적용할 수 없다.
-
WARNING 비동기 스크립트 로딩
tech.script-render-blocking판정이 발생한 경우head 안 동기 외부 스크립트 …개가 렌더링을 막습니다
판정 조건이 없을 때동기 실행이 불필요한 head 스크립트가 파싱을 막지 않음
head의 동기 스크립트는 HTML 파싱을 멈출 수 있다. 실행 순서가 필요한 경우도 있어 실제 로딩 경로를 함께 확인해야 한다.
-
WARNING SRI 해시 형식
tech.script-sri-invalid판정이 발생한 경우외부 …의 integrity 해시 포맷이 올바르지 않습니다 ("…...")
판정 조건이 없을 때integrity 값이 지원 알고리즘과 base64 형식을 따름
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO 보안 헤더 …개 누락 (…)
tech.security-headers-weak판정이 발생한 경우보안 헤더 …개 누락 (…)
판정 조건이 없을 때현재 검사 규칙의 권장 수준을 충족함
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
WARNING sitemap.xml
tech.sitemap-missing판정이 발생한 경우sitemap.xml이 없습니다
판정 조건이 없을 때sitemap.xml가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
INFO sitemap.xml이 robots.txt에서 참조되지 않습니다
tech.sitemap-not-referenced판정이 발생한 경우sitemap.xml이 robots.txt에서 참조되지 않습니다
판정 조건이 없을 때현재 판정 조건이 발생하지 않음
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
WARNING <meta viewport> 값이 부적절합니다 (…)
tech.viewport-bad판정이 발생한 경우<meta viewport> 값이 부적절합니다 (…)
판정 조건이 없을 때값과 형식이 현재 검사 규칙에서 유효함
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
-
CRITICAL <meta name="viewport"> 태그
tech.viewport-missing판정이 발생한 경우<meta name="viewport"> 태그가 없습니다
판정 조건이 없을 때<meta name="viewport"> 태그가 필요한 위치에서 확인됨
보안 정책과 리소스 로딩, 뷰포트 등 기술 기반을 확인한다.
* severity는 줍줍 내부 점수 가중치입니다. 검색엔진의 공식 페널티나 수정 우선순위를 그대로 뜻하지 않습니다.
* 판정 조건이 없을 때는 해당 검사가 적용되는 페이지에서 기대하는 상태입니다. 이벤트 로그에 이슈가 없다는 사실만으로 pass·해당 없음·확인 불가를 구분할 수는 없습니다.
* 같은 분석 루틴도 페이지 상태에 따라 여러 판정 ID를 낼 수 있습니다. 이 목록은 분석기 개수가 아니라 서로 다른 판정 항목 189개를 셉니다.