A bed product page does more work than its photos suggest. Switching from double to king can change the price, the dimensions, the delivery date, stock, the finance line and the list of matching mattresses in one go. Ottoman beds often add a video of the lift. Divan sets add a builder for drawers, headboard and mattress. Google measures how quickly each of those taps responds, and how much the page moves while the extras load.

This guide covers the three measurements first. It then goes through the parts of a bed page that tend to cost the most, with fixes that keep the selling tools in place.

What Google measures on a bed page

Core Web Vitals are three measurements taken from real visits:

  • Largest Contentful Paint is the time until the largest image, text block or video in view is drawn. Good is 2.5 seconds or less; poor is over 4 seconds.
  • Interaction to Next Paint is how long the page takes to show a response after a click, tap or key press. Good is 200 ms or less; poor is over 500 ms. Hovering, scrolling and zooming are not counted.
  • Cumulative Layout Shift scores the largest burst of unexpected movement. Good is 0.1 or less; poor is over 0.25.

Each is assessed at the 75th percentile, with phones and desktops reported separately. Field figures come from Chrome users through the Chrome UX Report, PageSpeed Insights and Search Console. Lab tools such as Lighthouse run one simulated load. They are good for finding causes, but Lighthouse cannot measure INP and reports Total Blocking Time instead.

For context, the 2024 Web Almanac found the largest element was an image on 73.3% of mobile pages and 83.3% of desktop pages. On 16% of mobile pages where it was an image, that image was lazy-loaded. And 66% of mobile pages had at least one image without set dimensions. Those figures describe the whole web in mid-2024, not bed retailers, but each one points at a habit a bed page can easily pick up.

What I measured on UK bed product pages (October 2026)

I tested five UK bed product pages in PageSpeed Insights on 23 October 2026, one mobile run each on an emulated mid-range phone over slow 4G. Two of the five returned a 404 when tested and were left out, so only three bed pages remain: a very small sample.

PagePerformance scoreLab LCPTotal Blocking TimeLab CLS
Retailer A699.5 s200 ms0.00
Retailer B355.7 s890 ms0.47
Retailer C1001.6 s10 ms0.00

The median score was 69 and the median lab LCP 5.7 seconds, but with three pages the spread says more. One scored 100 with a lab LCP of 1.6 seconds, the only one of the 103 valid pages I tested across all industries to reach 2.5 seconds or less. Another scored 35, with 890 ms of blocking time and a lab CLS of 0.47, movement of the kind that late delivery dates and finance badges can cause. Forced reflow was flagged on all three, which matters when one size tap updates price, dates and mattress lists together.

None of the three bed URLs had field data of its own in the Chrome UX Report. On whole-site (origin) data, all three sites passed Core Web Vitals. A throttled lab phone is much slower than most real visits, and Google does not judge pages on lab LCP. With three pages, read this as an illustration, not a ranking.

Room-set heroes and ottoman lift videos (LCP)

The wide bedroom shot

Bed galleries often open on a wide room set: the bed, bedside tables, a rug and a window. On a phone that image is shown at a fraction of its width, so serve sizes through srcset that match the layout, in WebP or AVIF. Google’s LCP optimisation guide adds the rules that matter most here:

  • Put the first image in the HTML as an <img> with src and srcset. A gallery that sets it as a CSS background or injects it with a script hides it from the browser’s early scan.
  • If the image really has to come from CSS or a script, preload it with fetchpriority="high".
  • Do not lazy-load it, and keep fetchpriority="high" to one or two images at most.
  • Serve it from the same origin as the page.

Watch for galleries that fade the first slide in from zero opacity. Chromium does not treat an element at opacity 0 as an LCP candidate, and web.dev advises against hiding the LCP element until JavaScript has loaded. A blurred, low-detail placeholder doesn’t count either, so it cannot stand in for the real image.

The lift video

