지연 로딩

이미지·iframe 지연 로딩이 Core Web Vitals를 개선하는 방식, loading 속성, 첫 화면 콘텐츠를 지연할 때의 SEO 위험, Googlebot 렌더링을 설명합니다.

최초 게시: 2026년 7월 2일 · 최근 업데이트: 2026년 8월 9일 · Advanced
언어

지연 로딩은 화면 밖 이미지와 iframe이 뷰포트 가까이 올 때까지 미뤄 초기 페이지 용량을 줄이고 Core Web Vitals를 돕습니다. 기본 방식은 <img>와 <iframe>의 loading="lazy" 속성이며 JavaScript가 필요 없습니다. 히어로/LCP 이미지를 지연 로드하면 Largest Contentful Paint가 늦어집니다. Googlebot은 스크롤하거나 클릭하지 않으므로 그런 이벤트 뒤 콘텐츠는 보이지 않을 수 있습니다. 직접 순위 요소가 아니라 Core Web Vitals와 크롤링 가능성을 통해 작용합니다. Search Console URL 검사에서 렌더링 HTML의 src 속성에 이미지 URL이 있는지 확인하세요.

요약 — 지연 로딩은 화면 밖 이미지와 iframe이 뷰포트에 가까워질 때까지 미뤄 초기 페이지 용량(LCP 개선)과 시작 시 메인 스레드 작업(INP 개선)을 줄입니다. <img>/<iframe>의 기본 loading="lazy" 속성이 대부분의 JS 라이브러리를 대체했으며 의미 있는 값은 lazyeager뿐이고 auto는 폐기됐습니다. 치명적인 실수는 LCP·첫 화면 이미지를 지연 로드해 개선하려는 지표 자체를 늦추는 것과, Googlebot이 페이지와 상호작용하지 않으므로 실행하지 않는 스크롤·클릭 뒤에 콘텐츠를 두는 것입니다. 직접 순위 요소는 아니며 Core Web Vitals와 크롤링 가능성을 통해 간접적으로 작용합니다. Search Console URL 검사 도구에서 이미지 URL이 렌더링 HTML의 src 속성에 들어갔는지 확인하세요.

지연 로딩이 실제로 하는 일

원리는 간단합니다. 모든 리소스를 한꺼번에 로드하지 않고 필요할 때만 로드합니다. 미디어가 많은 페이지에서 모든 이미지와 임베드를 먼저 다운로드하면 방문자가 보지 않을 항목 때문에 대역폭·메모리·배터리를 낭비합니다. 화면 밖 항목을 미루면 첫 화면 콘텐츠가 더 빨리 그려집니다. Martin Splitt도 Google Search Off the Record의 ‘지연 로딩 해부’ 에피소드에서 페이지에 없어도 되는 중요하지 않은 이미지가 브라우저를 계속 바쁘게 하므로 결과를 만들지 않는 작업을 피하는 것이 목표라고 설명했습니다.

이는 많은 사람이 개선하려는 Core Web Vitals와 연결됩니다. 초기 네트워크 경합이 줄면 Largest Contentful Paint 요소가 더 빨리 렌더링됩니다. 광고·소셜 위젯·댓글·지도 iframe을 미루면 시작 시 메인 스레드 작업도 줄어 LCP뿐 아니라 Interaction to Next Paint도 개선됩니다. Google web.dev도 페이지 로드 중 iframe 지연 로딩을 INP 개선으로 설명합니다.

기본 지연 로딩과 JavaScript 방식 비교

몇 년 전 브라우저에 이미지·iframe용 기본 loading 속성이 생겨 JavaScript API를 직접 연결하지 않고 브라우저에 맡길 수 있게 됐습니다. Ahrefs의 JavaScript SEO 안내서에서도 처음 글을 쓴 뒤 지연 로딩이 대체로 JavaScript 방식에서 브라우저 처리 방식으로 이동했다고 설명했습니다. JS 방식도 여전히 보이며 이미지에는 보통 문제없습니다. 실제 콘텐츠까지 지연 로드하는지 확인해야 하는 이유는 그런 구현에서 콘텐츠가 올바르게 수집되지 않은 사례가 있기 때문입니다.

