Bijgewerkt op 19 oktober 2026

13 milliseconden. Dat is de tijd die het menselijk brein nodig heeft om een ​​afbeelding te herkennen, aldus een onderzoek van neurowetenschappers van MIT, gepubliceerd in 2014. Het script voor een client-side A/B-testtool heeft echter vaak enkele honderden milliseconden nodig om de pagina aan te passen. Gedurende deze tijd ziet uw bezoeker eerst de originele versie en vervolgens de variant. Ze hebben beide gezien. Uw test gaat er echter van uit dat ze er maar één hebben gezien.

Dit flikkereffect introduceert een systematische vertekening in uw metingen, bijna altijd in het nadeel van de variant, en kan ertoe leiden dat u een goed idee verwerpt of een slecht idee bevestigt. Deze handleiding legt uit waar het vandaan komt, hoeveel het daadwerkelijk kost, hoe u het op uw eigen site kunt meten en hoe u het kunt elimineren.

Wat is het flikkereffect bij A/B-testen?

Het flikkereffect (of FOOC, "Flash of Original Content") is de korte weergave van de originele pagina voordat de geteste variant wordt toegepast, omdat het testscript de pagina wijzigt nadat de browser deze al is gaan weergeven. De bezoeker ervaart een sprong: een titel die verandert, een knop die van kleur verandert, een blok dat verschuift.

Dit fenomeen is specifiek voor client-side testen. In dit model stuurt de server altijd dezelfde HTML-pagina; het is een JavaScript-bestand, geladen door de browser, dat bepaalt tot welke groep de bezoeker behoort en de DOM dienovereenkomstig herschrijft. Totdat dit script is gedownload, geïnterpreteerd en uitgevoerd, wordt het besturingselement weergegeven. Als u niet bekend bent met deze terminologie (DOM, variant, besturingselement, toewijzing), dan zal onze uitleg u hierbij helpen. woordenlijst van A/B-testen herhaalt elke term.

Waarom Flicker je resultaten vertekent

Het flikkeren treft slechts één van de twee groepen: de controlegroep vertoont geen artefacten, de variant vertoont een flits. Je vergelijkt dus niet langer "ontwerp A met ontwerp B", maar "ontwerp A met ontwerp B met een weergavefout". Dit is een vertekening, geen ruis: het heft niet op door de steekproefomvang te vergroten.

Twee mechanismen werken de variant tegen:

  1. Verlies van zelfvertrouwen. Een pagina die "verspringt" wijst op een slecht ontworpen website. Op een betaalpagina of een offerteaanvraagformulier is deze indruk op zich al voldoende om argwaan te wekken.
  2. Het vergelijkingseffect. De bezoeker heeft de oude prijs, titel of afbeelding gezien. Als de variant een doorgestreepte prijs of een sterkere belofte test, ziet de bezoeker beide versies, wat zijn of haar perceptie van het aanbod verandert.

Soms, omgekeerd, trekt het element dat "verschijnt" de aandacht en versterkt het de variant. In beide gevallen is het resultaat dat u leest in uw analysedashboard dit komt niet overeen met hoe de variant eruit zou zien als deze hardgecodeerd, zonder script, zou worden geïmplementeerd. Dit is een van de onderschatte bronnen van vals-positieve (en vals-negatieve) resultaten bij A/B-testen.

De 5 technische oorzaken van flikkering

Het flikkeren treedt op zodra de variant wordt toegepast na de eerste paginaweergave. Vijf factoren, die gecombineerd kunnen worden, verlengen deze vertraging.

1. De locatie van het script

Een script dat aan het einde van <body> deze functie wordt pas uitgevoerd nadat de rest van de HTML is geparseerd: de browser heeft dan al alles weergegeven. Het moet zo hoog mogelijk in de code staan. <head>, vóór stylesheets en andere scripts van derden.

2. Een tagmanager gebruiken

Google Tag Manager laadt zijn tags asynchroon. Het testscript wacht daarom tot de GTM-container zelf is geladen voordat het wordt geactiveerd. Analist Simo Ahava mat de discrepantie op dezelfde site, met het verkeer in tweeën gesplitst: de pagina bleef verborgen. Gemiddeld 964 ms wanneer de tag via GTM wordt verwerkt, vergeleken met 581 ms wanneer het codefragment direct in de pagina wordt ingevoegd.. Bijna 400 ms ging verloren, uitsluitend door de integratiemethode.

