instantly.fyi

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

CallerA dayA minute
No key · checksPer IP. A check can start a PageSpeed run, which is a minute of somebody else’s compute.60no cap
No key · everything elsePer IP. Readings, leaderboards, the badge — one query each.600no cap
With a keyFree, minted on this page, sent as a bearer token. One allowance for both kinds of request.5,000120

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

FieldMeaning
phone.lcp_msLargest Contentful Paint for real visitors on phones, 75th percentile, in milliseconds. This is the number the club rule uses.
phone.in_clubtrue when that reading is under 1,500 ms.
phone.bandinstant under 1.5 s, close to 2.5 s, slow beyond it.
phone.metricsFCP, TTFB and INP in milliseconds, and CLS unitless.
phone.labPage weight, request counts and the Lighthouse score from one PageSpeed run — null when we have not run one.
desktopThe same object again, measured on desktop. Membership is decided on phones.
site.rank_overallWhere the site sits among every site we have timed, fastest first.
historyUp to twenty-six weekly p75s, oldest first, as { period_end, lcp_ms }.
eventsEvery 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.

instantly.fyi: 0.6 s ✓
[![instantly.fyi: 0.6 s ✓](https://instantly.fyi/badge/news.ycombinator.com.svg)](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.

Instant Club: member
[![Instant Club: member](https://instantly.fyi/badge/news.ycombinator.com.svg?style=member)](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.