NL
Taal · dezelfde pagina NLNederlands/tools-en-plugins/core-web-vitals-meten/ ENEnglish (UK)/en/tools-and-plugins/measuring-core-web-vitals/ ESEspañolnog niet vertaald We onthouden je keuze niet en sturen je nooit automatisch door.
Over deze keuze

We bewaren alleen je weergavekeuze met een weergavecookie, maximaal 180 dagen op dit apparaat. Geen CRM- of advertentiedata. Je trackingtoestemming verandert niet. Als cookies geblokkeerd zijn, blijft je keuze mogelijk niet bewaard.

SRV · plugin · core web vitals reg. T.000 · wordpress · gplv2 of later

Core Web Vitals meten bij je echte bezoekers

Er zijn genoeg plugins die beloven je Core Web Vitals te verbeteren. Deze meet ze, bij de mensen die je site werkelijk bezoeken, en laat zien wat die kregen. Elk getal op het scherm is het 75e percentiel over de gekozen periode, apart voor mobiel en desktop, want zo definieert Google de drempels. Er wordt niets geschat, er wordt niets in een laboratorium nagebootst, en er hangt geen advies aan een getal dat de meting niet kan dragen.

Download de plugin ↓ Plan een gesprek theseo-webvitals-1.0.0.zip · 51 KB · versie 1.0.0 · GPLv2 of later · geen account, geen registratie, geen sleutel
Gianluca, die de tools en plugins van deze site bouwt
beeld · wie het instrument bouwde, legt het ook uit
FIG.01: Wat het 75e percentiel isblad 1/3

Niet het gemiddelde, maar de bezoeker die het op drie na slechtst had

Google beoordeelt Core Web Vitals op het 75e percentiel en niet op het gemiddelde. Dat is geen detail. Een gemiddelde verstopt de staart, en juist de staart is waar mensen afhaken. Van elke honderd metingen sorteer je ze op volgorde, je gaat naar de vijfenzeventigste, en dat getal is je score. Drie op de vier bezoekers hadden het beter, een op de vier slechter.

LCP, mobiel, 30 dagenvoorbeeld · gesorteerde metingen
snelste meting75e percentieltraagste
Groen tot 2,5 seconden, oranje tot 4 seconden, rood daarboven. Het cijfer dat op het scherm komt is de vijfenzeventigste staaf, niet de gemiddelde hoogte van alle staven. Bij INP liggen de grenzen op 200 en 500 milliseconden, bij CLS op 0,1 en 0,25, en bij TTFB op 800 en 1800 milliseconden.
TTFB is geen Core Web Vital, maar hij ligt onder LCP. Staat je TTFB op 1,4 seconden, dan is elke LCP-verbetering die je aan je afbeeldingen doet zinloos totdat je server sneller antwoordt. Daarom staat hij ernaast en niet ertussen.
DOC.01

Waarom je eigen cijfers niet gelijk zijn aan die van PageSpeed Insights

Dit is de vraag die na een dag meten altijd komt, en het antwoord is niet dat een van de twee het fout doet.

De laboratoriumscore in PageSpeed Insights is een nagebootste laadbeurt op een nagebootst apparaat, met een nagebootste verbinding

Handig om mee te vergelijken, maar het is niet wat jouw bezoekers echt krijgen.

De veldgegevens in PageSpeed Insights komen uit het Chrome User Experience Report

Dat rapport dekt Chrome-gebruikers die daarvoor toestemming hebben gegeven, en het heeft genoeg verkeer nodig voordat het uberhaupt iets publiceert. Op een rustige site blijft het leeg, en dan sta je met lege handen terwijl je site wel bezoekers heeft.

Deze plugin meet elke browser die de onderliggende functie ondersteunt, ook op die rustige site

De twee zullen dus verschillen, en dat staat op het scherm in plaats van in een voetnoot.

