The benchmark, in full
Across 8 real pages, scored with the original server unreachable, CopyAnySite averages 98.87% pixel fidelity and is best or tied on 8 of 8 rows — against SingleFile 87.93%, wget 87.4% and monolith 83.44%. The harness and the raw numbers are in the repository, so you can re-run it.
Fidelity claims about website copiers are usually unfalsifiable, because the copy is judged while the original server is still there to fill in the gaps. This page exists to be the opposite: one command, published inputs, published per-run outputs, and the losing rows left in.
| Page | CopyAnySite | SingleFile | monolith | wget -p -k |
|---|---|---|---|---|
| arthize.comagency site | 99.97%2 remote · 1124 KBbest | 99.84%0 remote · 501 KB | 99.24%8 remote · 2209 KB | 99.24%8 remote · 1069 KB |
| linear.appanimation-heavy marketing | 99.64%1 remote · 6718 KBbest | 88.28%0 remote · 2296 KB | 98.88%266 remote · 25157 KB | 84.2%324 remote · 4311 KB |
| news.ycombinator.comtable layout | 100%0 remote · 47 KBbest | 95.86%0 remote · 43 KB | 100%0 remote · 55 KBbest | 100%0 remote · 52 KBbest |
| Travlia (WP theme demo)commercial theme | 98.39%1 remote · 31042 KBbest | 74.64%0 remote · 7501 KB | 84.54%84 remote · 80993 KB | 66%89 remote · 49182 KB |
| wikipedia.orgcontent-heavy article | 100%0 remote · 1033 KBbest | 99.99%0 remote · 450 KB | 99.92%7 remote · 932 KB | 99.87%9 remote · 685 KB |
| stripe.comgradients, heavy JS | 95.99%0 remote · 49526 KBbest | 65.55%0 remote · 5302 KB | 49.03%0 remote · 90611 KB | 56.86%122 remote · 649 KB |
| heyclicky.comliquid-glass SVG filters | 98.71%0 remote · 31224 KBbest | 81.41%0 remote · 1715 KB | 71.6%0 remote · 27553 KB | 96.17%1 remote · 20573 KB |
| tailwindcss.comutility CSS docs | 98.25%0 remote · 14605 KBbest | 97.84%0 remote · 9346 KB | 64.27%0 remote · 19055 KB | 96.88%1 remote · 11527 KB |
| Average8 sites · 3 runs each | 98.87%best on 8 of 8 | 87.93%best on 0 of 8 | 83.44%best on 1 of 8 | 87.4%best on 1 of 8 |
How it is measured
- Same page, same moment
- Every tool captures the same URL in the same session, after the page has been scrolled to the bottom and back so lazy content exists.
- Original server unreachable
- Each copy is opened with requests to the original host blocked. A copy that still fetches from the site it copied is not a copy, so anything that only renders online scores as missing.
- Pixel scoring
- The rebuilt page is rendered at 1440×900 and compared to the live page with pixelmatch at a 0.1 threshold; the score is the share of matching pixels.
- Three runs, median kept
- Each site/tool pair runs three times and the median is reported, because animation and ad slots move between loads.
- Rows we lose stay in
- The table is written from the raw JSON by the build. Nothing is filtered, including the pages where a competitor ties or beats us.
Reproducing it
git clone https://github.com/bytepassperks/sitegrab
cd sitegrab && npm install
RUNS=3 npm run bench:rivals
The run needs monolith, wget and SingleFile's CLI on the path; the harness installs its own Chromium through Playwright. Numbers move by a few hundredths between machines and by more than that when a site ships a redesign.
What this does not prove
It is our benchmark, and it measures the thing we build for: rebuilding a browser-rendered page so it survives without its origin. It says nothing about crawl speed, whole-site mirroring depth, or archival formats like WARC — HTTrack and wget are built for mirroring and will out-crawl us. On pages with no fonts, no JavaScript and no external media, everything ties at or near 100% and the comparison is meaningless.
Questions
- Is the CopyAnySite benchmark independent?
- No — we wrote it and we run it, and it favours what we optimise for: offline-faithful rebuilds of browser-rendered pages. What makes it checkable rather than marketing is that the harness, the site list and the raw per-run numbers are all in the public repository, so anyone can run npm run bench:rivals and get their own figures.
- Which tools are compared?
- SingleFile (browser extension), monolith (CLI), and wget -p -k (CLI mirroring). All three are free and open source, and all three are run with the settings their own documentation recommends for a complete offline copy.
- Why does a competitor sometimes score 100%?
- On pages with no webfonts, no JavaScript rendering and no external media — a plain table layout, for instance — there is nothing hard to rebuild, so every serious tool lands at or near 100%. The differences only appear on animation-heavy marketing pages and theme-built sites.
- What do "remote" and "KB" mean in the table?
- Remote is the number of requests the finished copy still makes to the internet when opened; KB is the size of the saved file. A tool can buy a higher score with a much larger file, so both are reported next to the score rather than hidden.
Tool-by-tool comparisons · The free options, measured · Download the extension