본문 바로가기

SVG 접근성 검사기

브라우저 처리

인라인 SVG가 의미 있는 그림인지 장식인지에 맞게 이름(title·aria-label)과 role="img", aria-hidden을 갖췄는지 검사하고, 이름 없는 아이콘 버튼을 찾아 줍니다.

도구 실행입력 후 결과 확인
SVG 접근성 검사기 샘플 실행

SVG 아이콘과 차트는 img의 alt 같은 단일 속성이 없어서 접근성 처리 방법이 헷갈리기 쉽습니다. 이 검사기는 붙여 넣은 HTML의 인라인 <svg>를 하나씩 보고 장식용(aria-hidden="true" 또는 role="presentation")인지 의미 있는 그림인지 구분한 뒤, 각각에 필요한 처리를 했는지 확인합니다.

브라우저 처리
샘플 결과
인라인 SVG 2개 · 장식 0개

✕ SVG 2: 아이콘 버튼·링크(button)에 이름이 없습니다 — 부모에 aria-label을 주고 SVG는 aria-hidden="true"로

SVG	구분	이름	설명	위치
SVG 1	의미 있음	"월별 매출 차트" (svg title)	desc ✓
자바스크립트가 활성화되면 이 영역이 실제 입력, 실행, 결과 패널로 바뀝니다.

SVG 접근성 검사기 사용 가이드

SVG 아이콘과 차트는 img의 alt 같은 단일 속성이 없어서 접근성 처리 방법이 헷갈리기 쉽습니다. 이 검사기는 붙여 넣은 HTML의 인라인 <svg>를 하나씩 보고 장식용(aria-hidden="true" 또는 role="presentation")인지 의미 있는 그림인지 구분한 뒤, 각각에 필요한 처리를 했는지 확인합니다.

의미 있는 SVG는 첫 번째 자식 <title>, aria-label, aria-labelledby 가운데 하나로 이름이 있어야 하고, role="img"를 주면 일부 화면 낭독기가 안쪽 도형을 하나씩 읽지 않습니다. <desc>가 있으면 함께 표시합니다. 장식용인데 이름이 있거나 안에 포커스 요소가 있으면 알려 줍니다.

버튼·링크 안의 아이콘 SVG는 부모의 이름을 함께 봅니다. 부모와 SVG 모두 이름이 없으면 '이름 없는 아이콘 버튼'으로 ✕ 표시하고, 부모에 aria-label을 주고 SVG는 aria-hidden="true"로 처리하라고 안내합니다.

사용 방법

  1. '검사할 HTML' 칸에 인라인 SVG가 든 HTML을 붙여 넣습니다.
  2. '실행'을 누르면 SVG별 구분(장식·의미), 이름, 설명 여부가 나옵니다.
  3. ✕ 항목에 title·aria-label을 넣거나 장식이면 aria-hidden="true"를 줍니다.
  4. △ 항목(role="img" 누락, title 위치)을 보완하고 다시 실행합니다.

예시: 차트 SVG와 이름 없는 아이콘 버튼

입력
<svg role="img" viewBox="0 0 100 100"><title>월별 매출 차트</title><desc>막대로 월별 매출을 비교합니다.</desc>…</svg>
<button><svg viewBox="0 0 10 10"><path d="M0 0h10v10"/></svg></button>
결과
인라인 SVG 2개 · 장식 0개

✕ SVG 2: 아이콘 버튼·링크(button)에 이름이 없습니다 — 부모에 aria-label을 주고 SVG는 aria-hidden="true"로

SVG	구분	이름	설명	위치
SVG 1	의미 있음	"월별 매출 차트" (svg title)	desc ✓

차트 SVG는 title과 role="img"를 갖춰 문제가 없습니다.

이럴 때 쓰면 좋아요

  • 아이콘 폰트를 SVG 아이콘으로 바꾼 뒤 점검할 때
  • 차트 라이브러리가 만든 SVG에 이름이 있는지 볼 때
  • 디자인 시스템의 아이콘 버튼 마크업을 검수할 때
  • 로고 SVG의 대체 텍스트를 확인할 때

문제가 생겼을 때

title을 넣었는데도 경고가 나와요

<title>은 <svg>의 첫 번째 자식이어야 이름으로 인식됩니다. <defs>나 도형보다 앞에 두세요.

'붙여 넣은 HTML에 인라인 <svg>가 없습니다' 오류

<img src="icon.svg">로 넣은 SVG는 이미지이므로 이미지 ALT 적용률 검사기로 alt를 확인하세요.

활용 팁

  • 같은 페이지에 같은 아이콘이 여러 번 쓰이면 title에 id를 붙여 aria-labelledby로 연결하는 편이 안정적입니다.
  • 복잡한 차트는 이름 외에 표나 본문으로 데이터를 함께 제공하는 것이 좋습니다.
  • SVG 코드 자체를 줄이려면 SVG 최적화기를 쓰되 title·desc를 지우지 않게 설정하세요.

자주 묻는 질문

장식용 아이콘은 어떻게 처리하나요?

<svg aria-hidden="true" focusable="false">처럼 숨기면 화면 낭독기가 읽지 않습니다. 버튼 이름은 버튼 쪽에 넣으세요.

desc는 꼭 필요한가요?

필수는 아닙니다. 차트처럼 짧은 이름으로 설명하기 어려운 그림에 자세한 설명을 붙일 때 씁니다.

SVG 코드가 전송되나요?

아니요. SVG 코드는 이 브라우저 안에서만 읽고 이름을 계산하며 서버에 남지 않습니다.