speedlify2

Lighthouse lab metrics, Axe, and Chrome UX Report field data for a list of sites recorded and compared over time. Follow us on Mastodon or Bluesky.

Charts Compare Measurement runs Embed a score Open to Work

pulppdf.app

https://pulppdf.app/

93PERF 86A11Y 100BEST 92SEO ✗AXE –CWV

Ranks Overall #1,389 Built Awesome #942

Data from Oct 4, 2026, 7:14 PM UTC old Measured once a week · 7 runs since Aug 21, 2026

Elsewhere: PageSpeed Insights · Calibre · Treo · CrUX Vis · Tame the Bots · Scoring Calculator · Wayback Machine

Lab data is measured using Lighthouse, Mobile mode unless otherwise specified. Field data is reported from Chrome UX Report (using p75 measurements).

Stack

Eleventy 3.1.6 Built with Eleventy 3.1.6
Cloudflare Hosted by Cloudflare

Lighthouse Scores LAB Simulated

93
Performance
no change
86
Accessibility
no change
100
Best Practices
no change
92
SEO
no change

Metrics LAB

No field data: the Chrome UX Report is not being collected for this project, so every figure below is from the Lighthouse run.

Metric Lab Simulated
Value Change / range Trend
LCP CWV (estimate) Largest Contentful Paint 2.00 s good ↓ -53 ms (-2.6%) 1.40 s – 2.08 s
INP CWV Interaction to Next Paint — field only, no lab run can measure it n/a —
CLS CWV (estimate) Cumulative Layout Shift 0.137 needs work → no change 0.010 – 0.137
TBT Total Blocking Time 0 ms good → no change 0 ms – 157 ms
FCP First Contentful Paint 1.70 s good ↓ -53 ms (-3%) 1.21 s – 1.78 s
Speed Index 1.70 s good ↓ -929 ms (-35.4%) significant 1.21 s – 2.63 s
TTFB Time to First Byte 466 ms good ↓ -18 ms (-3.7%) 466 ms – 613 ms

LCP Subparts LAB Unthrottled

The subparts attribute LCP to your server, resource discovery, download, or rendering. Note that the Lab LCP shown above is a simulated throttled estimate.

element render delay 125 ms
time to first byte 20 ms
resource load duration 17 ms
resource load delay 9 ms

Page weight

Metric Value Change / range Trend
Page Weight 152 kB ↑ +10 B 151 kB – 152 kB
Requests 10 → no change 10 – 10
Third-party Weight 0 B → no change 0 B – 0 B
Third-party CPU 0 ms → no change 0 ms – 0 ms
Unused JS 0 B → no change 0 B – 0 B
Unused CSS 0 B → no change 0 B – 0 B

By resource type

Type Transfer Share Size Requests
image 35% 49.4 kB 3
font 28.3% 39.9 kB 2
script 17.5% 24.7 kB 1
stylesheet 11.6% 16.4 kB 1
document 7.1% 10.0 kB 1
other 0.5% 757 B 1
Total 152 kB 10

Page health

Metric Value Change / range Trend
Main Thread Work 597 ms ↑ +107 ms (+21.8%) 490 ms – 1.16 s
Long Tasks 1 ↓ -1 (-50%) significant 1 – 3
DOM Elements 357 → no change 357 – 357
Axe Violations Violating nodes from a full Axe CLI run (more than Lighthouse reports) 36 → no change 36 – 36
A11y Failures 4 → no change 4 – 4
A11y Failing Nodes 11 → no change 11 – 11

Main thread work

Task Time Share Duration Simulated
other 61% 364 ms
style layout 20% 121 ms
script evaluation 8% 46 ms
paint composite render 6% 34 ms
parse HTML 3% 19 ms
script parse compile 2% 13 ms
Total 597 ms

Axe violations axe-core 4.13.0, full rule set

