Back to Blog
testimonials
performance
web

How to Keep a Testimonials Page Fast When It Has Hundreds of Quotes

ProofShow Team··6 min read

A dedicated testimonials page is one of the few places where more social proof is genuinely better — a prospect scrolling past two hundred real quotes feels a weight of evidence that ten curated ones never deliver. But volume has a cost that most teams discover only after the page is live: two hundred quotes usually means two hundred avatars, a scatter of company logos, and a handful of video thumbnails, and all of that has to travel to the browser and paint before the visitor sees anything. Cross a threshold and the page that was supposed to be your strongest proof becomes your slowest, and a slow page loses the very prospect it was built to convince.

The instinct when a testimonials page gets slow is to cut it down — show fewer quotes, drop the photos, remove the videos. That trades away the thing that made the page work. The better move is to keep the volume and change how it loads, because almost all of the slowness comes not from having hundreds of quotes but from trying to deliver all of them at once, up front, to a visitor who will only ever read the first handful before deciding.

Why the page gets slow

Three things bloat a large testimonials page, and each has a different fix.

  • Every image loads whether it is seen or not. A default page tells the browser to fetch all two hundred avatars, every logo, and every video thumbnail immediately — including the hundred and eighty that sit far below the fold and may never be scrolled to. The browser dutifully downloads all of it before the page settles, and the visitor waits on images they will never look at.
  • Unsized images shove the layout around. When images arrive without declared dimensions, each one that loads pushes the content below it down, so the page jumps under the reader's eyes for several seconds. This is measured as cumulative layout shift, and beyond hurting your Core Web Vitals score it makes the page feel broken even when it is technically fast.
  • The whole list renders as one giant block of HTML. Two hundred testimonial cards is a large amount of DOM, and rendering, styling, and keeping all of it in memory taxes lower-end phones in particular — the exact devices where a slow page does the most damage.

None of these require fewer quotes to fix. They require the page to be lazier about when it does the work.

Load images only as they are needed

The single biggest win on a large testimonials page is lazy-loading the images, so the browser fetches an avatar, logo, or video thumbnail only as it approaches the viewport rather than all at once on page load.

  • Add native lazy loading to below-the-fold images. A loading="lazy" attribute on avatars and thumbnails tells the browser to defer them until the visitor scrolls near. The first screen — the quotes the visitor actually sees first — stays eager and paints immediately; everything below waits its turn.
  • Keep the very first images eager. Do not lazy-load what is above the fold; deferring the first few avatars just delays your most important content. Lazy loading is for the long tail, not the opening.
  • Serve modern formats at the right size. A testimonial avatar displayed at 48 pixels does not need a 1000-pixel source. Compress, resize to the display dimensions, and serve modern formats so each image is a fraction of its original weight before lazy loading even kicks in.

For the closely related decision of how to present customer logos as a proof element without dragging performance down, see how to build a customer logo wall that actually builds trust.

Reserve space so the page does not jump

Lazy loading solves speed but can worsen layout shift if the images arrive into space the browser did not reserve. Fix both together.

  • Declare width and height on every image. With dimensions set, the browser reserves the exact space before the image loads, so nothing below it moves when it arrives. This is the highest-leverage fix for the "page jumping around" feeling.
  • Give video thumbnails a fixed aspect-ratio container. A video embed that resizes when it loads is a large layout shift. Wrap it in a container with a fixed aspect ratio so the slot is stable from the first paint.
  • Reserve space for lazy avatars too. A lazy-loaded avatar should still have its box reserved, so scrolling stays smooth rather than stuttering as each new image pops in and nudges the text.

Do not render all two hundred at once

If lazy images are not enough — usually on very large pages or weak devices — reduce how much of the list exists at any one time.

  • Paginate or "load more." Render the first thirty or forty quotes and add the rest on demand, either with numbered pages or a "show more" button. This keeps the initial DOM small and the first paint fast, and most visitors never need the rest anyway.
  • Virtualize a long scrolling list. If you want an uninterrupted scroll rather than pagination, render only the cards currently near the viewport and recycle them as the visitor moves. From the reader's side it looks like all two hundred are there; from the browser's side only a couple of dozen exist at any moment.
  • Filter instead of dumping. Let visitors narrow by industry, use case, or role rather than scrolling the entire wall. A relevant subset of twenty converts better than an undifferentiated two hundred and is far cheaper to render — the same principle that makes a targeted testimonial outperform a generic one applies to the whole page.

While you are reducing what loads up front, apply the same restraint to testimonials you place on secondary screens, where a heavy embed is even less justified — see should you put a testimonial on a loading or processing screen.

The order to do this in

If your testimonials page is already slow, work in order of leverage:

  1. Size every image and lazy-load everything below the fold. This alone fixes most large pages, and it changes no content — the page still shows every quote.
  2. Reserve space for images and video thumbnails. Kills the layout jump and lifts your Core Web Vitals without touching what the visitor reads.
  3. Paginate, virtualize, or filter only if the first two are not enough. This is the heavier change, so reach for it last — but on a genuinely huge wall it is what keeps low-end phones usable.

The goal is never to have fewer testimonials. A large, credible wall of proof is an asset worth keeping at full volume — you just have to stop delivering all of it in the first second. Load what the visitor sees, defer what they have not scrolled to yet, and the page keeps its persuasive weight while feeling instant, which is exactly the combination that turns a proof page into a converting one.

Ready to get started?

Start collecting and showcasing testimonials in under 5 minutes.

Start Free