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

progression.co

https://progression.co/

43PERF 65A11Y 77BEST 82SEO βœ—AXE –CWV

Ranks Overall #1,776 Built Awesome #1,113

Data from Oct 4, 2026, 10:46 PM UTC old Measured once a week Β· 8 runs since Aug 21, 2026

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

Moved from https://progressionapp.com/.

History from the previous URL is included below, with the move on Sep 6, 2026. A step-change around that point is likely the change of address rather than a regression.

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

Stack

Uses PreactPreactAlpine.js 3.17.4Alpine.js 3.17.4
Netlify Hosted by Netlify

Lighthouse Scores LAB Simulated

43
Performance
↑ +11 (+34.4%)
65
Accessibility
no change
77
Best Practices
no change
82
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 34.46 s poor ↑ +1332 ms (+4%) 10.19 s – 38.00 s
INP CWV Interaction to Next Paint β€” field only, no lab run can measure it n/a —
CLS CWV (estimate) Cumulative Layout Shift 0.072 good ↑ +0.043 (+148.3%) 0.029 – 0.123
TBT Total Blocking Time 480 ms needs work ↓ -657 ms (-57.8%) significant 309 ms – 1.14 s
FCP First Contentful Paint 10.44 s poor ↑ +1202 ms (+13%) 4.80 s – 12.49 s
Speed Index 10.44 s poor ↑ +130 ms (+1.3%) 4.82 s – 12.49 s
TTFB Time to First Byte 628 ms good ↑ +23 ms (+3.8%) 605 ms – 628 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 1.19 s
resource load duration 97 ms
time to first byte 32 ms
resource load delay 18 ms

Page weight

Metric Value Change / range Trend
Page Weight 7.97 MB ↓ -12.1 kB (-0.2%) 7.90 MB – 8.04 MB
Requests 148 ↑ +2 (+1.4%) 145 – 149
Third-party Weight 1.12 MB ↓ -781.0 kB (-41.6%) 1.11 MB – 6.64 MB
Third-party CPU 441 ms ↓ -139 ms (-24%) significant 425 ms – 629 ms
Unused JS 654 kB ↑ +6.1 kB (+1%) 645 kB – 654 kB
Unused CSS 12.9 kB ↑ +20 B (+0.2%) 12.9 kB – 13.0 kB

By resource type

Type Transfer Share Size Requests
image 62.3% 4.97 MB 61
script 27.4% 2.18 MB 52
font 7.9% 628 kB 7
stylesheet 1.2% 99.6 kB 6
document 0.6% 47.1 kB 3
other 0.5% 40.8 kB 18
media 0.1% 5.5 kB 1
Total 7.97 MB 148

Third parties 17 entities

Entity Transfer Size Main thread Simulated
Google Tag Manager script 328 kB 97 ms
Hubspot script 312 kB 191 ms
Facebook script 119 kB 52 ms
Google Optimize script 116 kB 16 ms
Cloudflare CDN script 110 kB 14 ms
All 17 1.12 MB 441 ms

Page health

Metric Value Change / range Trend
Main Thread Work 3.47 s ↓ -1561 ms (-31%) significant 3.26 s – 5.03 s
Long Tasks 18 ↓ -2 (-10%) 16 – 20
DOM Elements 822 β†’ no change 820 – 822
Axe Violations Violating nodes from a full Axe CLI run (more than Lighthouse reports) 81 β†’ no change 81 – 82
A11y Failures 10 β†’ no change 10 – 10
A11y Failing Nodes 67 β†’ no change 67 – 67

Main thread work

Task Time Share Duration Simulated
script evaluation 54% 1.87 s
other 18% 638 ms
script parse compile 13% 450 ms
style layout 10% 338 ms
parse HTML 2% 64 ms
paint composite render 2% 62 ms
garbage collection 1% 44 ms
Total 3.47 s

Axe violations axe-core 4.13.0, full rule set