Wat Google met die cijfers doet, en waarom een trage sjabloonpagina in je rapport een hele groep rood kleurt terwijl de beoordeling per pagina gaat, staat uitgelegd in Core Web Vitals: Google beoordeelt je website per pagina. Die pagina legt de regel uit, deze plugin geeft je de meting.

DOC.02

Wat er wordt gemeten, en hoe

Vier meetwaarden, met de drempels die Google publiceert.

PUNT 01

LCP

, Largest Contentful Paint. Goed tot en met 2,5 seconden, slecht boven 4 seconden.
PUNT 02

INP

, Interaction to Next Paint. Goed tot en met 200 milliseconden, slecht boven 500.
PUNT 03

CLS

, Cumulative Layout Shift. Goed tot en met 0,1, slecht boven 0,25.
PUNT 04

TTFB

, Time To First Byte. Geen Core Web Vital, maar hij ligt onder LCP. Goed tot en met 800 milliseconden, slecht boven 1800.

Het meten is een eigen uitvoering van de definities die Google publiceert, uitgeschreven in leesbaar JavaScript in plaats van als bibliotheek binnengehaald. Dit was een bewuste keuze: je kunt het bestand openen en gewoon lezen wat er gebeurt. Het draait op de browserfuncties die deze getallen produceren, PerformanceObserver voor de grootste tekening, de verschuivingen en de gebeurtenistijden, en de navigation timing voor de eerste byte.

INP volgens dezelfde regel

Gebeurtenissen die bij een interactie horen worden op hun interactionId gegroepeerd en de langste gebeurtenis van een interactie is de vertraging van die interactie. Onder de vijftig interacties wordt de slechtste gerapporteerd; daarboven mag een interactie op elke vijftig slechter zijn dan het gerapporteerde getal. Dat is de regel die voorkomt dat een enkele uitschieter een hele pagina bepaalt.

FIG.02: De eerlijkheidsregelblad 2/3

Onder de twintig metingen komt er geen getal, maar een aantal

Een percentiel over vier paginaweergaven is geen percentiel. Het ziet er precies zo nauwkeurig uit als een percentiel over vierduizend, en het betekent niets. Zo sturen dit soort schermen mensen precies de verkeerde kant op, en daarom weigert deze plugin het getal in dat geval te drukken.

per paginadrempel · instelbaar, standaard 20
3te weinig metingen (3)Er staat geen getal. Er staat hoeveel metingen er zijn, zodat je weet hoe ver je nog van een cijfer af bent.
202,1 s over 20 metingenVanaf de drempel komt het cijfer, altijd met het aantal metingen erachter waar het op rust.
0Leeg, en dat is geen nulEen browser die een meting niet kan doen stuurt er niets voor, en de plugin bewaart er niets voor. Er wordt nooit een nul weggeschreven in plaats van een meting die niet plaatsvond, want een nul leest als een perfecte score die nooit is genomen.
Het gevolg is dat het aantal metingen per meetwaarde verschilt, en dat is juist in plaats van een fout. LCP, CLS en INP hangen elk aan een browserfunctie die niet elke browser heeft, terwijl TTFB uit navigation timing komt en bijna overal beschikbaar is. Elk getal op het scherm draagt het aantal echte metingen erachter.
DOC.04

Zo installeer je hem, in vier stappen

Er is geen account nodig, geen sleutel en geen registratie. Een gewone WordPress waar je beheerder bent is genoeg.

WordPress6.0 of hoger. In de plugin staat getest tot en met 7.0.
PHP7.4 of hoger. De code is gecontroleerd op 8.5.
RechtenJe hebt manage_options nodig, dus beheerder.
Taal van het schermNederlands op een Nederlandse site, anders Engels.
Ook te vinden op Volledige broncode op GitHub De zip hierboven en de broncode op GitHub zijn dezelfde versie. Deze plugin staat nog niet in de officiele WordPress-pluginmap. Hij is klaargezet voor inzending; zolang dat niet rond is, is de download hierboven de enige plek waar je hem krijgt. Stand gemeten op 19 augustus 2026.
STAP 1 · OPHALEN

