Core Web Vitals for nettbutikker: LCP, INP og CLS forklart
Hva LCP, INP og CLS måler, grensene for god og dårlig ved 75-persentilen, labdata mot feltdata og de vanlige rettelsene i Shopify- og WooCommerce-butikker.
FixReports-redaksjonen12 min lesing
Core Web Vitals er tre målinger fra Google som beskriver hvordan ekte besøkende opplever en side: Largest Contentful Paint (LCP) for innlasting, Interaction to Next Paint (INP) for responsivitet og Cumulative Layout Shift (CLS) for visuell stabilitet. En side består når minst 75 % av besøkene ligger i området «god»: LCP innen 2,5 sekunder, INP innen 200 millisekunder og CLS på 0,1 eller lavere, målt separat for mobil og datamaskin. I nettbutikker skyldes dårlige resultater som regel store hero- og produktbilder eller slike bilder med lazy loading, skript fra apper og sporing, nettfonter og bannere eller anmeldelseswidgeter som dytter innholdet nedover etter at siden har dukket opp.
Kort oppsummert
- God, trenger forbedring og dårlig vurderes ved 75-persentilen av sidevisningene: LCP er dårlig over 4 sekunder, INP over 500 ms og CLS over 0,25 (web.dev (åpnes i en ny fane)).
- INP erstattet First Input Delay (FID) som Core Web Vital 12. mars 2024 (web.dev (åpnes i en ny fane)).
- Feltdataene i Chrome UX Report er et glidende gjennomsnitt over 28 dager og inkluderer ikke Chrome på iOS (Chrome for Developers (åpnes i en ny fane)).
- Shopifys
image_tag-filter laster bilder umiddelbart i de tre første seksjonene i en mal og med lazy loading fra den fjerde seksjonen og nedover, med mindre du overstyrer det (Shopify (åpnes i en ny fane)). - Siden WordPress 6.3 legger kjernen til
fetchpriority="high"på bildet den anser som mest sannsynlig LCP-element (Make WordPress Core (åpnes i en ny fane)).
Hva er grenseverdiene for Core Web Vitals?
En side oppfyller Core Web Vitals når 75-persentilen av sidevisningene ligger i området «god» for alle tre målingene.
| Måling | Hva den måler | God | Trenger forbedring | Dårlig |
|---|---|---|---|---|
| LCP | Tiden til det største bildet, den største videoen eller tekstblokken i visningsområdet er gjengitt | 2,5 s eller mindre | Over 2,5 s og opptil 4,0 s | Over 4,0 s |
| INP | Tiden fra et klikk, trykk eller tastetrykk til neste bilde (frame) er tegnet | 200 ms eller mindre | Over 200 ms og opptil 500 ms | Over 500 ms |
| CLS | Hvor mye synlig innhold flytter seg uventet | 0,1 eller mindre | Over 0,1 og opptil 0,25 | Over 0,25 |
Grenseverdiene er hentet fra veiledningene til web.dev om LCP (åpnes i en ny fane), INP (åpnes i en ny fane) og CLS (åpnes i en ny fane), per oktober 2026.
At det måles ved 75-persentilen, betyr at resultatet gjenspeiler de fleste besøkende, ikke bare de raskeste, og Google skiller mellom mobil og datamaskin (åpnes i en ny fane). PageSpeed Insights godkjenner en side når alle tre målingene er gode; uten nok INP-data vurderes LCP og CLS alene (dokumentasjonen for PageSpeed Insights (åpnes i en ny fane)). Google sier at de stabile Core Web Vitals-målingene ikke endres oftere enn én gang i året.
I en nettbutikk er LCP-elementet ofte hero-banneret eller hovedbildet av produktet, og derfor betyr bildehåndteringen så mye.
Hvorfor erstattet INP FID i mars 2024?
INP erstattet FID fordi FID bare målte den første interaksjonen og bare en del av forsinkelsen, mens INP ser på interaksjoner gjennom hele besøket.
Google kunngjorde i mai 2023 at INP skulle bli en Core Web Vital, og byttet trådte i kraft 12. mars 2024 (åpnes i en ny fane). FID rapporterte bare den første interaksjonen, og bare inputforsinkelsen, ikke tiden som gikk med til å kjøre hendelsesbehandlere eller tegne resultatet. INP observerer klikk, trykk og tastetrykk gjennom hele besøket og rapporterer den lengste, der ekstreme avvik holdes utenfor; rulling og hovring teller ikke. Brukere av API-ene til CrUX og PageSpeed Insights hadde frist til 9. september 2024 med å bytte (web.dev (åpnes i en ny fane)).
Hver interaksjon består av tre deler: inputforsinkelse (venting på skript som holder hovedtråden opptatt), behandlingstid (kjøring av hendelsesbehandlerne) og presentasjonsforsinkelse (tegning av neste bilde) (web.dev (åpnes i en ny fane)).
I en nettbutikk er dette interaksjoner med variantvelgeren, antallsknappene, «Legg i handlekurven», handlekurvpanelet, filtrene og menyene. En side kunne bestå FID med et raskt første trykk og likevel føles treg når noen åpner filtrene senere.
Hva er forskjellen på labdata og feltdata?
Labdata kommer fra én test under faste forhold, mens feltdata samles inn fra ekte besøkende over tid, og Google anbefaler å bruke feltdata til å avgjøre hva du bør rette først (web.dev (åpnes i en ny fane)).
| Labdata | Feltdata | |
|---|---|---|
| Kilde | Én simulert sidevisning (Lighthouse, Chrome DevTools, labdelen av PageSpeed Insights) | Ekte besøkende i Chrome (Chrome UX Report) eller din egen overvåking av ekte brukere (RUM) |
| Forhold | Fast enhet og nettverk. Lighthouses standard mobiltest (åpnes i en ny fane) bruker «Slow 4G» (150 ms tur-retur, 1,6 Mbps nedlasting) og en 4x nedbremsing av prosessoren | De enhetene, nettverkene og stedene de besøkende faktisk har |
| INP | Måles ikke ved en vanlig sidevisning. Total Blocking Time (TBT) er en grov tilnærming | Måles ut fra ekte interaksjoner |
| Best til | Feilsøking og kontroll av en endring før lansering | Å vite hva de besøkende faktisk opplever |
TBT summerer den delen av hver oppgave på hovedtråden som går ut over 50 ms; web.dev foreslår under 200 ms på gjennomsnittlig mobilmaskinvare, men sier at TBT ikke kan erstatte INP (web.dev (åpnes i en ny fane)).
Tre detaljer ved Chrome UX Report (CrUX) har betydning for nettbutikker:
- Rapporten er et glidende gjennomsnitt over 28 dager (åpnes i en ny fane) og oppdateres daglig.
- Den dekker Chrome på datamaskin og Android for brukere som oppfyller Chromes vilkår for rapportering. Chrome på iOS er ikke med, så en butikk der de fleste kundene bruker iPhone, ser feltdata fra bare en del av publikummet sitt (metodikk (åpnes i en ny fane)).
- Sider og opprinnelser (origins) vises bare når de er offentlig synlige og populære nok, så en butikk med lite trafikk har kanskje bare data på opprinnelsesnivå, eller ingen data i det hele tatt.
Shopifys dashbord for nettytelse (åpnes i en ny fane) rapporterer også LCP, INP og CLS fra ekte brukere ved 75-persentilen, men over 30 dager i stedet for 28, så regn med noen forskjeller fra CrUX.
Hva gjør LCP tregt på butikksider?
LCP er som regel tregt i nettbutikker fordi hovedbildet er for tungt, oppdages sent eller med vilje blir forsinket av lazy loading eller en animasjon.
- Lazy loading av LCP-bildet. web.dev sier at du aldri skal gjøre dette (web.dev (åpnes i en ny fane)). En analyse av WordPress-sider fant tregere LCP ved 75-persentilen på nettsteder som brukte innebygd lazy loading, og når bildene over bretten ikke ble lastet med lazy loading, forsvant forverringen (web.dev (åpnes i en ny fane)).
- Et bilde som oppdages sent. Et hero-bilde som er satt som CSS-
background-image, eller som settes inn av et skript for en bildekarusell, finnes ikke i HTML-en som nettleseren skanner først. Shopify fraråder CSS-bakgrunner for hero-innhold og inntoningseffekter på LCP-bildet (Shopify (åpnes i en ny fane)). - Lav prioritet. Bilder lastes med lav prioritet til layouten er ferdig, så Shopify anbefaler
fetchpriority="high"på LCP-bildet (Shopify (åpnes i en ny fane)). web.dev påpeker at attributtet blir mindre nyttig hvis du setter det på mer enn ett eller to bilder (web.dev (åpnes i en ny fane)). - Renderingsblokkerende CSS og skript. Store stilark og synkrone skript i
<head>forsinker gjengivelsen selv etter at bildet har kommet (web.dev (åpnes i en ny fane)). - Filstørrelse og fonter. Bruk moderne formater,
srcsetogsizesog et CDN. For nettfonter bør du bruke en annenfont-display-verdi ennautoellerblock.
<!-- Main product image: real src in the HTML, eager, high priority -->
<img src="/images/linen-shirt-1200.webp"
srcset="/images/linen-shirt-600.webp 600w, /images/linen-shirt-1200.webp 1200w"
sizes="(min-width: 990px) 50vw, 100vw"
width="1200" height="1500"
fetchpriority="high"
alt="Natural linen shirt, front view">
<!-- Gallery images below the first screen: lazy -->
<img src="/images/linen-shirt-back-600.webp" loading="lazy"
width="600" height="750" alt="Natural linen shirt, back view">
Hva gjør INP tregt på butikksider?
Treg INP i nettbutikker betyr som regel for mye JavaScript på hovedtråden, mye av det fra apper, sporingstagger og temafunksjoner, slik at trykkene må vente.
Hvis en kunde trykker på «Legg i handlekurven» mens skript for anmeldelser, chat og analyse fortsatt kjører, må trykket vente. En variantvelger som gjengir hele produktskjemaet på nytt, øker behandlingstiden. Enorme megamenyer og kolleksjonsrutenett med mange fargeprøver øker presentasjonsforsinkelsen.
web.dev anbefaler å dele opp lange oppgaver og gi fra seg hovedtråden (yielding), oppdatere skjermen først og utsette resten, og holde DOM-en mindre (web.dev (åpnes i en ny fane)). Shopify legger til tiltak som er særlig aktuelle for nettbutikker: gå gjennom hver app, hver piksel og hvert temaskript, utsett det som ikke er kritisk, last inn funksjoner først ved interaksjon, og slå av anti-flimmer-snutter for A/B-testing når ingen test kjører (Shopify (åpnes i en ny fane)).
Hva forårsaker layoutforskyvninger på produkt- og kolleksjonssider?
Layoutforskyvninger i nettbutikker kommer for det meste fra innhold som dukker opp eller endrer størrelse etter første gjengivelse: bilder uten dimensjoner, kunngjøringslinjer og bannere for informasjonskapsler, anmeldelseswidgeter, appblokker og fontbytter.
web.dev lister opp de vanligste årsakene: medier med ukjente dimensjoner, innhold som legges til over eksisterende innhold, tredjepartswidgeter som endrer sin egen størrelse, og nettfonter som har en annen størrelse enn reservefonten (web.dev (åpnes i en ny fane)). I nettbutikker betyr det et banner om gratis frakt som settes inn øverst, stjernevurderinger som lastes etter tittelen, informasjon om delbetaling under prisen og karuseller med anbefalinger. Shopify påpeker at innhold i popup-vinduer også kan føre til forskyvninger (Shopify (åpnes i en ny fane)).
Forskyvninger innen 500 ms etter at brukeren har gjort noe, teller ikke, men forskyvninger under rulling gjør det, og labverktøy fanger dem ofte ikke opp (web.dev (åpnes i en ny fane)). Gi bildene width og height eller et CSS-aspect-ratio, reserver plass til widgeter, vis bannere oppå innholdet, reduser forskyvninger ved fontbytte med size-adjust, og animer med transform i stedet for top eller left.
/* Reserve space for a reviews summary that loads after the page */
.product-reviews-summary { min-height: 24px; }
/* Keep product cards from jumping while images load */
.product-card img { width: 100%; height: auto; aspect-ratio: 4 / 5; }
Hvordan forbedrer du Core Web Vitals i Shopify?
I Shopify kommer det meste av gevinsten fra å laste det første bildet umiddelbart med høy prioritet, rydde i appskriptene og sjekke resultatet i rapportene for nettytelse i administrasjonspanelet.
Sjekk dataene i administrasjonspanelet
En oppsummering vises på siden Nettbutikk > Temaer (Online Store > Themes), og fullstendige rapporter om LCP, INP og CLS finner du under Analyse > Rapporter (Analytics > Reports). Dataene kan være forsinket med opptil 36 timer, og privat modus må være slått av (Shopify Help Center (åpnes i en ny fane)).
Styr bildeinnlastingen i Liquid
image_tag-filteret laster bilder i seksjoner lenger ned på siden med lazy loading, med mindre du angir preload (referanse for image_tag (åpnes i en ny fane)): umiddelbart for seksjon 1 til 3, lazy loading fra seksjon 4. Fordi section.index er nil i temaredigeringsprogrammet, bør du teste med > 3 i stedet for <= 3:
{%- if section.index == 1 -%}
{{ section.settings.image | image_url: width: 1600 | image_tag: loading: 'eager', fetchpriority: 'high', widths: '600, 900, 1200, 1600', sizes: '100vw' }}
{%- elsif section.index > 3 -%}
{{ section.settings.image | image_url: width: 1600 | image_tag: loading: 'lazy', sizes: '100vw' }}
{%- else -%}
{{ section.settings.image | image_url: width: 1600 | image_tag: sizes: '100vw' }}
{%- endif -%}
I produktrutenett foreslår Shopify å laste bare de første kortene umiddelbart (for eksempel forloop.index <= 4) (Shopify (åpnes i en ny fane)). Bruk preload: true med måte; Shopify anbefaler å forhåndslaste bare én eller to ressurser som oppdages sent.
Fjern det appene etterlater seg
Slå av appinnbygginger du ikke bruker, under Nettbutikk > Rediger tema > Appinnbygginger (Online Store > Edit theme > App embeds) (Shopify Help Center (åpnes i en ny fane)). Når du avinstallerer en app, fjernes appblokkene, men apper som har redigert temafilene direkte, kan etterlate seg «spøkelseskode» (ghost code) som ifølge Shopify kan gi problemer med kvalitet og ytelse (Shopify (åpnes i en ny fane)). Shopify sier også at skripttagger (script tags) slutter å kjøre 1. mars 2027. For fonter anbefaler Shopify sitt eget CDN eller systemfonter fremfor eksterne fonttjenester (Shopify (åpnes i en ny fane)).
Hvordan forbedrer du Core Web Vitals i WooCommerce?
I WooCommerce må du sørge for at utvidelser ikke overstyrer WordPress’ prioritering av bilder, mellomlagre alt unntatt handlekurv og kasse, og fjerne skript som lastes overalt uten at det trengs.
- Behold kjernens bildehåndtering. Siden WordPress 6.3 (lansert 8. august 2023) legger kjernen til
fetchpriority="high"på det sannsynlige LCP-bildet (minst 50 000 kvadratpiksler som standard) og hopper over lazy loading for de tre første innholdsbildene (Make WordPress Core (åpnes i en ny fane)). Hvis en optimaliseringsutvidelse legger til sin egen lazy loading, må du sjekke at den unntar hero-bildet og hovedbildet av produktet. - Mellomlagre sider, ikke handlekurver. WooCommerce-veiledningen anbefaler sidemellomlagring på serveren eller via en utvidelse, og et CDN, men at sidene for handlekurv og kasse ikke mellomlagres (WooCommerce developer docs (åpnes i en ny fane)).
- Sjekk cart fragments. Siden WooCommerce 7.8 lastes skriptet for handlekurvfragmenter (cart fragments) bare der en handlekurvwidget (Cart widget) finnes, men noen temaer har den widgeten hardkodet. Mini-Cart-blokken bruker ikke cart fragments (WooCommerce developer blog (åpnes i en ny fane)).
- Finn tunge utvidelser. WooCommerce foreslår Query Monitor for å finne trege utvidelser, og å utsette JavaScript som ikke er kritisk.
Hvis layouten din viser mer enn tre bilder over bretten, kan du heve terskelen i WordPress:
// functions.php: skip lazy loading for the first 4 content images (default is 3)
add_filter( 'wp_omit_loading_attr_threshold', function () {
return 4;
} );
Hvor lang tid tar det før rettelsene vises?
Labtester viser effekten av en rettelse med en gang, men feltdata trenger opptil omtrent fire uker for å gjenspeile den fullt ut, fordi CrUX beregner gjennomsnittet av de siste 28 dagene.
Kjør labtesten flere ganger før og etter en endring, fordi enkeltkjøringer varierer, og følg deretter feltdataene i PageSpeed Insights, Core Web Vitals-rapporten i Search Console eller rapportene i Shopify. En gratis skanning gir en første vurdering på omtrent ett minutt. Vår Ytelsesrapport kjører en strupet labtest på mobil (slow 4G, 4x CPU) og legger til feltdata fra Chrome UX Report, inkludert INP når Google har nok data om butikken din.
Ofte stilte spørsmål
Påvirker Core Web Vitals rangeringen i Google?
Google sier at Core Web Vitals brukes av rangeringssystemene, men at gode resultater ikke garanterer topplasseringer, og at Google fortsatt viser det mest relevante innholdet selv når sideopplevelsen er dårlig (Google Search Central (åpnes i en ny fane)).
Hvorfor viser PageSpeed Insights ingen feltdata for butikken min?
CrUX tar bare med sider og opprinnelser som er offentlig synlige og har nok kvalifiserte besøkende i Chrome. En butikk med lite trafikk har kanskje bare data på opprinnelsesnivå, eller ingen, så støtt deg på labtester og plattformens egne rapporter.
Må jeg ha en Lighthouse-poengsum på 90 eller mer for å bestå?
Nei. Ytelsespoengsummen i Lighthouse er et labresultat, mens vurderingen av Core Web Vitals bruker feltdata ved 75-persentilen, så en side kan bestå med en middels Lighthouse-poengsum og stryke med en høy.
Bør jeg bruke lazy loading på alle produktbilder?
Nei. Bruk lazy loading på bilder under den første skjermen, men last inn hero-bildet og hovedbildet av produktet umiddelbart, med fetchpriority="high" på ett av dem.
Hvorfor er resultatene på mobil dårligere enn på datamaskin?
Google måler mobil og datamaskin hver for seg, og telefoner har tregere prosessorer og nettverk. Lighthouses mobiltest simulerer dette med en Slow 4G-profil og en 4x nedbremsing av prosessoren.
Kilder
- Web Vitals (åpnes i en ny fane), web.dev (Google), oppdatert 31. oktober 2024
- Largest Contentful Paint (LCP) (åpnes i en ny fane), web.dev, oppdatert 4. september 2025
- Interaction to Next Paint (INP) (åpnes i en ny fane), web.dev, oppdatert 2. september 2025
- Cumulative Layout Shift (CLS) (åpnes i en ny fane), web.dev, oppdatert 12. april 2023
- Advancing Interaction to Next Paint (åpnes i en ny fane), web.dev, 10. mai 2023
- Interaction to Next Paint becomes a Core Web Vital on March 12 (åpnes i en ny fane), web.dev, 12. mars 2024
- Why lab and field data can be different (åpnes i en ny fane), web.dev, oppdatert 18. juli 2022
- Optimize Largest Contentful Paint (åpnes i en ny fane), web.dev, oppdatert 31. mars 2025
- Optimize Interaction to Next Paint (åpnes i en ny fane), web.dev, oppdatert 2. september 2025
- Optimize Cumulative Layout Shift (åpnes i en ny fane), web.dev, oppdatert 7. februar 2025
- Total Blocking Time (TBT) (åpnes i en ny fane), web.dev, lest 22. oktober 2026
- The performance effects of too much lazy loading (åpnes i en ny fane), web.dev, oppdatert 31. mars 2022
- CrUX methodology (åpnes i en ny fane), Chrome for Developers, oppdatert 20. juni 2024
- CrUX API (åpnes i en ny fane), Chrome for Developers, oppdatert 13. oktober 2026
- About PageSpeed Insights (åpnes i en ny fane), Google for Developers, oppdatert 21. oktober 2024
- Lighthouse throttling documentation (åpnes i en ny fane), GoogleChrome på GitHub, lest 22. oktober 2026
- Understanding page experience in Google Search results (åpnes i en ny fane), Google Search Central, oppdatert 22. september 2026
- Performance best practices for Shopify themes (åpnes i en ny fane), Shopify, lest 22. oktober 2026
- Never lazy load the LCP image (åpnes i en ny fane), Shopify, lest 22. oktober 2026
- Set fetchpriority high on the LCP image (åpnes i en ny fane), Shopify, lest 22. oktober 2026
- Liquid filters: image_tag (åpnes i en ny fane), Shopify, lest 22. oktober 2026
- Web performance dashboard (åpnes i en ny fane), Shopify Help Center, lest 22. oktober 2026
- Web performance (åpnes i en ny fane), Shopify Help Center, lest 22. oktober 2026
- Apps in your theme (åpnes i en ny fane), Shopify Help Center, lest 22. oktober 2026
- Migrate to theme app extensions (åpnes i en ny fane), Shopify, lest 22. oktober 2026
- Image performance enhancements in WordPress 6.3 (åpnes i en ny fane), Make WordPress Core, 13. juli 2023
- Version 6.3 (åpnes i en ny fane), dokumentasjon på WordPress.org, lansert 8. august 2023
- How to optimize performance for WooCommerce stores (åpnes i en ny fane), WooCommerce developer docs, lest 22. oktober 2026
- Best practices for the use of the cart fragments API (åpnes i en ny fane), WooCommerce developer blog, 16. juni 2023
Alle veiledninger
- Fått et ADA-kravbrev om nettstedet? Dette bør du sjekke førstHva et ADA-kravbrev om nettstedet ofte hevder, WCAGs rolle, hva du bør samle inn, hvorfor overlegg ikke retter koden og når du bør ringe advokat. Ikke juridisk råd.
- Sikkerhetssjekker du kan kjøre på nettstedet uten å hacke noePassive sikkerhetssjekker for nettbutikker: utløp av TLS-sertifikat, HSTS, CSP, nosniff, cookie-flagg, blandet innhold, gammel jQuery, security.txt og DMARC.
- Sjekkliste for produktsider: dette stopper kundene fra å kjøpeSjekkliste for produktsiden basert på Baymard og WebAIM: pris, frakt og retur, bilder, anmeldelser, kjøpsknapp på mobil, popup-vinduer, søk og tastaturbruk.