A short clip of an ottoman base rising sells the storage well. Placed at the top of the page, it can also become the LCP element. For a video, LCP uses the load of the poster image or the first frame, whichever comes first. Give the video a compressed poster that is in the HTML, and avoid autoplaying a large file above the fold. Often the better layout is a still of the lifted base in the gallery, with the clip playing only when the buyer taps it.

Size, storage and filter taps (INP)

Every size, drawer and headboard choice is a tap, and INP usually reports the slowest response of the visit. On a long visit, one of the highest-latency interactions is ignored for every 50. A buyer comparing four sizes and three storage options rarely gets near that number, so one slow selector can set the score.

web.dev splits each interaction into input delay, processing time and presentation delay. On a bed page, the work triggered by a size change is the likely suspect. Practical steps:

  • Ship price and dimension data for every size with the page, so a tap updates the display without waiting for the network.
  • Draw the new price and dimensions first. Fetch the delivery estimate and refresh the mattress list afterwards.
  • Swap a single drawer-layout diagram when storage changes, rather than rebuilding the whole gallery.
  • Avoid re-rendering the full product form on each tap. Large layouts, layout thrashing and client-side rendering are among the causes web.dev links from its INP article.

On category pages, filter taps for size, storage or bed type are interactions as well. A grid that redraws dozens of tiles and their size chips in one go can respond slowly on a mid-range phone.

Bundle builders for headboards and mattresses

Some bed sites sell the base, headboard and mattress together through a builder, sometimes added as a plugin or app. That code can arrive on every page, though only some pages use it. Load it on the product templates that need it, and consider starting it only when the buyer opens the builder.

Render the default state, usually the base alone, on the server. The LCP guide lists client-side rendering among the causes of render delay, and recommends server-side rendering or prerendering instead. Break long setup work into smaller tasks, so that a tap during loading is not stuck behind them.

A 3D or AR bed viewer follows the same rule. Show a still image first, so the still is what LCP measures, and fetch the model only on request. There is more on that in how a 3D product configurator is built.

Delivery dates, finance and trial badges (CLS)

Bed pages collect late-arriving extras: a postcode delivery checker, a “next available delivery” line, a monthly finance figure, sleep-trial or guarantee badges, review stars and a cookie banner. web.dev’s CLS article lists five causes of shifts. Two are images and video without dimensions, and web fonts that render at a different size from the fallback. The others are resizing third-party widgets, content inserted above what is on screen, and content loaded asynchronously.

One detail matters especially for size selectors. Shifts within 500 ms of a tap, click or key press are treated as expected and left out. If the price line grows straight after a size tap, no harm is done. If the delivery date and finance offer arrive a second and a half later and push the basket button down, those shifts count. Shifts less than a second apart are grouped into one window, capped at five seconds.

  • Reserve space for each extra, sized to its longest likely text.
  • Give every gallery and tile image width and height, or a CSS aspect-ratio.
  • Open size guides and mattress charts as overlays rather than pushing the page down.
  • Animate expanding panels with transform, and respect prefers-reduced-motion.

Testing a bed product page

  1. Run an ottoman bed page and a divan set page through PageSpeed Insights separately. Start with the field data, then look at the lab results.
  2. Find the LCP element on each. If it is the lift video, a placeholder, or a heading pushed below the gallery, find out why.
  3. On a mid-range Android phone, tap through every size and storage option, noting how long the price takes to change.
  4. Record the same taps in the Chrome DevTools performance panel and look for long tasks.
  5. Change size and watch whether the delivery date, finance line or mattress list moves the basket button.
  6. List each script loaded by the builder, delivery checker, reviews and finance tools, and check which also load on pages that never use them.
  7. Check Search Console’s Core Web Vitals report, which groups similar URLs, for problems across product templates.

Most of this work changes how the page loads, not how it looks. For the search side of size and storage variants, see bed ecommerce SEO, and for product pages and delivery, selling beds online. Examples of bed builders are in the bedroom configurator demos. If you would like the work done, see Core Web Vitals, Shopify speed optimisation or, for WooCommerce, speed, caching and scripts.

Sources

The web.dev pages were read in October 2026.