Technische nulmeting · twentynice.com · 17 september 2026

Waar de site
vandaag staat.

Een meting van wat er nu op twentynice.com draait: beveiliging, privacy, snelheid, vindbaarheid en toegankelijkheid voor AI. Geen oordeel over het ontwerp, geen voorstel. Alleen wat er gemeten is, en wat het betekent. Alles van buitenaf, met openbaar gereedschap; er is niets aangepast en er is geen toegang gebruikt.

METING
meet twentynice.com
 
── STERK
✓ TLS 1.0 en 1.1 geweigerd
✓ DNSSEC aan
✓ SPF streng (-all), 3 van 10
✓ DMARC quarantine, met rapportadres
✓ Contactformulier Turnstile en een token
✓ .git en .env niet bereikbaar
 
── AANDACHT
✗ Beveiligingsheaders 0 van de 6
✗ Content-Security ontbreekt
✗ Cookiemelding niet aanwezig
✗ Opslag vooraf 6 sleutels binnen 2 seconden
✗ Beheerdersnaam openbaar leesbaar
✗ Versies zichtbaar WordPress, Elementor, Redux
✗ Externe scripts 11 zonder controle
✗ CAA-records geen
✗ security.txt 404
✗ Wachttijd mobiel 26 tot 44 seconden
✗ Pagina’s zonder h1 12 van de 22
✗ Beschrijvingen 0 van de 22
✗ Taal en-US
✗ ClaudeBot 403 geweigerd
 
─────────────────────────────
✓ Alles zelf gemeten • 17-09-2026

01 / Beveiliging en privacy

Je cookiebeleid beschrijft een banner.
Die staat er niet.

Dit hoofdstuk staat vooraan omdat het de enige bevinding is die niet over techniek gaat maar over aansprakelijkheid. Je eigen cookiebeleid beschrijft hoe bezoekers toestemming geven. Wij hebben gemeten wat er gebeurt als iemand de site opent, en dat is iets anders.

Vondst 01

Binnen twee seconden staan er zes waarden op het apparaat van de bezoeker, zonder dat er iets gevraagd is.

Wij openden de homepage in een verse browser en keken elke seconde wat er werd weggeschreven. Na één seconde: niets. Na twee seconden: vijf waarden. Na vier: zes. Het gaat niet om cookies, want die worden er niet gezet. Het gaat om localStorage, en dat telt onder de AVG net zo goed mee: het is opslag op het apparaat van de bezoeker. In een van die waarden staat een uniek nummer dat de bezoeker herkenbaar maakt bij een volgend bezoek.

na 1000ms: 0 sleutels na 2000ms: 5 sleutels na 4000ms: 6 sleutels wistia, wistia-video-progress-0ouyadatt9, wistia-video-progress-sv2qfe2wvg, wistia-video-progress-0autqmep04, wistia-video-progress-rm1newggyp, wistia-video-progress-5c0rmz1yhl de sleutel "wistia" bevat: "__distillery":"1789633_fae82584-2b5c-…"

Vondst 02

Je cookiebeleid noemt twee diensten die er niet zijn, en een knop die er niet is.

Op twentynice.com/cookie-beleid/ staat: “Bij je eerste bezoek aan onze website krijg je een cookiebanner te zien” en “Je kunt je voorkeuren op elk moment aanpassen via de knop links onderaan op onze website.” Het beleid noemt daarbij Usercentrics als de dienst die je toestemming bewaart, en Google Fonts als functionele dienst.

Gemeten: er is geen banner, er is geen knop linksonder, en het woord Usercentrics komt op de hele site precies één keer voor, namelijk in de tekst van het cookiebeleid zelf. Google Fonts wordt nergens geladen. Wistia, dat je beleid zelf onder Marketing schaart, draait wel en schrijft meteen weg.

$ curl -s https://twentynice.com/ | grep -ci usercentrics 0 $ curl -s https://twentynice.com/cookie-beleid/ | grep -ci usercentrics 1 (het woord in de tekst, geen script) $ curl -s https://twentynice.com/ | grep -co "fonts.googleapis.com" 0

