One rule
Everything on this site follows from a single number — including the API, which just hands you the same number in JSON.
1.5s
A site is in the club when its real-user Largest Contentful Paint, at the 75th percentile, on a phone, comes in under 1.5 seconds. That is the entire rulebook.
The rule
Four words do all the work. Real-user: measured on people who visited, not on our laptop. LCP: how long until the biggest thing on the screen showed up. 75th percentile: three quarters of visits were at least this fast. Phone: because that is how most of the web is read, and because desktop makes everyone look good.
Under 1.5 seconds and a site is in the Instant Club. At 1.54 seconds it is not, and no row on this site will pretend otherwise.
Why LCP
It is the closest single number to "the page looks ready". Time to First Byte flatters sites that stream nothing useful; a Lighthouse score is an opinion with a colour on it. LCP is when the thing you came for actually appeared.
One metric, so the verdict cannot be argued with. Everything else on a site page — FCP, TTFB, INP, CLS, page weight — is context for the number, not a second opinion about it.
The 75th percentile
Three quarters of real visits were at least this fast. An average is dragged around by a handful of terrible loads; a median throws away the slower half of your audience entirely. The p75 is the promise you can actually make: most people got this or better.
If your p75 is 1.4 s, plenty of people still waited longer than that. Which is rather the point.
How it works
Real-user data comes from the Chrome UX Report, Google's public dataset of what Chrome users actually experienced, at the 75th percentile on phones. When a site has too little traffic for that, we run a PageSpeed Insights lab test and label it as a lab result.
A lab result is one load on one machine on one connection. It is a stand-in for the real thing, and every row, card and page that shows one says so in as many words.
Rechecks
Every tracked site is re-queried at regular intervals. A site that drops under 1.5 s moves into the Instant Club automatically; one that slips is kicked out, with a reason. Nothing is moved by hand and there is nobody to lobby.
For a kick we also run a fresh lab test and diff it against the last one, so the feed can say something more useful than "got slower" — page weight up 2.1×, third-party requests up 3×, TTFB up 800 ms. That reason is our best reading of the lab run, not a diagnosis of your stack. Every change is on this week's page and in the feed.
The two boards
The Instant Club is every site we have timed that is currently under 1.5 s, fastest first. Membership is per form factor, so the phone and desktop boards are different lists; the club proper is the phone one, because that is the rule.
The Contenders is everything else, closest to the line first, each row saying exactly what it has left to shave. It is a queue, not a wall of shame — every site in the club started there.
Privacy
No signup, no accounts, no cookies, no analytics script, no third-party request on any page. Nothing about you is stored, because nothing about you is collected.
The only thing kept in your browser is which theme you picked, and that never leaves it. The page-size line in the footer is our own score, measured the same way as yours.
Getting listed
Check your site on the homepage, then press List it in the club. Pick one of the 29 fixed categories, and add a GitHub or X handle if you want your name on it. That is the whole form. Your own page works the moment you press it; the boards and the homepage are static files, so your row shows up there within about 5 minutes.
The title, description and icon come from your own site, read once at listing time — we do not write copy about you and there is nothing to log into. Handles are typed into a form by whoever ran the listing, and until the owner verifies we have not checked them, which every unverified page says out loud.
Slow sites can list too. Listing makes you a contender, which is where everyone in the club started.
The badge
Every site page carries an SVG badge with copy-paste HTML and Markdown, in two styles. It reads the live number each time it is loaded, so it turns amber or red on its own the week you slip. A badge that cannot embarrass you is just a sticker. The markup is further down this page.
Verification
To prove a listing is yours, your site page hands you a meta tag to drop into your homepage's <head>. Press Verify and we fetch the page and look for it, after which you can take the tag straight back off.
If that is awkward, write to admin@instantly.fyi from an address at the domain and we will check the handle by hand instead.
A verified owner gets a tick beside their name across the site, and can change the category and handles on their listing from that same page. Nobody else can. The tick is ink rather than green on purpose: on this site a colour is a verdict about load time, and "we checked who owns this" is not one.
API
The same numbers this site publishes, in whatever shape your script wants. No signup for the first sixty checks a day.
$ curl instantly.fyi/news.ycombinator.com
news.ycombinator.com 0.6 s in the club
The whole reading
Everything a site page shows, as one object: both form factors, the supporting metrics, the lab run where there is one, twenty-six weeks of history, and every time the site joined or left the club.
$ curl -s instantly.fyi/api/site/news.ycombinator.com | jq '{lcp: .phone.lcp_ms, in: .phone.in_club}'
{
"lcp": 618,
"in": true
}Fail the build when it gets slow
One endpoint answers 200 when the site is inside the limit you name and 417 when it is not, so curl -f is the whole assertion. The limit is milliseconds; leave it out and it is the club's own 1,500.
curl -fsS "https://instantly.fyi/api/check/news.ycombinator.com?limit=1500"
Drop it in a workflow and a pull request that doubles your hero image stops being somebody else's discovery three weeks later.
name: speed
on: [push]
jobs:
budget:
runs-on: ubuntu-latest
steps:
- name: Real users must still get it in 1.5 s
run: curl -fsS "https://instantly.fyi/api/check/news.ycombinator.com?limit=1500"Limits
| Caller | A day | A minute |
|---|---|---|
| No key · checksPer IP. A check can start a PageSpeed run, which is a minute of somebody else’s compute. | 60 | no cap |
| No key · everything elsePer IP. Readings, leaderboards, the badge — one query each. | 600 | no cap |
| With a keyFree, minted on this page, sent as a bearer token. One allowance for both kinds of request. | 5,000 | 120 |
Readings we already hold are served from cache and are not metered. A check that has to go and measure something counts. Keys are limited to 3 a day per address — one is enough, so keep it.
Get a key
Free, instant, no email. Send it as Authorization: Bearer <key> or ?key=.
What comes back
| Field | Meaning |
|---|---|
phone.lcp_ms | Largest Contentful Paint for real visitors on phones, 75th percentile, in milliseconds. This is the number the club rule uses. |
phone.in_club | true when that reading is under 1,500 ms. |
phone.band | instant under 1.5 s, close to 2.5 s, slow beyond it. |
phone.metrics | FCP, TTFB and INP in milliseconds, and CLS unitless. |
phone.lab | Page weight, request counts and the Lighthouse score from one PageSpeed run — null when we have not run one. |
desktop | The same object again, measured on desktop. Membership is decided on phones. |
site.rank_overall | Where the site sits among every site we have timed, fastest first. |
history | Up to twenty-six weekly p75s, oldest first, as { period_end, lcp_ms }. |
events | Every time the site joined or left the club, newest first. |
Wear the number
The reading, redrawn on every request. It turns amber the week you slip, which is the only reason to trust it.
[](https://instantly.fyi/news.ycombinator.com)
The member variant, for a site that is actually in the club. It says so in words, and it stops saying so the moment that stops being true.
[](https://instantly.fyi/news.ycombinator.com)
Questions
Why is my site missing?Because nobody has checked it yet. We only time what has been looked up on the homepage or listed by its owner — there is no crawler. Paste your URL and it is tracked from that moment on.
Why does this number differ from my own Lighthouse run?Because it is measuring something else. Lighthouse is one load, on your machine, on your connection, usually warm. This is the 75th percentile of real visits on real phones on real networks, which is a slower and less flattering picture. When we have no field data we say "lab result", and then it is a Lighthouse-style number and should line up.
Can I remove my listing?Removal on request. Write to admin@instantly.fyi from an address at the domain in question, and the listing comes down.