What is infinite scroll — and why you can never reach the site footer

Try finding a store's phone number at the bottom of a site with an infinite feed. You scroll down to the footer — and it runs away. The feed loads twenty more cards and pushes it down again.
This isn't one site's bug. Nielsen Norman Group, the leading usability lab, says it plainly: infinite scroll without a "Load more" button can make the site footer unreachable. Their example is Nike's catalog.
Something that's great for a feed turns into a trap for a catalog. Let's see why — and when it's still the right call.
What infinite scroll is
Infinite scroll means the list isn't split into pages. You scroll down, and new items load on their own, right at the end.
It was invented in 2006. Today it's almost everywhere content flows as a stream: TikTok, Instagram, news apps, some online stores.
It has two relatives. The first is a "Load more" button: the next batch arrives only when you click. The second is a feed with page numbers: one continuous scroll, but with "page 2", "page 3" markers you can jump to.
How it works
There's nothing infinite under the hood. The server returns the list in batches — say, 20 items, just like regular pagination. The only difference is who asks for the next batch.
An invisible "marker" sits at the end of the list. The browser watches whether it has appeared on screen. Once it does, you've reached the end, and the code asks the server for the next 20 items.
const marker = document.querySelector('#list-end');
new IntersectionObserver(async ([entry]) => {
if (!entry.isIntersecting) return;
const res = await fetch(`/api/posts?after=${lastId}`);
const posts = await res.json();
renderPosts(posts); // append the cards to the end of the list
}).observe(marker);
IntersectionObserver is a watcher built into the browser. It tells you when an element enters the visible part of the screen. No counting pixels on every scroll.
That already explains the first consequence. Anything below the marker is seen only after the last batch. And an infinite feed has no last batch.
Where it breaks
NN/g lists six problems. Here are the four people hit first.
- The footer is out of reach. Contacts, shipping, return policy all live at the bottom. The feed keeps pushing them further away.
- "Back" takes you to the top. You open a card, come back — and you're at the start again. Thirty screens to scroll through once more. With page numbers you'd at least land on one short page.
- The illusion of completeness. While the next batch loads, the bottom is empty. People decide they've seen everything and leave. Especially if a row of cards just ended and there's a blank strip or an ad.
- Keyboard and screen readers. Keyboard users move through the feed with Tab, link by link — they'll never reach the end. And a screen reader, NN/g notes, may only see the first batch. The ARIA
feedrole helps: it tells the screen reader it's dealing with a feed that loads as you read.
There's a fifth problem you can't see: search. Google finds pages through the addresses in <a href> links. Its crawler doesn't click buttons and generally doesn't run scripts that wait for a user action. If products 21 through 1000 only appear on scroll, for search they may not exist. We covered how Google finds a site at all in what is SEO.
And the sixth — the page gets heavy. Five hundred cards with pictures means five hundred images in a phone's memory. If your site is already slow, start with five steps to speed it up.
When to use it and when not to
The key question is why the person came to the page.
Use infinite scroll when items are roughly equal and people just browse: a social feed, an inspiration board, news. Here every "Next" click is one more reason to quit. NN/g cites a study: even a short interruption like going to the next page nudges people to switch to something else.
Use pages or "Load more" when people search, compare and come back: a catalog, search results, an archive. They need landmarks like "it was on page three, somewhere in the middle."
If you still build an infinite feed, close three holes:
- Remember the position. Keep the batch number in the address (
?page=3) or the scroll position insessionStorage. Restore it when the person returns. - Stop after a few batches. After three or four loads, show a "Load more" button. The footer becomes reachable again.
- Show that it's loading. A loading indicator at the bottom removes the illusion of completeness.
Short story-lessons, an agent simulator and daily practice — in our mobile app. Free.
Does infinite scroll hurt SEO?
Not by itself. It hurts when new batches exist only inside a script. Google recommends giving each batch its own address and connecting them with ordinary <a href> links.
Why is a "Load more" button better?
The person decides whether they want more. The footer stays in place, and the flow isn't broken by a jump to a new page. NN/g calls this button a compromise between the two approaches.
How do I bring someone back to the same spot after "Back"?
Save how many batches were loaded and the scroll position. On return, load the same number of batches and scroll to the saved spot. The simplest way is to keep the batch number right in the page address.