Dit is de bevinding die het minst over techniek gaat en het meest over papier: je document beschrijft een situatie die niet bestaat. Voor een toezichthouder is dat een ongunstiger vertrekpunt dan helemaal geen beleid hebben.

Vondst 03

Er staat geen enkele beveiligingsheader op de site.

Beveiligingsheaders zijn regels die je server meestuurt en die de browser vertellen wat er wel en niet mag. Ze kosten niets en breken zelden iets. Op twentynice.com staan ze geen van alle aan. De belangrijkste is de Content-Security-Policy: die bepaalt welke andere partijen code mogen draaien op jouw pagina. Zonder die regel mag iedereen die ergens binnenkomt alles.

twentynice.comsecurityheaders.com
securityheaders.com geeft twentynice.com het cijfer F, met zes ontbrekende headers

Cijfer F. Alle zes ontbreken: HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy en Permissions-Policy.

Schermafdruk van securityheaders.com, 17 september 2026 om 08:31 UTC. Zelf overdoen kost tien seconden.

Vondst 04

De naam van je beheerdersaccount is openbaar op te vragen, en je inlogscherm staat open.

WordPress heeft een adres dat de gebruikers van de site teruggeeft. Dat staat open en geeft de accountnaam van beheerder nummer 1. Dat is de helft van een inlogpoging; de andere helft is het wachtwoord, en het inlogscherm is gewoon bereikbaar. Daar komt bij dat je WordPress-versie op drie plekken leesbaar is, en dat je aan een versienummer kunt aflezen welke bekende zwakke plekken erbij horen.

$ curl -s https://twentynice.com/wp-json/wp/v2/users [{"id":1,"name":"comtwe-b…","slug":"comtwe-b…", …}] $ curl -s -o /dev/null -w "%{http_code}\n" https://twentynice.com/wp-login.php 200 $ curl -s https://twentynice.com/wp-links-opml.php | grep generator <!-- generator="WordPress/7.1" --> $ curl -s https://twentynice.com/ | grep -o 'content="Elementor [0-9.]*' content="Elementor 4.2.4

De accountnaam staat hierboven half afgeplakt, want dit document gaat rond. Op je eigen site staat hij voluit.

Vondst 05

Elf scripts van buiten draaien zonder controle op wat er binnenkomt.

Een script van een andere partij kan met een handtekening worden meegestuurd: de browser rekent dan na of het bestand nog precies hetzelfde is en weigert het als er iets aan veranderd is. Tien scripts van Wistia en één van Cloudflare draaien zonder die controle. De vijf van Sentry hébben hem wel, dus het kan op deze site.

Scripts van buiten op de homepageAantalMet handtekening
fast.wistia.com10nee
challenges.cloudflare.com1nee
browser.sentry-cdn.com5ja
Wat er goed staat Niet alles is open. /.git/config en /.env, de twee adressen waar automatische scanners als eerste op afgaan, geven allebei een nette foutmelding. /wp-content/ en /wp-content/plugins/ geven wel een 200 maar een leeg antwoord, dus er is geen mappenoverzicht; dat is precies zoals het hoort. Het opvragen van gebruikers via /?author=1 wordt geweigerd met een 403. Het contactformulier heeft botbescherming van Cloudflare en een token tegen misbruik van buitenaf. En er staat geen enkele onbeveiligde verwijzing op de pagina.

02 / Certificaat, domein en e-mail

Je e-mail staat er goed bij.
Twee dingen ontbreken eromheen.

Dit gaat over de laag onder de website: het slot in de adresbalk, wie er namens je domein certificaten mag aanvragen, en wie er namens jouw naam mag mailen. Die laatste is de laag waar phishing op drijft.