기본 구현은 다음과 같습니다.

<!-- Below-the-fold image: defer it -->
<img src="gallery-07.jpg" loading="lazy" width="800" height="600" alt="…">

<!-- Off-screen embed: defer it -->
<iframe src="https://www.youtube.com/embed/…" loading="lazy" title="…"></iframe>

지연 이미지에는 명시적인 width/height 또는 종횡비를 설정해 로드 전에 공간을 예약하세요. 이미지 지연으로 인한 가장 큰 레이아웃 이동 위험입니다. 다만 크기를 예약했다고 CLS가 절대 발생하지 않는 것은 아닙니다. 주변 레이아웃이나 반응형 자르기가 로드 뒤 바뀌면 이동할 수 있으므로 고정 크기만 믿지 말고 실제 레이아웃 이동 트레이스로 확인하세요.

iframe 지연 로딩에는 한 가지 구분이 더 필요합니다. <iframe>loading="lazy"는 임베드 가져오기와 생성 시점만 미룹니다. title, 포커스 동작, sandbox, allow/권한 정책, referrerpolicy, 동의 처리, 크기는 별도로 설정해야 합니다. 임베드가 로드 대상이 된 뒤에도 스크립트·추적 픽셀·레이아웃 작업을 계속할 수 있습니다. 또한 ‘첫 화면 아래’가 어디서나 같다고 가정하지 마세요. display: none 콘텐츠, 화면 밖 캐러셀 슬라이드, 변형된 요소, 중첩 스크롤 컨테이너는 일반 요소와 다르게 뷰포트와 교차할 수 있으므로 실제 레이아웃과 탐색 제어를 테스트하세요.

loading 속성 값

현재 중요한 값은 두 가지입니다.

  • loading="lazy" — 리소스가 뷰포트 가까이 올 때까지 미룹니다.
  • loading="eager" — 기본 동작대로 즉시 로드합니다. 첫 화면 이미지임을 명시할 때 사용하세요.
Evidence for this claim The native loading attribute supports lazy loading for images and iframes without a JavaScript lazy-loading library. Scope: Browser-level lazy loading behavior; browser heuristics decide the fetch distance. Confidence: high · Verified: web.dev: Browser-level image lazy loading

예전 문서에서 loading="auto"를 볼 수 있지만 Chrome에서는 폐기됐으므로 사용하지 마세요. 속성을 생략하면 이미 기본 eager 동작을 하므로 필요하지 않습니다.

‘가깝다’는 어느 정도일까요? loading="lazy"는 힌트이지 작성자가 통제하는 보장이 아닙니다. 사양은 실제 뷰포트 근접 판단을 브라우저에 맡깁니다. Chromium은 스크롤 시점에 준비되도록 미리 가져오려 하지만 트리거 거리는 브라우저·연결 속도·리소스 유형에 따라 달라지며 브라우저나 버전을 넘어 의존할 수 있는 고정 픽셀 값이 아닙니다. ‘뷰포트 전 N픽셀에서 로드’ 같은 수치를 게시하거나 믿지 말고 구현 정의된 창으로 취급해 대상 브라우저·연결의 Network 트레이스로 확인하세요.

기본 지연 로딩은 반응형 이미지와도 잘 작동합니다. 일반 srcsrcset/sizes 선택에 적용되므로 loading="lazy"를 추가해도 반응형 이미지 동작을 잃지 않습니다. 실제 URL을 data-* 속성에만 숨겨 스크립트가 나중에 바꾸게 하면 해당 스크립트에 로딩이 의존합니다. 렌더링 HTML과 스크립트 실패 시 동작을 테스트하세요(스크립트·문제 해결 탭 참조).

Evidence for this claim Native lazy loading works with ordinary src and responsive srcset/sizes selection; hiding the real URL only in data-* attributes makes loading dependent on script and should be tested in rendered HTML and under script failure. Scope: responsive image fetching and layout Confidence: high · Verified: HTML Standard: img

#1 실수: LCP / 첫 화면 이미지 지연 로딩

