Lab receipt · 14 October 2026

The page that answers the first tap.

We loaded a published Popin page and the providers' own profile pages on the same slow phone connection, 5 times each, and kept the middle result. Popin scored 96, the highest of the pages tested, and kept the phone busy for 0 ms. The others kept it busy for 1,900 ms to 2,520 ms, and a tap on a link waits while the phone is busy.

The same phone, the same connection

Each bar runs until the page's main content has drawn. The thin mark is the end of the blank screen.

  1. Popin 2.5 s main content
  2. bio.link 2.2 s main content
  3. Lnk.Bio 4.1 s main content
  4. Beacons 10.9 s main content

What each phone shows, frame by frame

Cut at the moments that matter: when Popin starts, when it is done, and when each of the others is.

What each phone shows, frame by frame1.9 s2.2 s2.5 s4.1 s10.9 s
Popin drawing drawing shown shown shown
bio.link blank blank shown shown shown
Lnk.Bio drawing drawing drawing drawing shown
Beacons blank drawing drawing drawing drawing

The receipt

The middle of 5 runs for each page. Lower is better on every line but the score.

  • Popinpopin.click/wtomx2

    Lighthouse score
    96
    Main content shown
    2.5 s
    First thing on screen
    1.9 s
    Phone busy
    0 ms
    Page weight
    345 KB
    JavaScript
    10 KB
    Requests
    10
  • bio.linkbio.link/biodotlink

    Lighthouse score
    68
    Main content shown
    2.2 s
    First thing on screen
    2.2 s
    Phone busy
    1,900 ms
    Page weight
    213 KB
    JavaScript
    35 KB
    Requests
    21
  • Lnk.Biolnk.bio/lnkbio

    Lighthouse score
    50
    Main content shown
    4.1 s
    First thing on screen
    1.0 s
    Phone busy
    2,520 ms
    Page weight
    918 KB
    JavaScript
    285 KB
    Requests
    34
  • Beaconsbeacons.ai/beacons

    Lighthouse score
    37
    Main content shown
    10.9 s
    First thing on screen
    2.0 s
    Phone busy
    1,940 ms
    Page weight
    5.0 MB
    JavaScript
    2.6 MB
    Requests
    134
Lighthouse score
Out of a hundred, higher is better.
Main content shown
Largest Contentful Paint: when the biggest thing on screen has drawn.
First thing on screen
First Contentful Paint: the end of the blank screen.
Phone busy
Total Blocking Time: how long the page kept the phone from answering a tap.
Page weight
Everything downloaded: page, pictures, fonts, scripts.
JavaScript
Script files fetched on their own: code the phone downloads and runs. Scripts written into the page count in its weight.
Requests
Separate files fetched to draw the page.

Why the gap

A Popin page is drawn on the server, at the edge, and arrives as one finished document. No app framework has to download and start up before the links work, which is why the phone is not kept busy.

The JavaScript line counts script files fetched on their own. The few small scripts a Popin page has, such as the share button, are written into the page itself, so they count in its weight instead.

Where Popin was not ahead

A receipt lists everything. On the day we measured:

  • Lnk.Bio put something on screen sooner, at 1.0 s against Popin's 1.9 s.
  • bio.link drew its main content sooner, at 2.2 s against Popin's 2.5 s.
  • bio.link's page was lighter, at 213 KB against Popin's 345 KB.

How we measured

  • Tool: Lighthouse 13.5.0, performance category only, run from the command line.
  • Device: an emulated moto g power (2022), screen 412 by 823.
  • Network: Lighthouse's simulated throttling, its "Slow 4G" profile: 150 ms round trip, 1.6 Mbps down, and the processor slowed 4 times.
  • Runs: 5 per page, back to back, and every figure is the median. Single runs vary; the median is the honest middle. A run that crashed is left out, not retried.
  • Date: 14 October 2026. Pages change, so a later run may differ; the date is part of the result.
  • Units: kilobytes and megabytes are thousands and millions of bytes, as transferred.

The pages

Each competitor is measured on its own brand profile, never a person's page. Popin is measured on a published page with a photo header, a name and links.

  • Popin popin.click/wtomx2
  • bio.link bio.link/biodotlink
  • Lnk.Bio lnk.bio/lnkbio
  • Beacons beacons.ai/beacons

Who is not on this page, and why

Linktree is not measured. Its robots.txt asks every automated client it does not name to stay off its pages, and a lab tool is one of those.

Run it yourself

Any line above can be checked with Lighthouse itself, one page at a time. Run it a few times and take the middle result:

npx lighthouse@13.5.0 https://popin.click/wtomx2 --only-categories=performance --chrome-flags="--headless=new"

Our own run does the same with a small script: it reads each site's robots.txt first, loads one address per provider the number of times above, nothing else, and writes the file this page is drawn from.

node scripts/speed-bench.mjs --runs 5

Make yours and test it.

Build a page, publish it, and point Lighthouse at it.

Build mine