Gemeten van buitenafStand
CertificaatLet’s Encrypt, geldig tot 5 november 202650 dagen te gaan, wordt normaal vanzelf vernieuwd
TLS 1.0 en 1.1geweigerdde verouderde versies staan uit
DNSSECaanje domeinnaam is ondertekend
SPFstreng, eindigt op -all3 van de 10 toegestane opzoekingen gebruikt
DMARCquarantine, met rapportadresrapporten gaan naar security@twentynice.com
CAA-recordsgeenelke certificaatuitgever mag er een uitgeven
MTA-STSgeengeen afdwingbare versleuteling bij inkomende post
/.well-known/security.txt404geen meldadres voor wie iets vindt
HSTSgeen headerde browser onthoudt niet dat je site alleen via https werkt

Gemeten op 17 september 2026 met openssl, dig en curl. Over TLS 1.3 doen we geen uitspraak: de curl op onze meetmachine gebruikt LibreSSL en geeft dan hetzelfde antwoord bij “werkt niet” en “kan niet testen”. Een ontbrekende regel is beter dan een onbewezen regel.

Vondst 06

Je SPF en DMARC zijn strenger ingesteld dan bij de meeste sites die wij meten, en dat is winst.

SPF bepaalt welke servers namens jouw domein mogen mailen. De jouwe eindigt op -all: alles wat er niet in staat, wordt hard geweigerd. Er is een limiet van tien opzoekingen en daar zit je op drie, dus er is ruimte om er iets bij te zetten zonder dat de hele regel stilletjes ophoudt te werken. DMARC staat op quarantine met twee rapportadressen, dus er kijkt ook echt iemand naar wat er misgaat. Dat is de goede volgorde.

$ dig +short TXT twentynice.com v=spf1 include:spf.protection.outlook.com include:_spf.salesforce.com -all $ dig +short TXT _dmarc.twentynice.com v=DMARC1; p=quarantine; rua=mailto:security@twentynice.com,mailto:dmarc_agg@vali.email;

Vondst 07

Er staat geen CAA-record, dus elke certificaatuitgever ter wereld mag een certificaat voor je domein uitgeven.

Een CAA-record is één regel in je DNS die zegt: alleen deze uitgever mag certificaten voor dit domein maken. Zonder die regel mag iedereen het proberen. Je kunt er ook een meldadres in zetten, zodat je bericht krijgt als iemand het toch doet.

$ dig +short CAA twentynice.com (leeg)

Vondst 08

Er is geen adres waar iemand een lek kan melden.

/.well-known/security.txt is een tekstbestandje met een e-mailadres erin, beschreven in RFC 9116. Onderzoekers en geautomatiseerde scanners kijken daar als eerste. Zonder dat bestand komt een melding bij je algemene info-adres terecht, of nergens. Bij jullie geeft het adres een 404. Het is vijf regels tekst.

03 / Snelheid

Zesentwintig tot vierenveertig seconden.
Zo lang duurt het tot het grootste beeld staat.

De maat die Google gebruikt heet LCP: hoe lang een bezoeker wacht tot het grootste element op het scherm staat. Alles boven vier seconden noemt Google slecht, en het telt sinds 2021 mee in de rangschikking. Wij maten vijf keer, en de uitkomst schommelt hard: van zesentwintig tot ruim vierenveertig seconden. Dat komt door de video op de homepage, die uit zichzelf begint te spelen en ondertussen stukjes blijft ophalen.

Homepage, mobiel, vijf metingenGemetenWat Google goed noemt
Prestatiescore54 – 5590 of hoger
Wachttijd tot de eerste tekst (FCP)7,1 – 7,5 sonder 1,8 s
Wachttijd tot het grootste element (LCP)26,2 – 44,2 sonder 2,5 s
Tijd dat de pagina niet reageert (TBT)68 – 113 msonder 200 ms
Verspringen tijdens laden (CLS)0 – 0,003onder 0,1
Gewicht van de pagina16.343 – 16.378 KBgeen norm, wel zwaar
Toegankelijkheid8590 of hoger
Vindbaarheid (SEO)85100 haalbaar

