Re-run every Monday, 02:00 UTC · next run soon
Read again every Monday.
The same 150 sites, picked blind before any tool saw them. Every free tool reads them alone, then Frankensurf reads them with all of them. Same pass/fail check, one read each, on a fresh machine with a data-centre address.
Who read the page.
Share of the 150 sites read right. A read counts only when the real page came back: a bot check, a sign-in wall or an empty shell is a miss, even with a 200.
150 sites, one square each.
Each column is a site, each row a tool. Green is read right. Sites are sorted by how many tools got through, so the hard ones sit on the right. Hover or tap a square for the site.
Reads more. Costs time.
Each dot is a tool's median read; the line runs out to its slowest tenth. Frankensurf's median stays low because most sites stop at the first cheap tool. Its tail is long because a hard site climbs several tools.
Where it wins.
By kind of site. The grey tick is the best any single tool did on that kind; the green bar is Frankensurf.
Week by week.
Sites change, tools ship, walls go up. This is how each one holds up over time.
Check our work.
Every read, every tool
One line per site per tool: what came back, why it failed, how long it took.
the scriptRun it yourself
The same script runs here every Monday. Point it at your own sites.
the machineA fresh runner each week
GitHub Actions, no cache, no keys, no paid tools. Results are committed as they come.
Free tools only: paid APIs aren't run every week. The full head-to-head with Firecrawl, Zyte and the rest is in the launch write-up and its benchmark folder.