36 violating nodes across 7 rules, 458 passing. This is a standalone Axe CLI run and is stricter than the subset Lighthouse already includes.

  • moderate region — All page content should be contained by landmarks 23 nodes
    Offending elements (5 of 23)
    1. .pt-16 > .text-center
      <div class="text-center">
    2. #app-screenshots > picture:nth-child(1)
      <picture class="eleventy-image">
    3. .gap-3.justify-center.mt-6
      <div class="mt-6 flex items-center justify-center gap-3">
    4. .py-20.sm\:py-28:nth-child(5) > .max-w-7xl.sm\:px-6.lg\:px-8 > .text-center
      <div class="text-center">
    5. .group.p-8.transition:nth-child(1) > h3
      <h3 class="text-lg font-semibold text-slate-900 dark:text-white">Your Files Stay Yours</h3>
  • serious dlitem — <dt> and <dd> elements must be contained by a <dl> 6 nodes
    Offending elements (5 of 6)
    1. .gap-4.flex:nth-child(1) > div:nth-child(2) > dt
      <dt class="text-base font-semibold text-slate-900 dark:text-white">Nothing gets uploaded</dt>
    2. .gap-4.flex:nth-child(1) > div:nth-child(2) > dd
      <dd class="mt-1 text-slate-600 dark:text-neutral-400">PulpPDF processes your PDFs locally on your CPU. No file ever touches a server — not ours, not anyone else's.</dd>
    3. .gap-4.flex:nth-child(2) > div:nth-child(2) > dt
      <dt class="text-base font-semibold text-slate-900 dark:text-white">No tracking, no account</dt>
    4. .gap-4.flex:nth-child(2) > div:nth-child(2) > dd
      <dd class="mt-1 text-slate-600 dark:text-neutral-400">No sign-up, no login, no analytics by default. We don't know what you compress and we don't want to.</dd>
    5. .gap-4.flex:nth-child(3) > div:nth-child(2) > dt
      <dt class="text-base font-semibold text-slate-900 dark:text-white">Safe for sensitive documents</dt>
  • serious color-contrast — Elements must meet minimum color contrast ratio thresholds 3 nodes
    Offending elements
    1. .sm\:justify-center > .btn--primary.btn[href$="download/"]
      <a href="/download/" class="btn btn--primary">
    2. .mt-8 > .btn--primary.btn[href$="download/"]
      <a href="/download/" class="btn btn--primary">
    3. .consent-banner > .justify-end.flex-wrap.gap-2 > .btn--primary.btn--sm[data-consent-action="accept"]
      <button type="button" class="btn btn--primary btn--sm" data-consent-action="accept">Accept&nbsp;all</button>
  • minor aria-allowed-role — ARIA role should be appropriate for the element 1 node
    Offending element
    1. .consent-banner
      <aside data-consent-banner="" class="consent-banner" role="dialog" aria-live="polite" aria-label="Cookie consent" style="display: flex;">
  • serious definition-list — <dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements 1 node
    Offending element
    1. dl
      <dl class="mt-10 space-y-8">
  • moderate landmark-unique — Landmarks should have a unique role or role/label/title (i.e. accessible name) combination 1 node
    Offending element
    1. .gap-1
      <nav class="flex flex-1 justify-end items-center gap-1">
  • serious link-in-text-block — Links must be distinguishable without relying on color 1 node
    Offending element
    1. a[href$="alex.zappa.dev"]
      <a href="https://alex.zappa.dev" class="no-underline hover:text-slate-900 dark:hover:text-neutral-200">Alex&nbsp;Zappa</a>

Accessibility failures 4 of 28 audits

  • dlitem — Definition list items are not wrapped in `<dl>` elements 6 nodes
  • color-contrast — Background and foreground colors do not have a sufficient contrast ratio. 3 nodes
  • definition-list — `<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements. 1 node
  • link-in-text-block — Links rely on color to be distinguishable. 1 node

SEO failures 1 of 10 audits

  • link-text — Links do not have descriptive text 1 item

Hygiene

HTTPS HSTS CSP Clickjacking protection Origin isolation Trusted Types bfcache h3

Measurement log

Every stored run for this URL, newest first.

When Scores PerfLCPCLSTBTWeight RunsSpreadBenchTook Archive
Oct 4, 2026, 7:14 PM UTC 93 2.00 s 0.137 0 ms 152 kB 3/3 ±0 2,472 -1% 23.7s Wayback
Sep 27, 2026, 5:32 PM UTC 93 2.05 s 0.137 0 ms 152 kB 3/3 ±0 2,494 0% 25.3s Wayback
Sep 20, 2026, 10:49 AM UTC 98 1.40 s 0.010 157 ms 151 kB 3/3 ±5 2,475 0% 23.5s Wayback
Sep 13, 2026, 9:05 AM UTC 93 2.01 s 0.137 0 ms 152 kB 3/3 ±0 2,977 +20% 22.2s Wayback
Sep 6, 2026, 5:40 AM UTC 93 2.04 s 0.137 0 ms 152 kB 3/3 ±0 2,905 +17% 23.4s Wayback
Aug 30, 2026, 1:12 AM UTC 93 2.08 s 0.137 0 ms 152 kB 3/3 ±1 3,241 +30% 25.1s Wayback
Aug 21, 2026, 2:39 PM UTC 93 2.06 s 0.137 0 ms 152 kB 3/3 ±0 2,469 -1% 23.9s Wayback

Embed this score

Use this web component to show pulppdf.app's scores on any website, updated whenever this instance re-measures. Don’t forget to bundle the speedlify2-score.js component code into your site!

<speedlify2-score speedlify-url="https://www.speedlify.dev/" url="https://pulppdf.app/"></speedlify2-score>