Gemeten met Google Lighthouse 12.8.2 op 17 september 2026, in de mobiele test die Google zelf gebruikt om sites te beoordelen: een geremde processor en een traag mobiel netwerk. Vijf metingen, want deze cijfers schommelen; de bandbreedte in de tabel is die vijf metingen. Google PageSpeed Insights, dat dezelfde meetmotor gebruikt, liep op 17 september twee keer vast op zijn eigen tijdslimiet van drie minuten op deze site; daarom staan hier onze eigen metingen en geen schermafdruk van Google.

Vondst 09

De pagina weegt ruim 16 MB, waarvan het grootste deel video die niemand heeft aangeklikt.

In een gewone browser gemeten, negen seconden na het openen: de homepage doet 71 verzoeken voor de pagina zelf, samen 13.443 KB, en daar komen er nog eens 55 bij voor video, samen ongeveer 3 MB. Opgeteld is dat dezelfde orde als de 16,3 MB die Lighthouse in de tabel hierboven telt. Die video’s starten uit zichzelf zodra ze in beeld komen, dus een bezoeker die alleen even je telefoonnummer zoekt, haalt ze toch binnen. Het getal voor video is een momentopname: een speler blijft stukjes ophalen zolang de pagina open staat, dus het hangt af van hoe lang je wacht. Daarom staat het hier apart en niet opgeteld.

Eerlijk erbij: de pagina is niet zesentwintig seconden leeg. De eerste tekst staat er na ruim zeven seconden. Wat zo lang duurt is het beeld waar de pagina om draait.

04 / Vindbaarheid

Er staat geen SEO-plugin op de site.
Dat is aan alle 22 pagina’s te zien.

Wij hebben geen steekproef gedaan maar alle 22 pagina’s opgehaald en per pagina gekeken naar kop, titel, beschrijving, taal, structuurdata en afbeeldingen. De lijst met pagina’s komt niet uit je sitemap, want die werkt niet; daarover hieronder meer.

Over alle 22 pagina’sAantal
Pagina’s zonder h1, de kop waar Google op afgaat12
Pagina’s zonder beschrijving in de zoekresultaten22
Pagina’s met en-US als taal, op een Nederlandse site22
Pagina’s zonder structuurdata22
Pagina’s zonder deelkaart voor LinkedIn en WhatsApp22
Pagina’s waar de kopvolgorde een niveau overslaat16
Afbeeldingen zonder omschrijving5 van de 186
Pagina’s met een canonical, zodat dubbele adressen geen kwaad kunnen22
Pagina’s met een dubbele titel0, alle 22 titels zijn uniek

Elke pagina afzonderlijk opgehaald en nagekeken op 17 september 2026.

Vondst 10

Twaalf pagina’s hebben geen enkele kop waar een zoekmachine op af kan gaan.

Een h1 is de titel van de pagina in de code. Dat er iets in grote letters op het scherm staat maakt niet uit; het gaat om wat er in de code staat. Het ontbreekt op diensten, producten, partners, video’s, contact, consultancy, implementatie, beheer, support, training, de algemene voorwaarden en het cookiebeleid.

$ curl -s https://twentynice.com/diensten/ | grep -c "<h1" 0

Vondst 11

Geen enkele pagina heeft een beschrijving, dus Google knipt zelf een stukje tekst.

De beschrijving is de twee regels onder je link in de zoekresultaten. Staat er geen, dan pakt Google zelf een stuk van de pagina, en dat is vaak de eerste zin die hij tegenkomt. De titel van je homepage is trouwens precies één woord: TwentyNice. Dat is wat er vetgedrukt in Google staat en in het tabblad van de browser.

Vondst 12

In de code staat dat de site Amerikaans Engels is.

Bovenaan elke pagina staat welke taal het is. Op alle 22 staat daar en-US, terwijl alles in het Nederlands is. Een zoekmachine gebruikt dat om te bepalen aan wie hij je site laat zien, en een schermlezer om te bepalen hoe hij de tekst uitspreekt.

