Glossary

Explore Meshline

Products Pricing Blog Support Log In

Ready to map the first workflow?

Book a Demo
Autonomous Operations

Should You Lazy Load Content for SEO? The Viewport Rule That Keeps Pages Visible

Learn the viewport rule that decides when lazy loading is safe for SEO, how to fix infinite scroll, and how to verify Google sees your rendered content.

A flat editorial illustration on a textured neutral background showing a stylized webpage layout with a large navy header, an orange accent bar, and teal outlines representing content blocks below.

Lazy loading defers images, videos and page sections until a visitor needs them.

Done well, it speeds up pages and cuts wasted bandwidth.

Done badly, it hides content from Google entirely.

The difference comes down to one rule: content must load when it enters the viewport, not when a user scrolls, clicks or taps.

Why lazy loading can hide content from Google

Google Search does not interact with your page.

It does not scroll, click buttons or tap accordions.

Googlebot fetches the page and its Web Rendering Service renders it, but anything that only appears after a human action never shows up during that render.

Google's own guidance on lazy loading is explicit: implementations must not rely on user actions such as scrolling or clicking to load content (Google, Fix lazy-loaded content).

That means a gallery that loads images only when someone swipes, or a product description that appears only after a click, is invisible to the crawler.

The page may look fine to you in a browser.

In the rendered HTML that Google sees, the content simply is not there.

The viewport rule

The safe pattern is straightforward: load relevant content whenever it becomes visible in the viewport.

Viewport-based loading works because the rendering service positions content the same way a browser does.

When a section would be on screen, it loads, whether a human or a crawler is looking.

Google lists three methods that meet this standard (Google, Fix lazy-loaded content):

  • Browser built-in lazy loading for images and iframes.
  • The IntersectionObserver API, with a polyfill for older browsers.
  • A JavaScript library that supports loading data when it enters the viewport.

All three trigger on position, not on interaction.

If your current implementation waits for a scroll event handler, a click on a 'load more' button, or a tap to expand a section, it fails this test.

Do not lazy load the first screen

There is a second rule that matters for users, not just crawlers.

Google advises against adding lazy loading to content that is likely to be immediately visible when a page opens (Google, Fix lazy-loaded content).

Deferring above-the-fold content delays what the visitor came for, and the delay is very noticeable.

In practice this means your hero image, headline, primary product shot or opening paragraph should load normally.

Reserve lazy loading for content further down the page: embedded videos, image-heavy sections, comment threads, related-item carousels.

The tradeoff is real.

Lazy loading everything maximises deferred weight but risks both user experience and indexation.

Lazy loading nothing is safe but wastes performance gains.

The viewport rule gives you the dividing line: below the fold, load on visibility; at the top, load immediately.

Infinite scroll needs real URLs

Infinite scroll is where lazy loading most often breaks indexation.

When a long article or a product listing loads more chunks as the visitor scrolls, Google can only discover and index those chunks if each one has its own address.

Google's requirements for indexable infinite scroll are specific (Google, Fix lazy-loaded content):

  • Give each chunk a persistent, unique URL, such as ?page=12.
  • Keep the content on each URL the same every time it loads. Avoid relative values like ?date=yesterday.
  • Link sequentially to the individual URLs so search engines can discover the whole paginated set.
  • When a new chunk becomes the primary visible element, update the displayed URL using the History API so users can refresh, share and link to it.

If your infinite scroll has none of this, the chunks beyond the first screen are effectively unindexable.

Converting to paginated URLs is the fix, and it also improves sharing and analytics, since each chunk becomes a distinct, addressable page.

How to check whether Google sees your content

You do not have to guess.

Google offers two tools that show a page's rendered version: the Rich Results Test and the URL Inspection Tool in Search Console (Google, Fix Search-related JavaScript problems).

These show loaded resources, JavaScript console output and the rendered DOM.

The practical check for lazy loading is simple.

Run a URL through the URL Inspection Tool and look at the rendered HTML.

If your image or video URLs appear in the src attribute of the img or video elements in that rendered HTML, your setup works correctly (Google, Fix lazy-loaded content).

If the placeholders are still there and the real sources are missing, Google cannot see that content.

Run this check on your most important templates, not just one page: a typical article, a listing page with infinite scroll, a product page with a tabbed gallery.

One passing page does not prove the pattern holds everywhere.

Related JavaScript risks worth knowing

Lazy loading problems usually sit inside a broader JavaScript rendering picture.

A few documented behaviours from Google's JavaScript troubleshooting guide are worth keeping in mind (Google, Fix Search-related JavaScript problems):

  • Googlebot may skip fetching resources it has identified as not contributing to essential page content, so non-essential scripts and requests can behave differently from your core content.
  • The rendering service does not retain state across page loads. Local storage, session storage and cookies are cleared, so any content that depends on stored state will not appear in a fresh render.
  • URL fragments such as #/products cannot be relied on to load different content for Googlebot. Use the History API with real URLs instead.
  • Single-page applications that return a 200 status for missing content risk soft 404 errors being indexed. Redirect to a real 404 URL or add a noindex robots meta tag when content does not exist.

None of these are lazy loading bugs exactly, but they share a cause: content that only exists after client-side behaviour the crawler does not perform.

If you are auditing lazy loading, it is worth checking these at the same time.

A practical rollout order

For a team coordinating marketing and sales systems, the sequence that works is:

  1. Inventory which templates use lazy loading and what triggers it: viewport observation, scroll events, clicks or taps.
  2. Replace interaction-based triggers with viewport-based ones, or use browser built-in loading for images and iframes.
  3. Remove lazy loading from above-the-fold content.
  4. Convert infinite scroll to paginated, sequentially linked URLs.
  5. Verify each template with the URL Inspection Tool and confirm content appears in the rendered HTML.

Treat the verification step as part of your content QA rather than a one-off project.

Templates change, libraries update, and a pattern that passed last quarter can silently regress.

Folding a rendered-HTML check into your existing content QA decision rule keeps the fix durable.

If multiple teams publish to the same site, write the viewport rule into your content governance decision rule so new templates inherit it by default.

When the answer is no

Sometimes the right decision is not to lazy load at all.

If a page is short, if its images are small, or if the engineering cost of a correct viewport-based implementation outweighs the performance benefit, load everything normally.

Lazy loading is a performance tool, not an obligation.

The only obligation, from a search perspective, is that whatever you publish is present in the rendered HTML Google sees.

For content teams planning publishing workflows, the same principle applies upstream: decide what each page must show before deciding how it loads.

For broader publishing mechanics, our guide on scheduling blog posts in advance or publishing now covers a similar tradeoff between convenience and control.

For image-heavy pages, check which sitemap extensions to enable per content type so video and image content gets discovered alongside its host pages.

Lazy loading is safe for SEO when content loads on viewport visibility, above-the-fold content loads immediately, infinite scroll chunks have persistent URLs, and you verify the rendered HTML in the URL Inspection Tool.

How Meshline can help. Connect automation, Organic Marketing (demand generation), and customer lifecycle management (Revenue Intelligence).

Bring topic planning, content publishing and performance feedback into the conversation about your workflow. Book a Meshline demo.

Revenue Intel

Ask us about this workflow.

Tell us what you want to fix or automate. We'll reply with the most useful next step.

Book a Demo

Implementation decisions

Put this into practice

Before investing in Should You Lazy Load Content for SEO? The Viewport Rule That Keeps Pages Visible, define the problem, the available data and who will review the outcome.