3. Asynchroon laden

Een asynchroon script blokkeert het scherm niet: dit is het voordeel ervan qua snelheid, en de reden waarom het flikkering veroorzaakt. We komen hier in de volgende sectie op terug.

4. Scriptgrootte en latentie

Een bestand met de configuratie voor alle accounttests, inclusief gepauzeerde tests, duurt langer om uit te voeren. Als het bestand wordt aangeboden vanaf een server die ver van de bezoeker verwijderd is, voegt elke retourvlucht tientallen milliseconden toe.

5. De manier waarop de variant is gecodeerd

Een aanpassing die wacht tot een element in de DOM bestaat voordat het wordt herschreven (bijvoorbeeld "vervang de knoptekst zodra deze is geladen") zal noodzakelijkerwijs worden toegepast nadat het element is weergegeven. WYSIWYG-editors genereren dit type code soms standaard. De documentatie voor Optimizely het systeem herkent het: de visuele wijzigingen wachten tot het element beschikbaar is, wat flitsen veroorzaakt wanneer er veel wijzigingen in de wachtrij staan.

Synchroon of asynchroon codefragment: de doorslaggevende factor

Een synchroon codefragment blokkeert de weergave totdat het is uitgevoerd: geen flikkering, maar een wit scherm als het script traag is. Een asynchroon codefragment laat de pagina laden: geen wit scherm, maar wel flikkering. Er is geen gratis derde optie.

CriteriaSynchroon fragmentAsynchroon codefragment
FlikkerenGeen van beide als het script reageert.Waarschijnlijk, evenredig met de latentie
Wit schermJa, tijdens het laden van het script.Nee
Als de scriptserver uitvaltDe pagina blijft geblokkeerd tot de netwerktime-out optreedt.De pagina wordt in de originele versie weergegeven.
Impact op het LCPDirect (rendering is in behandeling)Indirect (indien maskering is toegevoegd)
Betrouwbaarheid van het experimentHoogAfhankelijk van de maatregelen tegen flikkering.

Optimizely het wordt aanbevolen om het codefragment synchroon te laden. waarbij bepaalde variantwijzigingen asynchroon kunnen worden uitgevoerd. VWO (hernoemd) Wingify (in 2026) verbergt de inhoud van de pagina in afwachting van de bibliotheek; Kameleoon benadrukt een "blokkerende asynchrone" integratie.

De juiste keuze hangt af van één enkele vraag: is de latentie van je script onder controle? Als het bestand klein is en wordt aangeboden via een CDN dicht bij je bezoekers, voegt de synchrone modus een paar tientallen milliseconden toe en lost het probleem op. Anders resulteert elke netwerkvertraging in een blanco scherm. Dat is de kern van de zaak. ultrasnelle weergave van varianten Maak de blokkeermodus zo kort dat deze onmerkbaar wordt.

Het anti-flikkerprogramma: nuttig, maar er hangt een prijskaartje aan.

Een anti-flikkercodefragment verbergt de pagina (of een deel ervan) met behulp van een CSS-regel terwijl het testscript draait, en toont deze vervolgens weer. Het verwijdert de zichtbare Flash-elementen, maar verschuift de kosten: de pagina wordt later voor iedereen weergegeven.

Het principe is eenvoudig. Een regel code bovenaan de <head> toegepast opacity: 0 of visibility: hidden bij <body>. Wanneer de tool de variant toepast, verwijdert deze die regel. Als de tool niet reageert, wordt de pagina na een maximale time-out alsnog weergegeven. De standaardwaarden zijn ruim: het oude codefragment van Google Optimize wachtte maximaal 4 seconden, en de SmartCode van VWO / Wingify stelt de toleranties in op 2000 ms voor instellingen en 2500 ms voor de bibliotheek..

Deze cijfers zijn veelbetekenend. Gedurende deze hele tijd wordt er geen enkele pixel weergegeven. Een audit die DebugBear op de homepage van AdRoll publiceerde, toonde een Largest Contentful Paint (LCP) van 6,0 seconden met maskering ingeschakeld, vergeleken met 2,7 seconden toen maskering was uitgeschakeld. Google beschouwt een LCP van meer dan 2,5 seconden als "voor verbetering vatbaar" en van meer dan 4 seconden als "slecht": een slecht geconfigureerde anti-flikkerfunctie kan een pagina die er goed uitziet, veranderen in een negatief resultaat.

