Contact
I am at your full disposal!
Let's Talk
direct channel · carlos@sanchezdonate.net
usual reply time · < 48 h
On any other project, showing these metrics on the frontend would make zero sense. So go ahead and feed your curiosity: open any row to discover what we're measuring and what the ideal value should be.
How this page travelled from the server to your browser.
The HTTP version negotiated between browser and server. h2 and h3 multiplex files over one connection; h1.1 queues them. target: h2 or h3
Time to resolve the domain to an IP. Cached afterwards, so it is usually zero on a second visit. target: < 50 ms
Opening the TCP channel. 0 ms means the browser reused an open connection. target: < 100 ms
The HTTPS handshake, included in connection time. Also 0 ms when the connection is reused. target: < 100 ms
Each hop is a full request before anything renders. You pay twice: load time and crawl budget. target: none
Whether this HTML came from the network or from disk. HIT means the browser already had it.
How much the HTML shrank in transit with gzip or brotli. "Uncompressed" means a server misconfiguration. target: > 60 %
What your browser reports about your own connection. A reminder that not everyone is on fibre.
The actual loading experience, measured on your screen.
Time to first byte: how long the server takes to start replying. The first thing to check on a slow site. target: < 800 ms
From the first byte of HTML to the last. High with a small document points at the server.
First Contentful Paint: when the first text or image appears — the end of the blank screen. target: < 1.8 s
Largest Contentful Paint: when the biggest visible element finishes painting. A Core Web Vital. target: < 2.5 s
Cumulative Layout Shift: how much content moved on its own while loading. Measured in session windows. target: < 0.1
Interaction to Next Paint: response time to your input. Approximated here as the worst interaction of this visit. target: < 200 ms
When the browser finished parsing the HTML and running blocking scripts.
The load event. It used to be the headline metric; today it says little about experience.
JavaScript tasks over 50 ms and the total blocking time above that limit. The page looks ready but does not respond. target: < 200 ms
This page inventory, file by file.
The compressed weight of the document. All a crawler needs to understand the page. target: < 250 kB
Everything: HTML, CSS, JavaScript, images and fonts. target: < 500 kB
How many files the page requested. Crawl budget is counted in requests, not bytes. target: < 40
Scripts and total weight. The most expensive resource: download, parse and execute. target: < 150 kB
Stylesheets and total weight. They block rendering. target: < 50 kB
Count and weight. Usually half the page weight and the usual cause of a poor LCP. target: < 300 kB
Downloaded typefaces. Every weight and style is a separate file.
Resources from other domains. You do not control them, but they slow you down.
The signals a crawler reads from this very HTML.
What the meta robots tag says. noindex keeps the page out of the index no matter how good it is.
The URL the page declares as the preferred version. Pointing elsewhere hands the indexing to another page.
The lang attribute. Used by screen readers and language targeting.
Title length. Around 55 characters usually fits a desktop result. reference: ~55 chars
Meta description length. It does not rank, but it decides the click. reference: ~150 chars
How many h1 headings. One states the topic; several split the focus. target: 1
Images on the page and how many lack an alt attribute. target: 0 without alt
Internal and external links. Internal ones distribute authority and guide crawling.
Structured data types found in JSON-LD. The gateway to rich results.
What it took to build this HTML before sending it.
Time WordPress spent building this document, excluding network. The part of TTFB you control. target: < 200 ms
Database queries needed to render this page. Spikes usually mean a plugin. target: < 40
Peak PHP memory during generation.
I am at your full disposal!
direct channel · carlos@sanchezdonate.net
usual reply time · < 48 h
We use cookies to make sure you get the best experience on our website. Here is our cookie policy.