Hvis du har brugt tid i Google Search Console gennem de seneste år, har du sikkert set udtrykket "Core Web Vitals" stirre tilbage på dig — nogle gange med et betryggende grønt flueben, andre gange med en langt mindre betryggende rød advarsel. For mange hjemmesideejere stopper forholdet stort set der: en metric, der dukker op i en rapport, som man trækker på skuldrene af og glemmer indtil næste audit.
Det er en fejl, og en fejl der bliver dyrere med tiden. Core Web Vitals er ikke bare en boks, Google vil have dig til at krydse af. De er en genuint nyttig, standardiseret måde at måle, om en rigtig person, der besøger din hjemmeside, får en god eller en frustrerende oplevelse — og i 2026, hvor opmærksomhedsspændet er kortere, og konkurrenten kun er en fane væk, gør den oplevelse mere for din forretning, end de fleste går og tror.
Denne guide gennemgår, hvad hver Core Web Vital rent faktisk måler, hvorfor den typisk går galt, og — vigtigst af alt — hvad du reelt kan gøre ved det. Ingen pynt, ingen vage "optimér dine billeder"-råd uden konkrete detaljer bagved.
Hvorfor performance stadig betyder mere, end man skulle tro
Det er fristende at antage, at med hurtigere netværk, bedre enheder og mere kraftfulde browsere er performance blevet et løst problem. Det er det ikke. Hvis noget, er barren blevet højere, fordi brugerne er blevet trænet af de hurtigste apps og sites, de bruger dagligt, til at forvente den samme hastighed alle andre steder.
Nogle ting gælder uanset branche:
- Langsomme sites mister besøgende, før de overhovedet ser noget. Studier fra Googles egne Chrome UX-team har gentagne gange vist, at afvisningsraten stiger markant, når indlæsningstiden overstiger to til tre sekunder. Du får ikke en chance til for det første indtryk — den besøgende er bare væk.
- Performance er et rangeringssignal. Core Web Vitals er en del af Googles page experience-signaler, som indgår i søgerangeringen. Det er ikke den enkeltstående største håndtag, du kan trække i for SEO, men i konkurrenceprægede nicher er det ofte forskellen mellem side ét og side to.
- Konverteringsrater følger direkte med hastigheden. Særligt e-handel og lead-genererende sites ser en målbar omsætningseffekt ved at barbere selv få hundrede millisekunder af centrale sider. Det er ikke teoretisk — det viser sig igen og igen i A/B-tests.
- Mobil gør alt dette værre, hvis det ignoreres. En stor andel af trafikken er nu mobil, ofte på ustabile forbindelser. Et site, der føles fint på en udviklers fiberforbindelse og high-end laptop, kan føles direkte defekt på en mellemklassetelefon på ustabilt 4G.
Core Web Vitals giver dig et fælles sprog til at tale om alt dette — et sprog forankret i reelle brugerdata frem for en udviklers mavefornemmelse om, "om det her føles hurtigt."
Hvad Core Web Vitals rent faktisk måler
Pr. 2026 findes der tre officielle Core Web Vitals, som hver især måler en forskellig dimension af brugeroplevelsen:
- Largest Contentful Paint (LCP) — indlæsningsperformance. Hvor lang tid går der, før det største og mest betydningsfulde indholdselement på siden er synligt?
- Interaction to Next Paint (INP) — responsivitet. Hvor hurtigt reagerer siden, når en bruger rent faktisk interagerer med den (klik, tryk, indtastning)?
- Cumulative Layout Shift (CLS) — visuel stabilitet. Hopper indholdet uventet rundt, mens siden indlæses eller bruges?
Hver af disse har tærskelværdier, som Google definerer som "God", "Kan forbedres" og "Dårlig", og hver af dem måles ud fra feltdata — reelle besøg fra reelle brugere, indsamlet gennem Chrome User Experience Report (CrUX) — frem for en enkelt simuleret testkørsel. Den forskel betyder meget, og vi vender tilbage til den.
Lad os gennemgå hver metric ordentligt.
Largest Contentful Paint (LCP): Hvor hurtigt føles siden indlæst?
LCP måler renderingstiden for det største synlige element i viewporten — typisk et hero-billede, en stor overskrift eller et baggrundsbillede, afhængigt af siden. Det er ment som en tilnærmelse til det øjeblik, hvor en besøgende tænker "okay, siden er indlæst", selv hvis mindre elementer stadig trisser ind.
Tærskelværdier:
- God: 2,5 sekunder eller derunder
- Kan forbedres: 2,5–4,0 sekunder
- Dårlig: over 4,0 sekunder
Almindelige årsager til dårlig LCP:
- Langsomme serverresponstider. Hvis din time-to-first-byte (TTFB) allerede bruger et sekund eller mere, bliver alt nedstrøms forsinket, før det overhovedet starter. Det er ofte det allerførste, man bør tjekke, og det oftest oversete.
- Render-blokerende CSS og JavaScript. Hvis browseren skal downloade og parse et stort stylesheet eller scriptbundt, før den kan male noget som helst, er det død tid, hvor brugeren stirrer på en tom skærm.
- Uoptimerede hero-billeder. En 4MB PNG, der skaleres ned i browseren til at passe i en 600px bred hero-sektion, er en af de mest almindelige LCP-dræbere på nettet, punktum.
- Client-side rendering af indhold over folden. Hvis dit største element først vises, efter at et JavaScript-bundt er downloadet, eksekveret, har hentet data og renderet — er det mange sekventielle trin stablet oven på hinanden, før noget som helst nyttigt vises.
- Sent opdagede ressourcer. Hvis LCP-billedet kun refereres inde i en JavaScript-renderet komponent, eller indlæses via en CSS-baggrundsegenskab, som browseren ikke kan preloade, begynder browseren ikke at hente det, før langt senere end den burde.
Praktiske løsninger, nogenlunde i prioriteret rækkefølge:
- Få din serverresponstid ned. Brug et CDN, aktivér ordentlige caching-headers, og hvis du bruger et framework som Next.js, så læn dig op ad static generation eller edge caching, hvor indholdet tillader det, frem for at rendere alt ved hver eneste forespørgsel.
- Preload LCP-ressourcen. Hvis du ved, hvilket billede der bliver dit største indholdselement (f.eks. et hero-banner), så tilføj et
<link rel="preload">for det i dokumentets head, så browseren begynder at hente det med det samme, i stedet for først at opdage det midtvejs i parsingen. - Servér moderne, korrekt størrelsestilpassede billedformater. WebP eller AVIF i stedet for PNG/JPEG, hvor det understøttes, med
srcset, så mobile enheder ikke downloader et desktop-stort billede. De fleste frameworks (f.eks. Next.js'<Image>-komponent) håndterer dette automatisk, hvis du bruger dem korrekt. - Fjern render-blokerende ressourcer over folden. Inline kritisk CSS til første maling, udskyd ikke-kritisk CSS og JavaScript, og gennemgå eventuelle tredjepartsscripts (chatwidgets, analytics, annonce-tags), der indlæses synkront og blokerer main thread.
- Undgå client-side datahentning for kritisk indhold. Hvis det største synlige element afhænger af et API-kald, der først affyres, efter JS-bundtet er indlæst, bør du overveje at hente de data server-side eller ved build-tid i stedet.
Interaction to Next Paint (INP): Reagerer siden, når nogen rent faktisk bruger den?
INP erstattede First Input Delay (FID) som officiel Core Web Vital i 2024, og det er en markant bedre metric, fordi den kigger på hver eneste interaktion gennem hele sidens levetid — ikke kun den allerførste — og rapporterer noget tæt på den værst tænkelige responsivitet, en bruger oplevede.
INP måler tiden fra, en bruger interagerer med siden (klikker en knap, trykker på en menu, skriver i et felt), til browseren næste gang kan male det visuelle resultat af den interaktion. Hvis en bruger trykker på en knap, og brugerfladen fryser blot et øjeblik, før den reagerer, bliver det fanget.
Tærskelværdier:
- God: 200 millisekunder eller derunder
- Kan forbedres: 200–500 millisekunder
- Dårlig: over 500 millisekunder
Almindelige årsager til dårlig INP:
- Lange JavaScript-opgaver, der blokerer main thread. Hvis et tungt script kører, når brugeren klikker på noget, kan browseren ikke reagere, før den opgave er færdig. Det er langt den mest almindelige årsag.
- Store komponent-genrenderinger i frameworks som React. En enkelt state-opdatering, der udløser en kaskade af unødvendige genrenderinger gennem et stort komponenttræ, kan nemt sprænge 200ms-budgettet, især på mellemklasse mobilhardware.
- For mange tredjepartsscripts. Chatwidgets, annoncenetværk, heatmap-værktøjer og A/B-testscripts er hyppige syndere — de er ofte dårligt optimerede og kører på main thread på uheldige tidspunkter.
- Unødvendigt komplekse event handlers. Handlers, der udfører tungt arbejde synkront (omfattende DOM-manipulation, store array-operationer, layout-genberegninger) inde i en klik- eller inputhandler, går direkte ud over denne metric.
Praktiske løsninger:
- Bryd lange opgaver op. Enhver JavaScript-opgave, der kører længere end 50ms, er kandidat til opdeling. Teknikker som
scheduler.yield(), opdeling af arbejde medsetTimeout, eller brug afrequestIdleCallbacktil ikke-hastende arbejde kan holde main thread fri til at reagere på input. - Gennemgå og beskær tredjepartsscripts. Indlæs kun det, du reelt har brug for, udskyd det, du kan, og overvej seriøst at fjerne alt, der ikke gør gavn nok. Hvert tredjepartsscript er main thread-tid, du ikke fuldt ud kontrollerer.
- Memoisér og afgræns state-opdateringer omhyggeligt i React/Vue-apps. Undgå at udløse genrendering af hele træet for små, lokale UI-ændringer. Værktøjer som React DevTools' Profiler gør det nemt at opdage komponenter, der genrenderer langt oftere, end de behøver.
- Debounce eller throttle tunge handlers, især til ting som søgning-mens-du-skriver, scroll-listeners og resize-handlers.
- Flyt reelt tung beregning væk fra main thread med Web Workers, hvor det giver mening — det er underudnyttet, men kan give et stort løft på datatunge, interaktive sider.
Cumulative Layout Shift (CLS): Hopper noget uventet rundt?
CLS måler visuel stabilitet — konkret, hvor meget synligt indhold flytter sig uden, at brugeren har gjort noget for at forårsage det. Du har selv oplevet det: du er ved at trykke på en knap, og lige før din finger lander, indlæses en annonce ovenover og skubber hele siden ned, så du ender med at trykke på noget helt andet. Det er præcis det, CLS forsøger at fange og straffe.
Tærskelværdier:
- God: 0,1 eller derunder
- Kan forbedres: 0,1–0,25
- Dårlig: over 0,25
Almindelige årsager til dårlig CLS:
- Billeder og embeds uden eksplicitte mål. Hvis browseren ikke kender et billedes bredde og højde på forhånd, kan den ikke reservere plads til det, så layoutet flytter sig, når billedet endelig er indlæst.
- Webfonte, der giver et "flash af ustylet tekst" eller reflow. Hvis en tilpasset font indlæses, efter en fallback-font allerede er blevet vist, og de to fonte har forskellige mål, kan teksten reflowe mærkbart.
- Dynamisk indsat indhold — bannere, cookie-beskeder, kampagnebjælker — der indsættes over eksisterende indhold efter den første rendering og skubber alt derunder ned.
- Annoncer og embeds, der ændrer størrelse efter indlæsning, særligt fra tredjepartsnetværk, der ikke reserverer plads på forhånd.
Praktiske løsninger:
- Angiv altid bredde og højde (eller
aspect-ratio) på billede- og videoelementer. Det lader browseren reservere den korrekte plads, før ressourcen overhovedet er downloadet, så der ikke sker et hop, når den ankommer. - Reservér plads til dynamisk indhold. Hvis du ved, at et kampagnebanner eller en annonceplads er på vej, så giv det en fast minimumshøjde i CSS fra starten, i stedet for at lade det poppe ind og skubbe rundt på tingene.
- Brug
font-display: optionaleller nøje matchede fallback-fonte, og overvej at preloade kritiske webfonte, så skiftet sker tidligere og mindre grelt. - Undgå at indsætte indhold over eksisterende indhold, medmindre det sker som direkte respons på en brugerinteraktion (i så fald er det forventet og straffes ikke på samme måde).
- Test på rigtige, langsommere enheder, ikke kun din udviklingsmaskine — layout shift-problemer er ofte langt mere synlige på mobil, hvor netværksvariation gør sent indlæste ressourcer mere almindelige.
Sådan måler du det i praksis
Det er her, mange velmenende teams går galt: de kører en enkelt Lighthouse-audit, ser en god score og antager, at de er færdige. Problemet er, at Lighthouse og PageSpeed Insights' "labdata" kun fortæller dig, hvordan én simuleret sideindlæsning klarede sig under ét specifikt sæt netværks- og enhedsforhold. Det er nyttigt til fejlfinding, men det er ikke det samme, som Google reelt bruger til at vurdere dit site i forbindelse med søgning.
Feltdata vs. labdata — kend forskellen:
- Labdata (Lighthouse, PageSpeed Insights' labsektion, WebPageTest) er en kontrolleret, enkeltstående simulation. God til at diagnosticere, hvorfor noget er langsomt, fordi du får en detaljeret waterfall og konkrete anbefalinger. Ikke repræsentativ for din reelle brugerbase.
- Feltdata (Chrome UX Report / CrUX, "feltdata"-sektionen i PageSpeed Insights, Search Consoles Core Web Vitals-rapport) er aggregeret fra reelle Chrome-brugere, der har besøgt dit site over de seneste 28 dage. Det er det, Google reelt bruger som rangeringssignal, og det afspejler hele spektret af enheder og forbindelser hos dine reelle besøgende.
Værktøjer, det er værd at have i rotation:
- Google Search Console → Core Web Vitals-rapport. Din bedste gratis kilde til "hvilke reelle sider, i reel skala, faktisk har problemer." Grupperet efter lignende URL-mønstre, hvilket er nyttigt til problemer på template-niveau.
- PageSpeed Insights. Kombinerer både lab- og feltdata for en specifik URL, med anbefalinger knyttet til diagnosen.
- Chrome DevTools' Performance-panel og Lighthouse-fane. Til dybere fejlfinding, når du allerede ved, at noget er galt, og skal finde den præcise årsag.
- WebPageTest. Mere kontrol end Lighthouse — test fra forskellige lokationer, forbindelseshastigheder og enhedsprofiler, og få detaljerede filmstrips af indlæsningsforløbet.
- Real User Monitoring (RUM). For alt ud over et lille brochure-site bør du overveje at tilføje RUM (mange analytics- og performance-værktøjer tilbyder dette), så du løbende sporer Core Web Vitals ud fra din reelle trafik, i stedet for kun at stikprøvetjekke lejlighedsvis.
Fejl, teams ofte begår
Nogle mønstre går igen og igen, når teams jagter Core Web Vitals-scorer:
- At optimere for værktøjet i stedet for brugeren. At jagte en score på 100 i Lighthouse for scorens egen skyld kan føre til mærkelige kompromiser (for aggressiv lazy-loading, der ødelægger funktionalitet, fjernelse af reelt nyttige tredjepartsværktøjer), som får scoren til at se flot ud, mens den reelle oplevelse næppe ændrer sig.
- At fikse forsiden og ignorere alt andet. Core Web Vitals måles pr. side (og grupperes efter URL-mønster i Search Console). En smukt optimeret forside oven på en oppustet produkt-template eller blog-tema rykker ikke nær så meget, som folk forventer.
- At behandle det som et engangsprojekt. Performance forringes over tid. Et nyt marketingscript tilføjes, et nyt billede uploades i fuld opløsning, en ny komponent skydes ud uden at teste dens renderingsomkostning — og seks måneder senere er man tilbage, hvor man startede. Det skal være et løbende tjek, ikke en engangssprint.
- At ignorere mobilspecifik test. Det er ret almindeligt at se et site klare sig fint på desktop og fejle groft på mobil, simpelthen fordi testen aldrig er foretaget på realistisk mobilhardware og netværksforhold.
- Ikke at inddrage dem, der administrerer indhold. Hvis dit CMS lader redaktører uploade vilkårlige billeder i fuld opløsning eller indlejre vilkårlige tredjepartswidgets, bliver dine tekniske rettelser løbende undermineret af velmenende indholdsopdateringer, medmindre der er sat rammer op (f.eks. automatisk billedoptimering ved upload).
En praktisk tjekliste til udrulning
Hvis du starter fra bunden, her er en fornuftig rækkefølge:
- Basér alting først. Hent din aktuelle Core Web Vitals-rapport fra Search Console, før du rører noget, så du reelt kan måle, om dine ændringer virkede.
- Fiks serverresponstid og caching. Det er fundamentet — intet andet betyder meget, hvis din TTFB allerede er langsom.
- Gennemgå og optimér billeder på tværs af hele siten, ikke kun på én side — korrekte formater, korrekt størrelse, eksplicitte mål.
- Beskær og udskyd tredjepartsscripts. Vær ubarmhjertig her; det er som regel den løsning med størst effekt for mindst indsats.
- Adressér kilder til layout shift, især alt over folden eller alt, der indlæses asynkront.
- Profilér og fiks dine værste interaktionsresponsivitets-problemer, med fokus først på dine mest trafikerede interaktive sider (søgning, filtre, formularer, checkout-flows).
- Opsæt løbende overvågning, så tilbagefald opdages inden for uger, ikke opdages seks måneder senere i en Search Console-rapport.
- Genbasér og gentag. Performance-arbejde er ikke en enkeltstående indsats — det er en vedligeholdelsesvane.
Afrunding
Core Web Vitals kan føles som endnu en forkortelsestung tjekliste dikteret af Google, men under jargonen måler de noget, der reelt er værd at bekymre sig om: om de mennesker, der besøger dit site, får en god eller en frustrerende oplevelse. Får du LCP rigtigt, føles dine sider hurtige at indlæse. Får du INP rigtigt, føles dit site responsivt frem for sløvt. Får du CLS rigtigt, hopper intet rundt og forårsager fejltryk eller frustration.
Ingen af de enkelte løsninger her er eksotiske — korrekt billedhåndtering, beskårne tredjepartsscripts, reserveret layoutplads og en main thread, der ikke konstant er kvalt af lange JavaScript-opgaver. Det svære er som regel prioritering og opfølgning, ikke teknisk vanskelighed. Start med dine mest trafikerede sidetemplates, mål ærligt med feltdata frem for en enkelt labtest, og behandl det som en løbende disciplin frem for en engangsrettelse.