Drie regels voor gebruik zonder schade:

  • Verberg alleen het geteste gebied (het heldenblok, het formulier), niet de <body> het geheel wordt weergegeven. De rest van de pagina wordt normaal weergegeven en het LCP wordt alleen beïnvloed als het verborgen element zelf het LCP-element is.
  • Verkort de time-out. bij 1000-1500 ms in plaats van 2000-4000 ms. Bovendien wordt een bezoeker die een blanco pagina ziet, zwaarder benadeeld dan een bezoeker die een flash-effect ziet.
  • Schakel maskering alleen in op pagina's die een test hosten.. Een anti-flikkersysteem dat over de hele site is geladen, bestraft duizenden pagina's die niets testen.

Het meten van flikkering op uw website: de A/A-methode

Om te bepalen of het flikkeren uw tests beïnvloedt, voert u een A/A-test uit: twee groepen zien exact dezelfde pagina, maar één groep krijgt een onzichtbare aanpassing die door het testscript wordt toegepast. Elk significant verschil tussen de twee groepen meet de kosten van het injectiemechanisme zelf, onafhankelijk van marketingoverwegingen.

Een standaard A/A-bewerking is niet voldoende: geen enkele groep wordt aangepast, waardoor er geen flikkering optreedt. Dit is de methode die wij aanbevelen bij BlastOptimize voordat je een reeks tests uitvoert op een nieuwe site of een nieuw paginasjabloon.

Het 4-stappenprotocol

  1. Maak variant A aan. Het past een wijziging toe zonder visueel effect op het element dat u wilt testen (bijvoorbeeld het herschrijven van de titeltekst met dezelfde tekst, of het toevoegen van een attribuut). data- (bij de knop). Het technische traject is identiek aan dat van een echte variant.
  2. Instrumenteer de vertraging Noteer de tijd tussen de eerste weergave (First Contentful Paint) en het toepassen van de wijziging. Het onderstaande fragment is voldoende.
  3. Laat het een volledige cyclus doorlopen. (minimaal 2 weken om de effecten van weekdagen/weekenden te egaliseren) met uw gebruikelijke conversiedoel, zoals gedefinieerd in uw doel- en volgconfiguratie.
  4. Lees twee getallen : de mediane tijd en het 90e percentiel (trage bezoekers), vervolgens het conversieverschil tussen A en A'.
<script>
// À appeler dans le code de la variante A', juste après la modification
(function () {
  var fcp = performance.getEntriesByName('first-contentful-paint')[0];
  var applique = performance.now();
  var delai = fcp ? Math.round(applique - fcp.startTime) : null;
  // delai > 0 : la variante s'applique APRÈS le premier affichage = flicker visible
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({ event: 'flicker_delay', flicker_ms: delai });
})();
</script>

Hoe moet ik dit interpreteren?

  • Negatieve of nul vertraging De variant wordt toegepast vóór de eerste weergave. Flikkering is niet mogelijk.
  • Mediaanvertraging minder dan 100 ms : flikkering die zelden bewust waarneembaar is, maar wel voldoende om te zien (denk aan de 13 ms). Monitor het 90e percentiel.
  • Mediaanvertraging groter dan 300 ms Het flikkerende effect is zichtbaar voor de meeste bezoekers. Voer geen tests uit op deze pagina totdat de integratie is gecorrigeerd.
  • Aanzienlijk verschil in conversie tussen A en A' Het injectiemechanisme alleen al heeft een meetbaar effect. Al uw tests met dit sjabloon lijden onder deze vertekening.

Deze figuur geeft de minimale effectgrootte weer die op deze pagina kan worden geïnterpreteerd. Als A/A' −2% voor A' aangeeft, kan een variant die +1,5% wint in werkelijkheid +3,5% winnen, en een variant met −1% kan neutraal zijn.

9 concrete correcties, van de meest winstgevende tot de meest kostbare.

