progression.co
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
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
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 | 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.
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 | 328 kB | 97 ms | |
| Hubspot | 312 kB | 191 ms | |
| 119 kB | 52 ms | ||
| Google Optimize | 116 kB | 16 ms | |
| Cloudflare CDN | 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 nodesOffending elements (5 of 47)
-
.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> -
.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> -
.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> -
.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> -
.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 nodesOffending elements (5 of 15)
-
.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"> -
.grow.flex-col.overflow-hidden > .relative:nth-child(1)<section class="relative"> -
.grow.flex-col.overflow-hidden > .lg\:py-8<section class="px-4 lg:py-8"> -
.pb-8:nth-child(3)<section class="pb-8"> -
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 nodesOffending elements
-
.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"> -
.h-\[120px\]<div role="tabpanels" class="w-full h-[120px] lg:h-[300px] xl:h-[467px] overflow-hidden"> -
.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"> -
.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"> -
.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 nodesOffending elements
-
#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⦠-
#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⦠-
#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⦠-
#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 nodesOffending elements
-
ul[x-ref="tablist"] > li:nth-child(1)<li> -
ul[x-ref="tablist"] > li:nth-child(2)<li> -
ul[x-ref="tablist"] > li:nth-child(3)<li> -
ul[x-ref="tablist"] > li:nth-child(4)<li>
-
-
moderate
heading-orderβ Heading levels should only increase by one 2 nodesOffending elements
-
.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> -
.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 nodeOffending element
-
.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 nodeOffending element
-
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 nodeOffending element
-
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 nodeOffending element
-
.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
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, 10:46 PM UTC | 43 | 34.46 s | 0.072 | 480 ms | 7.97 MB | 3/3 | Β±21 | 2,909 +17% | 42.9s |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
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>