pulppdf.app
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
Lighthouse Scores LAB Simulated
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.
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 nodesOffending elements (5 of 23)
-
.pt-16 > .text-center<div class="text-center"> -
#app-screenshots > picture:nth-child(1)<picture class="eleventy-image"> -
.gap-3.justify-center.mt-6<div class="mt-6 flex items-center justify-center gap-3"> -
.py-20.sm\:py-28:nth-child(5) > .max-w-7xl.sm\:px-6.lg\:px-8 > .text-center<div class="text-center"> -
.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 nodesOffending elements (5 of 6)
-
.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> -
.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> -
.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> -
.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> -
.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 nodesOffending elements
-
.sm\:justify-center > .btn--primary.btn[href$="download/"]<a href="/download/" class="btn btn--primary"> -
.mt-8 > .btn--primary.btn[href$="download/"]<a href="/download/" class="btn btn--primary"> -
.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 all</button>
-
-
minor
aria-allowed-role— ARIA role should be appropriate for the element 1 nodeOffending element
-
.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 nodeOffending element
-
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 nodeOffending element
-
.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 nodeOffending element
-
a[href$="alex.zappa.dev"]<a href="https://alex.zappa.dev" class="no-underline hover:text-slate-900 dark:hover:text-neutral-200">Alex 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
Measurement log
Every stored run for this URL, newest first.
| When | Scores | Perf | LCP | CLS | TBT | Weight | Runs | Spread | Bench | Took | 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
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>