Klik hierboven op de downloadknop. Je krijgt theseo-webvitals-1.0.0.zip, 51 KB. Pak hem niet uit: WordPress wil de zip zelf.

STAP 2 · UPLOADEN

In je WordPress: Plugins, Nieuwe plugin, Plugin uploaden. Kies het bestand en klik op Nu installeren.

STAP 3 · ACTIVEREN

Klik op Plugin activeren. Er verschijnt een nieuw onderdeel in je beheermenu. Je site verandert er op dat moment nog niet van.

STAP 4 · INSTELLEN

Open het instellingenscherm en loop de standen langs. Alles wat aan je openbare site raakt staat uit tot je het zelf aanzet.

DOC.03

Wat de plugin niet is

Hier scheidt deze plugin zich van de rest van de categorie, want de rest van de categorie belooft snelheid.

  • Het is geen cacheplugin en hij maakt niets sneller. Er wordt niets geoptimaliseerd, niets samengevoegd en niets uitgesteld.
  • Hij zegt niet wat een traag cijfer veroorzaakt. Dat is diagnose, en diagnose die uit vier getallen wordt geraden is gokken met een grafiek erbij.
  • Hij stelt nooit voor om iets te installeren. Er zit geen aanbeveling in die toevallig bij een betaald product uitkomt.
  • Zijn getallen zijn niet de getallen die Google voor de zoekresultaten gebruikt. Dat verschil staat hierboven uitgelegd en het staat ook op het scherm zelf.
Wat je er wel aan hebt: je weet welke pagina bij welk apparaat traag is, hoeveel metingen daaronder liggen, en of het al dan niet aan je server ligt

Meer heb je niet nodig om te beslissen waar je begint, en dat is precies waar de meeste snelheidsgesprekken op vastlopen.

FIG.03: Wat er per meting wordt vastgelegdblad 3/3

Vijf velden erin, en zes dingen er bewust uit

Twee regels van dezelfde persoon zijn niet als bij elkaar horend te herkennen. Dat is het ontwerp en geen ongeluk. Er is geen sessienummer, dus er valt niemand te volgen, en in ruil daarvoor is er ook niets te lekken.

een regel in de metingende hele tabel · vijf kolommen
wordt vastgelegd
  • Het adres van de pagina, zonder queryreeks en zonder anker
  • Welke meetwaarde het was
  • De waarde
  • De apparaatklasse, mobiel of desktop, afgeleid van de breedte van het venster
  • Het uur waarin het gebeurde
wordt niet vastgelegd
  • Het IP-adres, niet leesbaar en ook niet als afdruk
  • Een sessie, een bezoekersnummer of een gebruikersnummer
  • Een cookie of iets in localStorage of sessionStorage
  • De user agent
  • De queryreeks
  • Iets dat je server verlaat
De apparaatklasse komt uit de breedte van het venster en niet uit de user agent, want een user agent is tegelijk een bewering en een vingerafdruk en een breedte is geen van beide. Het moment wordt naar beneden afgerond op het hele uur, zodat een regel niet op een enkel verzoek in een serverlog te leggen is. Stuurt een browser Do Not Track of Global Privacy Control, dan stopt het script voordat het iets meet; dat staat standaard aan.
DOC.05

Privacy: wat er wel en niet wordt vastgelegd

Dit is de plugin uit deze reeks die het dichtst bij een bezoeker komt, want hij meet in de browser van die bezoeker. Daarom is dit ook de paragraaf die het meest te controleren valt.

PUNT 01

Geen IP-adres in de tabel

Het adres komt precies een keer voor, in de snelheidslimiet, waar het via een sleutelafdruk een waarde wordt die binnen een minuut verloopt. De metingentabel bereikt het nooit.
PUNT 02

Geen sessie en geen bezoekersnummer

Twee regels van dezelfde persoon zijn niet aan elkaar te knopen. Er is dus niets te volgen, en dat is de reden dat er ook niets te lekken valt.
PUNT 03

