← ProofFetch

Benchmark

20 public pages, fixed and listed below: government pages, a PDF form, standards, docs, an encyclopedia article and a paper. ProofFetch fetches every one through the same extractor a paid request uses, once a day, and whenever someone presses the button. Every result stays here, failures included.

18 of 20
Pages extracted
0.3 s
Median time per page (P50)
2.2 s
Slowest 5% (P95)

Run 2026-10-28 08:05 UTC (first run, started when the benchmark went live). Times are measured inside ProofFetch, from the start of each fetch to the finished extraction, 5 pages at a time. They don't include the trip between you and ProofFetch.

PageResultTimeParagraphs
example.comExtracted0.0 s1
rfc-editor.org/rfc/rfc9110.htmlFailed: response_too_large0.2 s–
csrc.nist.gov/pubs/fips/180-4/upd1/finalExtracted0.7 s6
irs.gov/pub/irs-pdf/fw9.pdfExtracted (PDF)0.7 s53
irs.gov/tax-professionals/standard…Extracted0.4 s11
en.wikipedia.org/wiki/Web_scrapingExtracted0.4 s56
developer.mozilla.org/en-US/docs/Web/HTTP/Refere…Extracted0.3 s43
docs.python.org/3/library/json.htmlExtracted0.4 s49
gutenberg.org/ebooks/1342Extracted1.8 s6
arxiv.org/abs/1706.03762Extracted0.1 s8
federalreserve.gov/releases/h15/Extracted0.1 s28
eia.gov/petroleum/gasdiesel/Extracted0.4 s14
bls.gov/cpi/Extracted0.3 s15
usa.govExtracted2.2 s9
nps.gov/aboutus/entrance-fee-price…Extracted1.6 s37
dol.gov/agencies/whd/minimum-wageExtracted0.3 s9
w3.org/TR/WCAG21/Failed: upstream_http_4030.0 s–
nodejs.org/en/aboutExtracted0.3 s11
sec.gov/aboutExtracted0.2 s8
uscis.gov/g-1055Extracted0.2 s24

Free. One run at a time for everyone: if a run started in the last 15 minutes, you see that one. A run can take up to a minute.

Check it yourself

The raw data, every run with every page: /benchmark.json. To run the same list from your own machine against the free check (Node 18 or newer, saved as bench.mjs, then node bench.mjs). The free check allows 20 requests a minute from one address, so the list fits in one run. Your times include the trip to ProofFetch.

const urls = [
  "https://example.com/",
  "https://www.rfc-editor.org/rfc/rfc9110.html",
  "https://csrc.nist.gov/pubs/fips/180-4/upd1/final",
  "https://www.irs.gov/pub/irs-pdf/fw9.pdf",
  "https://www.irs.gov/tax-professionals/standard-mileage-rates",
  "https://en.wikipedia.org/wiki/Web_scraping",
  "https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status",
  "https://docs.python.org/3/library/json.html",
  "https://www.gutenberg.org/ebooks/1342",
  "https://arxiv.org/abs/1706.03762",
  "https://www.federalreserve.gov/releases/h15/",
  "https://www.eia.gov/petroleum/gasdiesel/",
  "https://www.bls.gov/cpi/",
  "https://www.usa.gov/",
  "https://www.nps.gov/aboutus/entrance-fee-prices.htm",
  "https://www.dol.gov/agencies/whd/minimum-wage",
  "https://www.w3.org/TR/WCAG21/",
  "https://nodejs.org/en/about",
  "https://www.sec.gov/about",
  "https://www.uscis.gov/g-1055"
];
for (const url of urls) {
  const started = Date.now();
  const r = await fetch('https://prooffetch.steellantern.com/v1/preflight', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ url }) });
  const body = await r.json();
  console.log(r.status, Date.now() - started, 'ms', body.document?.paragraphCount ?? body.error, url);
}

Questions: bryan@steellantern.com. Bryan answers, within one business day. Operated by Steel Lantern (steellantern.com).