De meeste flikkeringen kunnen worden verholpen zonder andere tools te gebruiken: door het script te verplaatsen, lichter te maken en de varianten in CSS in plaats van JavaScript te coderen. Hieronder staan ​​de hefbomen, gerangschikt op basis van de verhouding tussen inspanning en resultaat.

  1. Plaats het fragment bovenaan de <head>, vóór CSS en andere scripts van derden. Direct resultaat, vijf minuten werk.
  2. Sluit het testscript af in Google Tag Manager. Integreer het permanent in de template. Het verschil van 400 ms dat Simo Ahava heeft gemeten, komt hierdoor.
  3. Voeg een toe preconnect naar het domein dat het script serveert (<link rel="preconnect" href="…">) om de verbinding te openen nog voordat de browser de tag tegenkomt.
  4. Programmeer de visuele aanpassingen met behulp van CSS. Een CSS-regel die is geïnjecteerd in de <head> deze functie wordt toegepast zodra het element wordt getekend, zonder te wachten tot het in de DOM bestaat. Wijzig een kleur, verberg een blok of herschik twee elementen met order het gebruik van flexbox vereist geen JavaScript. Dit wordt ook aanbevolen in de documentatie. Optimizely bij de varianten die knipperen.
  5. Ruim de code op die door de is gegenereerd.visuele editor Verwijder overbodige selectors, groepeer wijzigingen op hetzelfde element en vermijd het volledig herschrijven van HTML-blokken wanneer een tekstwijziging volstaat.
  6. Het archief met voltooide tests. Elke gepauzeerde test die in de configuratie blijft staan, verhoogt de bestandsgrootte voor alle bezoekers.
  7. Verberg alleen het geteste gebied., met een korte time-out (1000-1500 ms), in plaats van de hele pagina gedurende 4 seconden.
  8. Vermijd het testen van omleidingen op pagina's met veel inkomend verkeer. Doorverwijzen naar URL B na het laden van URL A resulteert in twee paginaladingen: dit is de meest kostbare vorm van flikkering.
  9. Laat het script bezorgen via een CDN dat zich dicht bij uw bezoekers bevindt., met een configuratie die beperkt is tot alleen de tests die actief zijn op de bezochte pagina. Dit is de factor waarover u de minste controle hebt, aangezien deze afhankelijk is van de tool: vraag uw leverancier of raadpleeg onze pagina over scriptdistributie BlastOptimize zo dicht mogelijk bij de bezoeker.

Wanneer over te schakelen naar server-side?

Server-side testen elimineert flikkering door het ontwerp: de server kiest de variant en stuurt direct de juiste HTML; er is geen script dat de pagina in de browser herschrijft. Het nadeel is algemeen bekend: elke test gaat via een ontwikkelaar, de visuele editor wordt onbruikbaar en de iteratiecyclus wordt langer. Server-side testen is gerechtvaardigd voor tests van structurele elementen (prijsalgoritme, afrekenproces, navigatie), voor pagina's waar zelfs de kleinste afwijking in LCP kostbaar is, of wanneer uw A/A-analyse een bias aan het licht brengt die de negen hierboven genoemde correcties niet oplossen. Voor titel-, visuele of knoptests blijft een goed geïntegreerde client-side aanpak sneller te implementeren. Deze architectuurkeuze verdient een eigen handleiding, die we wijden aan server-side testen.

Controlelijst tegen flikkering vóór elke lancering

Controleer deze tien punten voordat u een test in productie neemt. Slechts één "nee" op de eerste vier punten is voldoende om de lancering uit te stellen.

  • ☐ Het fragment is hardgecodeerd in de <head>, op de eerste plaats onder de scripts, met uitzondering van tagmanagers.
  • ☐ De laadmodus (synchroon/asynchroon) is bekend en gedocumenteerd voor deze pagina.
  • ☐ De variant is geverifieerd op een echte smartphone waarbij het netwerk in de ontwikkeltools was teruggebracht tot "langzame 4G".
  • ☐ De vertraging tussen de eerste weergave en de toepassing van de variant wordt gemeten (mediaan en 90e percentiel).
  • ☐ Visuele aanpassingen worden waar mogelijk met CSS gedaan.
  • ☐ Als maskering wordt gebruikt, is deze gericht op het geteste gebied en is de time-out ≤ 1500 ms.
  • ☐ De LCP van de pagina met en zonder testen werd vergeleken (doelverschil: minder dan 100 ms).
  • ☐ Voltooide tests zijn gearchiveerd in het account.
  • ☐ Er wordt geen omleidingstest uitgevoerd op een belangrijke landingspagina zonder een goede reden.
  • ☐ Er is de afgelopen 6 maanden een A/A-test uitgevoerd op deze paginasjabloon.