$ curl -s https://twentynice.com/ | grep -o 'lang="[a-zA-Z-]*"' | head -1 lang="en-US"

Vondst 13

Je robots.txt wijst naar een sitemap die niet bestaat.

Een sitemap is de lijst met pagina’s die je aan Google geeft. In je robots.txt staat er een genoemd, maar dat adres geeft een foutmelding. Google krijgt die lijst dus niet en moet alles zelf zien te vinden via links.

$ curl -s https://twentynice.com/robots.txt | tail -1 Sitemap: https://twentynice.com/wp-sitemap.xml $ curl -s -o /dev/null -w "%{http_code}\n" https://twentynice.com/wp-sitemap.xml 404

05 / AI-toegankelijkheid

Claude komt de site niet in.
En je robots.txt zegt dat het mag.

Steeds meer mensen zoeken niet meer op Google maar vragen het ChatGPT, Claude of Perplexity. Die programma’s halen hun antwoord van websites. Kunnen ze er niet bij, of kunnen ze niet goed lezen wat er staat, dan kom je in dat antwoord niet voor. Wij hebben vijftien van die programma’s langs de site gestuurd.

Wat een AI tegenkomtAntwoord
ClaudeBot, de crawler van Claude403 geweigerd
GPTBot, PerplexityBot, CCBot, Google-Extended en tien andere200
llms.txt, de samenvatting die een AI als eerste leest404
robots.txt noemt de AI-crawlers met naamnee
Structuurdata op de homepage0 blokken

Vondst 14

ClaudeBot krijgt een weigering, en dat staat nergens in je robots.txt.

403 betekent verboden toegang. Niet dat de pagina niet bestaat, maar dat de server hem er niet in laat. Je robots.txt zegt daar niets over, dus het is geen keuze die iemand bij jullie gemaakt heeft; het komt uit een laag daaronder, meestal de beveiliging van de hosting. Dat is een gesprek met je hostingpartij, niet met je websitebouwer.

$ curl -s -o /dev/null -w "%{http_code}\n" -A "ClaudeBot/1.0" https://twentynice.com/ 403 $ curl -s -o /dev/null -w "%{http_code}\n" -A "GPTBot/1.1" https://twentynice.com/ 200

Vondst 15

Er staat nergens in machinetaal wie je bent.

Structuurdata is een blokje in de code dat in vaste termen zegt: dit is een bedrijf, dit is de naam, dit is het adres, dit is het KVK-nummer, dit zijn de diensten. Zoekmachines en AI’s lezen dat als eerste, want het is het enige stuk van een pagina waarover geen twijfel bestaat. Op de homepage staan nul van die blokken.

Datzelfde geldt voor je zeventig video’s. Die zijn je grootste bezit op deze site en ze zitten in een speler die een AI niet kan lezen: titel, onderwerp en duur staan nergens als tekst op de pagina.

$ curl -s https://twentynice.com/ | grep -o 'application/ld+json' | wc -l 0

06 / Alle bevindingen op een rij

Vijftien punten, op volgorde van gewicht.

Gesorteerd op hoe zwaar ze wegen, niet op hoe makkelijk ze zijn. De eerste zes raken beveiliging en privacy, de rest raakt snelheid en vindbaarheid.