가장 자주 보는 실패이며 모든 출처가 같은 결론을 냅니다. 히어로 이미지나 LCP 요소일 가능성이 있는 이미지를 지연 로드하면 체감 로딩 속도에서 가장 중요한 픽셀을 기다리라고 브라우저에 알리는 셈입니다. 브라우저는 이미지가 페이지 어디에 놓일지 알아야 지연 로드할 수 있어 첫 화면 이미지는 eager 이미지보다 더 느려지기 쉽습니다. 이는 Google이 로드 후 첫 2,5초 안에 완료해야 한다고 설명한 Largest Contentful Paint를 직접 늦춥니다.

Do not lazy-load the observed or likely LCP image; confirm the actual request and paint timing in a trace. 출처: Lazy Loading

The eager path discovers the likely LCP image in HTML and starts its request promptly. The lazy path waits for browser loading heuristics before request start. The comparison uses no fixed timing values and notes that actual LCP must be measured.

© Patrick Stox LLC · CC BY 4.0 ·

Splitt는 SOTR 에피소드에서 반대 상황도 분명히 설명했습니다. 필요한 곳에서 지연 로딩을 쓰지 않으면 Core Web Vitals의 일부, 대개 LCP가 나빠질 수 있습니다. 즉 양쪽 모두에 적용되는 규칙은 다음과 같습니다.

  • 가능성이 높거나 관찰된 LCP 후보 → eager로 로드합니다(loading="lazy" 생략 또는 eager 설정). LCP 이미지에는 fetchpriority="high"도 고려하세요.
  • 첫 화면 아래 → loading="lazy"를 사용합니다.

첫 화면의 모든 이미지가 LCP 후보는 아닙니다. Performance 트레이스나 PageSpeed Insights로 실제 후보를 찾고 요청 시점을 확인하세요. 이들은 하나의 설정이 아니라 별도 힌트입니다. loading="eager" 또는 loading 생략은 리소스 발견을 미루지 않는다는 뜻일 뿐 가져오기 우선순위를 높이지 않습니다. fetchpriority가 별도의 권고 힌트입니다. 같은 리소스에 <link rel="preload"> with loading="lazy"를 함께 쓰면 상충하는 의도를 전달하므로 조합이 기대대로 작동한다고 가정하지 말고 네트워크 폭포수를 확인하세요.

사이트 전체의 모든 이미지에 지연 로딩을 켜는 CMS 기본값이 대표적인 안티패턴입니다. Splitt가 지적했듯 모든 이미지를 지연 로드하면 즉시 보여야 하는 이미지까지 지연되므로 피해야 할 상황을 만듭니다.

Googlebot이 지연 로드 콘텐츠를 렌더링하는 방식

자주 놓치는 크롤링 현실은 Googlebot이 스크롤하거나 클릭하지 않는다는 것입니다. 헤드리스 브라우저로 페이지를 렌더링하지만 사용자 상호작용을 흉내 내지 않습니다. Google은 권장 방식이 스크롤·클릭 같은 사용자 동작에 의존하지 않는 이유를 Google 검색이 페이지와 상호작용하지 않기 때문이라고 직접 설명합니다.

Evidence for this claim Google Search does not scroll or click to trigger lazy-loaded content, so implementations should not depend on user interaction and should expose resource URLs in rendered HTML. Scope: Google Search guidance for JavaScript-driven lazy loading. Confidence: high · Verified: Google Search Central: Lazy-load content

따라서 구현 방식이 중요합니다. Google 문서는 이미지·iframe의 브라우저 내장 지연 로딩, 폴리필을 포함한 IntersectionObserver API, 데이터가 뷰포트에 들어올 때 로드하는 JavaScript 라이브러리의 세 안전한 방식을 제시합니다. 모두 Googlebot이 실행하지 않을 스크롤·클릭 이벤트가 아니라 뷰포트 교차를 기준으로 합니다.