Flickr wordt toegevoegd aan de lijst van veelgemaakte fouten bij A/B-testen waardoor een test ongeldig wordt verklaard nog voordat er statistische analyse heeft plaatsgevonden. Dit is des te gevaarlijker bij de multivariate tests, waarbij meerdere gebieden tegelijkertijd worden aangepast en waarbij elke combinatie een andere flits kan produceren, en op de e-commerce sites, waarbij productpagina's veel afbeeldingen en scripts van derden laden.

Veelgestelde vragen

Heeft het flikkereffect invloed op SEO?

Indirect wel. Flikkering zelf is geen straf, maar slecht geïmplementeerde oplossingen wel: een anti-flikkerfunctie die de pagina verbergt, verslechtert de LCP (Low Page Content), en een variant die blokken invoegt, verhoogt de CLS (Cumulative Layout Shift). Beide statistieken maken deel uit van de Core Web Vitals die Google hanteert. Vergelijk de veldgegevens uit Search Console voor geteste en niet-geteste pagina's om dit te controleren.

Mijn apparaat beweert "100% flikkervrij" te zijn: kan ik dat geloven?

Vraag hoe. "Flikkervrij" betekent vaak "met maskering": de flits verdwijnt, maar de pagina laadt later. Controleer drie dingen: de laadmethode van het fragment, de time-outwaarde voor de maskering en het LCP-verschil gemeten met en zonder het script. Een A/A-test op uw eigen site geeft uitsluitsel. U vindt de verschillen in aanpak in onze vergelijkend BlastOptimize / Kameleoon en in onze vergelijking met AB Tasty.

Vertraagt ​​een synchroon codefragment mijn website echt?

Het vertraagt ​​de eerste weergave van de download- en uitvoeringstijd van het script. Bij een klein bestand dat via een CDN wordt aangeboden, is het verschil enkele tientallen milliseconden. Bij een groot bestand of een trage server is het honderden milliseconden, en een storing bij de provider kan de pagina blokkeren tot de netwerktime-out optreedt. Meet de LCP met en zonder het codefragment voordat u een beslissing neemt.

Kan ik mijn A/B-testtool uploaden via Google Tag Manager?

Technisch gezien wel, maar deze configuratie veroorzaakt de meeste flikkering omdat GTM de tags asynchroon laadt. Gepubliceerde metingen tonen een extra maskering van ongeveer 400 ms in vergelijking met een directe integratie. Gebruik GTM alleen voor het activeren van tracking-events, niet voor het script dat de pagina aanpast.

Verergeren toestemmingsbanners het flikkeren?

Dat kan. Als uw testtool pas laadt nadat cookies zijn geaccepteerd, of als het toestemmingsbeheerplatform scripts blokkeert terwijl het de keuze van de bezoeker verwerkt, wordt de toepassing van de variant dienovereenkomstig vertraagd. Controleer de uitvoeringsvolgorde tussen de banner en het testfragment in een schone sessie, zonder cookies.

Belangrijkste conclusies

  • Het flikkereffect is de korte weergave van de originele pagina voordat de variant wordt getoond. Dit is specifiek voor testen aan de clientzijde.
  • Dit is geen simpel visueel defect: het verstoort de vergelijking systematisch, omdat slechts één van de twee groepen eraan lijdt.
  • De belangrijkste oorzaken zijn een slecht geplaatst script, een passage door GTM, asynchroon laden, een te groot bestand en varianten die in JavaScript in plaats van CSS zijn gecodeerd.
  • De anti-flikkerfunctie maskeert het symptoom, maar vertraagt ​​de weergave: richt op het te testen gebied en houd een time-out van ≤ 1500 ms aan.
  • Meten is weten: de A/A-test geeft de werkelijke kosten van het injectiemechanisme op uw locatie weer.
  • De serverzijde elimineert flikkering, maar dit brengt wel een afhankelijkheid van ontwikkelaars met zich mee.

Je wilt zien hoe BlastOptimize worden de verschillende varianten ook geserveerd? Bekijk onze aanbiedingen en prijzen om een ​​eerste A/A-test op uw site te starten.

Nieuws

Reacties zijn uitgeschakeld.