Geen cookie en geen browseropslag

Zoek in de uitgepakte zip op setcookie, localStorage en sessionStorage. De enige treffers staan in commentaar en in de readme.
PUNT 04

Geen user agent

Mobiel of desktop komt uit de breedte van het venster.
PUNT 05

Geen uitgaand verzoek

Het script praat met je eigen admin-ajax.php en met niets anders. Er is geen extern adres in de hele plugin.
PUNT 06

Do Not Track en Global Privacy Control staan aan

Stuurt de browser er een, dan stopt het script voordat het iets meet. Je kunt dat uitzetten en het staat standaard aan.
PUNT 07

Bewaartermijn

Een dagelijkse taak verwijdert metingen ouder dan de ingestelde termijn, standaard 90 dagen. Verwijderen laat de tabel, de instellingen en de taak vallen.

Waarom er geen nonce op het verzamelpunt zit staat in de veelgestelde vragen hieronder, met de reden en met de vier maatregelen die er in de plaats staan.

DOC.06

Veelgestelde vragen

Waarom zit er geen nonce op het verzamelpunt? Omdat een nonce de meting stilletjes kapot maakt zonder iets toe te voegen. Een nonce wordt in de pagina afgedrukt, dus op een site met een volledige paginacache krijgt elke bezoeker dezelfde nonce en werkt het binnen een dag niet meer. Op een openbaar adres dat anonieme bezoekers moeten kunnen bereiken is het ook geen beveiliging. Wat er wel staat: de hoofdschakelaar, een controle op dezelfde oorsprong, een snelheidslimiet per adres, en validatie die alleen de vier bekende meetwaarden accepteert, alleen getallen binnen hun gepubliceerde bereik, en alleen een adres van deze site. Elke beheerhandeling gebruikt wel een nonce plus een rechtencontrole.

Vertraagt het mijn site?

Het script is een enkel bestand van een paar kilobyte, in de voettekst geladen, zonder afhankelijkheid, en het blokkeert de weergave niet. Het verstuurt een verzoek per paginaweergave, op het moment dat de pagina wordt verlaten, via sendBeacon.

Werkt het met een cacheplugin?

Ja, en dat is een deel van het punt. Er staat niets in de opmaak dat verloopt, dus een pagina uit de cache blijft meten, en wat er dan gemeten wordt is wat je bezoekers werkelijk uit die cache krijgen.

Waarom heeft de ene meetwaarde minder metingen dan de andere?

Omdat niet elke browser elke meetfunctie heeft. Een browser die iets niet kan meten draagt er niets voor bij, en dat gat wordt niet met een nul opgevuld.

Waarom zegt een pagina te weinig metingen?

Omdat hij minder metingen heeft dan de drempel op het instellingenscherm, standaard twintig. Zet hem tijdelijk op 1 als je de eerste cijfers wilt zien, en zet hem daarna terug.

Werkt het op multisite?

Ja. Elke site in het netwerk krijgt een eigen tabel en eigen instellingen. Verwijderen ruimt elke site op.

DOC.07 · Volgende stap

Wat je er de eerste week aan hebt

De praktische route: aanzetten, een week laten lopen, en dan pas kijken. Eerder heb je te weinig metingen en dat zegt de plugin ook. Zie je daarna dat een pagina traag is maar weet je niet waarom bezoekers erop vastlopen, dan tekent de heatmap en scrollmap wat ze op diezelfde pagina doen. Draait je site op WordPress en wil je hem ook op toegankelijkheid nalopen, dan doet de toegankelijkheidsplugin dat op de punten die machinaal te toetsen zijn. Wil je erover doorpraten, plan dan een gesprek.

Sectie · Volgende stap24/7 bereikbaar · sales@theseo.nl
Plan een gesprek ↗
Geschreven door GianlucaOprichter. Bouwt sinds 2017 aan vindbaarheid voor Nederlandse bedrijven, in Google en in AI-antwoorden. Meer over het instituut.