BevindingGebiedWaarom het weegt
1 · Opslag in de browser zonder toestemmingprivacyzes waarden binnen twee seconden, waaronder een uniek nummer, en nergens een vraag
2 · Cookiebeleid beschrijft een banner die er niet isprivacyje eigen document noemt Usercentrics, een banner en een knop die geen van drie bestaan
3 · Geen enkele beveiligingsheadersecuritygeen Content-Security-Policy, dus niets begrenst wat externe partijen mogen
4 · Beheerdersnaam openbaar en inlogscherm opensecurityde helft van een inlogpoging ligt op straat
5 · Versies staan in de paginasecurityWordPress 7.1, Elementor 4.2.4 en Redux 4.4.12.2 zijn af te lezen
6 · Elf externe scripts zonder handtekeningsecurityverandert er iets aan zo’n bestand, dan merkt de browser dat niet
7 · Geen CAA-recordsdomeinelke certificaatuitgever mag een certificaat voor je domein maken
8 · Geen security.txtsecurityeen onderzoeker weet niet waar hij een melding kwijt kan
9 · Geen HSTSsecurityde browser onthoudt niet dat deze site alleen via https hoort te werken
10 · Geen MTA-STSe-mailinkomende post kan in theorie onversleuteld worden afgeleverd
11 · LCP 26 tot 44 seconden mobielsnelheidtien keer of meer boven de grens die Google slecht noemt
12 · Geen van de 22 pagina’s heeft een beschrijvingvindbaarheidGoogle verzint dan zelf wat er in de zoekresultaten staat
13 · Twaalf pagina’s zonder h1, taal op en-USvindbaarheidde twee signalen waar een zoekmachine als eerste op afgaat
14 · Sitemap in robots.txt geeft 404vindbaarheidGoogle krijgt je pagina-lijst niet en moet alles zelf vinden
15 · ClaudeBot geweigerd, geen structuurdataAIde weigering is niet zelf ingesteld, het gevolg wel
En wat er goed staat TLS 1.0 en 1.1 worden geweigerd. DNSSEC staat aan. SPF eindigt op de strenge variant en gebruikt drie van de tien toegestane opzoekingen, dus er is ruimte om iets bij te zetten zonder dat de regel stilletjes stopt met werken. DMARC staat op quarantine met twee rapportadressen, dus er kijkt ook echt iemand mee. Het contactformulier heeft botbescherming van Cloudflare en een token. De adressen waar automatische scanners als eerste op afgaan, /.git/config en /.env, geven allebei netjes niets terug, en de mappen onder wp-content laten geen bestandsoverzicht zien. Het opvragen van gebruikers via /?author=1 wordt geweigerd. Alle 22 pagina’s hebben een canonical en een eigen titel. Er staat geen onbeveiligde inhoud op de pagina. Best practices scoort 96 bij Google.

07 / Zelf nameten

Alles hierboven kun je zelf overdoen.
Je hebt er alleen een browser voor nodig.

Geen van deze proeven verandert iets aan de site. Het zijn dezelfde handelingen die wij hebben gedaan.

Opslag zonder toestemming
Open twentynice.com in een nieuw privévenster, wacht drie seconden, druk op F12, tabblad Application, links onder Local Storage. Daar staan zes waarden, zonder dat je iets gevraagd is.
Het cookiebeleid ernaast
Lees twentynice.com/cookie-beleid/, punt 4. Daar staat dat je bij je eerste bezoek een banner krijgt en dat de knop linksonder staat. Kijk daarna nog eens naar je scherm.
Beveiligingsheaders
Scan het adres op securityheaders.com. Zes rode vakken, cijfer F. Kijk vooral naar Content-Security-Policy.
Je beheerdersnaam
Open twentynice.com/wp-json/wp/v2/users in je browser. Daar staat de accountnaam van je beheerder.
Snelheid
Meet op PageSpeed Insights, tabblad Mobiel. Let op LCP. Draai het twee keer: de uitslag schommelt hard, omdat de video tijdens de meting meelaadt.
Koppen en taal
Open twentynice.com/diensten/, klik rechts, kies Paginabron weergeven en zoek op <h1. Je vindt er geen. Zoek daarna op lang= bovenaan: en-US.
Je sitemap
Open twentynice.com/robots.txt. Onderaan staat een sitemap genoemd. Klik erop: die pagina bestaat niet.
Vraag het een AI
Vraag ChatGPT, Claude of Perplexity wie in Nederland onafhankelijk advies geeft over UEM. Kijk of TwentyNice erbij staat en of het klopt wat er staat.