81 violating nodes across 10 rules, 939 passing. This is a standalone Axe CLI run and is stricter than the subset Lighthouse already includes.

  • serious color-contrast β€” Elements must meet minimum color contrast ratio thresholds 47 nodes
    Offending elements (5 of 47)
    1. .pb-8:nth-child(3) > .lg\:flex-row.flex-col-reverse.lg\:justify-between > .lg\:pt-0.lg\:w-1\/2.pt-8 > .max-w-\[500px\].xl\:max-w-\[600px\].px-8 > .semibold.text-green-500.pb-2
      <div class="text-green-500 semibold pb-2">Define</div>
    2. .pb-8:nth-child(6) > .lg\:flex-row-reverse.flex-col-reverse.lg\:justify-between > .lg\:pt-0.lg\:w-1\/2.pt-8 > .max-w-\[500px\].xl\:max-w-\[600px\].px-8 > .semibold.text-green-500.pb-2
      <div class="text-green-500 semibold pb-2">Expert onboarding</div>
    3. .pb-8:nth-child(7) > .lg\:flex-row.flex-col-reverse.lg\:justify-between > .lg\:pt-0.lg\:w-1\/2.pt-8 > .max-w-\[500px\].xl\:max-w-\[600px\].px-8 > .semibold.text-green-500.pb-2
      <div class="text-green-500 semibold pb-2">AI Assistant</div>
    4. .pb-8:nth-child(8) > .lg\:flex-row-reverse.flex-col-reverse.lg\:justify-between > .lg\:pt-0.lg\:w-1\/2.pt-8 > .max-w-\[500px\].xl\:max-w-\[600px\].px-8 > .semibold.text-green-500.pb-2
      <div class="text-green-500 semibold pb-2">Skill insight</div>
    5. .lg\:w-1\/3.md\:w-1\/2.w-full:nth-child(1) > .hover\:shadow-2xl.gap-3[href$="wins/"] > .leading-tight.body-text > .text-gray-400
      <p class="text-gray-400">Add wins and feedback quickly from anywhere.</p>
  • moderate region β€” All page content should be contained by landmarks 15 nodes
    Offending elements (5 of 15)
    1. .md\:pb-0
      <p class="text-white pb-2 md:pb-0 md:pr-4 text-center md:text-left md:text-lg grow-0 leading-snug">
    2. .grow.flex-col.overflow-hidden > .relative:nth-child(1)
      <section class="relative">
    3. .grow.flex-col.overflow-hidden > .lg\:py-8
      <section class="px-4 lg:py-8">
    4. .pb-8:nth-child(3)
      <section class="pb-8">
    5. ul[x-ref="tablist"]
      <ul x-ref="tablist" @keydown.right.preve...="$focus.wrap().next()" @keydown.home.preven...="$focus.first()" @keydown.page-up.pre...="$focus.first()" @keydown.left.preven...="$focus.wrap().prev()" @ke…
  • critical aria-roles β€” ARIA roles used must conform to valid values 5 nodes
    Offending elements
    1. .pb-8:nth-child(3) > .lg\:flex-row.flex-col-reverse.lg\:justify-between > .lg\:w-1\/2.items-center[role="tabpanels"]
      <div role="tabpanels" class="flex items-center lg:w-1/2 overflow-hidden">
    2. .h-\[120px\]
      <div role="tabpanels" class="w-full h-[120px] lg:h-[300px] xl:h-[467px] overflow-hidden">
    3. .lg\:pl-0lg\:rounded-tl-none
      <div role="tabpanels" class="flex items-center lg:w-1/2 lg:rounded-r-xl bg-gradient-to-br from-green-600 to-green-500 p-8 lg:p-16 lg:pl-0lg:rounded-tl-none lg:rounded-tr-none overflow-hidden">
    4. .lg\:rounded-l-xl
      <div role="tabpanels" class="flex items-center lg:w-1/2 lg:rounded-l-xl bg-gradient-to-br from-green-600 to-green-500 p-8 lg:p-16 lg:pr-0 overflow-hidden">
    5. .lg\:pl-0
      <div role="tabpanels" class="flex items-center lg:w-1/2 lg:rounded-r-xl bg-gradient-to-br from-green-600 to-green-500 p-8 lg:p-16 lg:pl-0 overflow-hidden">
  • critical aria-required-parent β€” Certain ARIA roles must be contained by particular parents 4 nodes
    Offending elements
    1. #tab-2-1
      <button :id="$id('tab', whichChil..." @click="select($el.id)" @mousedown.prevent="" @focus="select($el.id)" type="button" :tabindex="isSelected($el.id) ?..." :aria-selected="isSelected($el.id)" :clas…
    2. #tab-2-2
      <button :id="$id('tab', whichChil..." @click="select($el.id)" @mousedown.prevent="" @focus="select($el.id)" type="button" :tabindex="isSelected($el.id) ?..." :aria-selected="isSelected($el.id)" :clas…
    3. #tab-2-3
      <button :id="$id('tab', whichChil..." @click="select($el.id)" @mousedown.prevent="" @focus="select($el.id)" type="button" :tabindex="isSelected($el.id) ?..." :aria-selected="isSelected($el.id)" :clas…
    4. #tab-2-4
      <button :id="$id('tab', whichChil..." @click="select($el.id)" @mousedown.prevent="" @focus="select($el.id)" type="button" :tabindex="isSelected($el.id) ?..." :aria-selected="isSelected($el.id)" :clas…
  • serious listitem β€” <li> elements must be contained in a <ul> or <ol> 4 nodes
    Offending elements
    1. ul[x-ref="tablist"] > li:nth-child(1)
      <li>
    2. ul[x-ref="tablist"] > li:nth-child(2)
      <li>
    3. ul[x-ref="tablist"] > li:nth-child(3)
      <li>
    4. ul[x-ref="tablist"] > li:nth-child(4)
      <li>
  • moderate heading-order β€” Heading levels should only increase by one 2 nodes
    Offending elements
    1. .pb-8:nth-child(3) > .lg\:flex-row.flex-col-reverse.lg\:justify-between > .lg\:pt-0.lg\:w-1\/2.pt-8 > .max-w-\[500px\].xl\:max-w-\[600px\].px-8 > .heading-xlarge.lg\:pb-8
      <h3 class="heading-xlarge pb-4 lg:pb-8">Build career paths, fast</h3>
    2. .lg\:w-1\/4.md\:pt-2.pt-5:nth-child(1) > h4
      <h4 class="text-gray-500">Product</h4>
  • serious aria-dialog-name β€” ARIA dialog and alertdialog nodes should have an accessible name 1 node
    Offending element
    1. .quick-search
      <div class="quick-search relative z-50" role="dialog" aria-modal="true">
  • critical aria-required-children β€” Certain ARIA roles must contain particular children 1 node
    Offending element
    1. ul[x-ref="tablist"]
      <ul x-ref="tablist" @keydown.right.preve...="$focus.wrap().next()" @keydown.home.preven...="$focus.first()" @keydown.page-up.pre...="$focus.first()" @keydown.left.preven...="$focus.wrap().prev()" @ke…
  • critical image-alt β€” Images must have alternative text 1 node
    Offending element
    1. img:nth-child(24)
      <img src="https://tracking.g2crowd.com/attribution_tracking/conversions/1009490.gif?e=">
  • serious link-name β€” Links must have discernible text 1 node
    Offending element
    1. .bold
      <a href="/" class="bg-contain bg-no-repeat grow bold text-lg duration-300 ease-in-out flex items-center">