위험이 큰 패턴은 맞춤형 또는 서드파티 JS 지연 로드 라이브러리입니다. 오작동해 이미지 URL이 src 속성에 들어가지 않으면 Google은 이미지를 수집하지 못합니다. Splitt도 SOTR에서 이 실패를 설명했습니다. URL이 없으면 색인할 것도 없습니다. JavaScript SEO 안내서에서도 이미지 지연 로딩은 보통 괜찮지만 지연 로드 콘텐츠에서 색인 문제가 생기므로 Google의 실제 렌더링 결과를 확인하라고 설명합니다.

무한 스크롤은 다른 문제

기본 이미지·iframe 지연 로딩과 무한 스크롤 또는 페이지 단위 로딩을 혼동하지 마세요. 이미지를 미루는 것과 사용자가 스크롤할 때 새 콘텐츠 묶음을 로드하는 것은 별개이며 자체 구조가 필요합니다. Google은 각 묶음에 지속적이고 고유한 URL을 주고 URL별 콘텐츠를 안정적으로 유지하며(?date=yesterday 같은 상대값이 아니라 ?page=12 같은 절대 페이지 번호), 각 묶음이 주로 보이는 콘텐츠가 될 때 History API로 표시 URL을 갱신해 새로고침·공유·링크가 가능하게 하라고 안내합니다. 이를 생략하면 끝없는 스크롤 뒤 콘텐츠가 안정적으로 크롤링·색인되지 않을 수 있습니다.

테스트 방법

Google 문서와 이 방법론의 검증 경로는 같습니다. Search Console URL 검사 도구에서 렌더링된 HTML을 확인하세요. 해당 HTML의 <img>/<video> 요소 src 속성에 이미지나 동영상 URL이 있으면 정상입니다. Google도 check the rendered HTML to make sure your content is in it (번역) 「렌더링된 HTML에 콘텐츠가 있는지 확인하세요」라고 명시합니다. src에서 URL이 빠졌다면 대개 스크롤·클릭 트리거나 고장 난 라이브러리가 원인입니다.

지연 로드 상품 그리드는 존재 여부 확인을 넘어야 합니다. 표준·높은 뷰포트, 새 탐색·로드 후 크기 조정, 무동작·점진 스크롤 실행, 고유 상품 링크 수, 접근성 트리 검사를 포함한 무한 스크롤 SEO 테스트 매트릭스를 실행하세요. 관찰자와 배치 계산이 시작 시에만 등록될 수 있으므로 초기화된 페이지 크기를 바꾸는 것은 최종 뷰포트 크기로 탐색하는 것과 같지 않습니다. Evidence for this claim Google Search does not scroll or click to trigger lazy-loaded content, so implementations should not depend on user interaction and should expose resource URLs in rendered HTML. Scope: Google Search guidance for JavaScript-driven lazy loading. Confidence: high · Verified: Google Search Central: Lazy-load content

웹 성능 도구도 활용할 수 있습니다. PageSpeed Insights는 지연해야 할 화면 밖 이미지를 표시합니다. Ahrefs PageSpeed Insights 안내서에서 ‘화면 밖 요소 지연’ 감사가 이미지 지연 로딩을 요청하는 것이라고 설명했듯 기존 진단을 해결책과 연결하기 좋습니다.

순위 신호에 대한 정직한 설명

지연 로딩의 역할을 명확히 하세요. 사용하는 것이 직접 순위 요소가 아니며 사용하지 않는다고 불이익을 받지도 않습니다. 순위와의 관계는 주로 LCP, iframe의 경우 INP 같은 Core Web Vitals와, 잘못된 구현이 콘텐츠를 숨길 때의 크롤링 가능성을 통해 간접적으로 생깁니다. Splitt는 Core Web Vitals를 통한 순위 효과가 대부분 매우 작다고 설명했습니다. 속성 하나로 순위가 오른다고 기대하지 말고 사용자 로딩 경험과 명확한 색인을 위해 최적화하세요.

관련 영역

지연 로딩은 더 넓은 웹 성능 도구 중 하나입니다. 일찍 필요한 리소스를 위한 preload/preconnect 같은 리소스 힌트, 글꼴 로딩 전략, 캐싱, CDN과 함께 사용하며 최종적으로 Core Web Vitals로 평가합니다. 첫 화면 위·아래 구분만 올바르게 해도 비용 대비 효과가 큰 개선입니다.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.