Accessibility failures 10 of 31 audits

  • color-contrast β€” Background and foreground colors do not have a sufficient contrast ratio. 47 nodes
  • aria-roles β€” `[role]` values are not valid 5 nodes
  • aria-required-parent β€” `[role]`s are not contained by their required parent element 4 nodes
  • listitem β€” List items (`<li>`) are not contained within `<ul>`, `<ol>` or `<menu>` parent elements. 4 nodes
  • heading-order β€” Heading elements are not in a sequentially-descending order 2 nodes
  • aria-dialog-name β€” Elements with `role="dialog"` or `role="alertdialog"` do not have accessible names. 1 node
  • aria-required-children β€” Elements with an ARIA `[role]` that require children to contain a specific `[role]` are missing some or all of those required children. 1 node
  • image-alt β€” Image elements do not have `[alt]` attributes 1 node
  • link-name β€” Links do not have a discernible name 1 node
  • target-size β€” Touch targets do not have sufficient size or spacing. 1 node

Best Practices failures 2 of 20 audits

  • third-party-cookies β€” Uses third-party cookies 17 items
  • inspector-issues β€” Issues were logged in the `Issues` panel in Chrome Devtools 1 item

SEO failures 2 of 8 audits

  • link-text β€” Links do not have descriptive text 1 item
  • image-alt β€” Image elements do not have `[alt]` attributes 1 item

Hygiene

HTTPS HSTS CSP Clickjacking protection Origin isolation Trusted Types bfcache h2

Measurement log

Every stored run for this URL, newest first.

When Scores PerfLCPCLSTBTWeight RunsSpreadBenchTook Archive
Oct 4, 2026, 10:46 PM UTC 43 34.46 s 0.072 480 ms 7.97 MB 3/3 Β±21 2,909 +17% 42.9s Wayback
Sep 27, 2026, 8:56 PM UTC 32 33.13 s 0.029 1.14 s 7.99 MB 3/3 Β±6 2,494 0% 45.4s Wayback
Sep 20, 2026, 5:58 PM UTC 41 10.29 s 0.029 1.01 s 7.97 MB 3/3 Β±13 2,463 -1% 49.6s Wayback
Sep 13, 2026, 5:17 PM UTC 41 11.19 s 0.029 958 ms 7.97 MB 3/3 Β±12 2,495 0% 45.7s Wayback
Sep 6, 2026, 1:56 PM UTC 38 10.19 s 0.029 1.14 s 8.03 MB 3/3 Β±14 2,480 0% 46.5s Wayback
Sep 6, 2026, 5:39 AM UTC old URL 48 38.00 s 0.072 309 ms 8.04 MB 3/3 Β±4 2,890 +16% 39.3s Wayback
Aug 30, 2026, 1:12 AM UTC old URL 43 12.33 s 0.123 550 ms 8.00 MB 3/3 Β±9 3,166 +27% 40.4s Wayback
Aug 21, 2026, 2:39 PM UTC old URL 40 10.94 s 0.029 930 ms 7.90 MB 3/3 Β±1 2,495 0% 42.6s Wayback

Embed this score

Use this web component to show progression.co'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://progression.co/"></speedlify2-score>