Performance
· 15 checks — Lighthouse + waterfall + sustainability rolled into one auditable list.Performance-focused optimization plan with CWV assessment, top offenders, and time estimates
First Contentful Paint First Contentful Paint — how long until the browser renders the first piece of content. Under 1.8s is good.
1.24 s
Largest Contentful Paint Largest Contentful Paint — how long until the largest visible element loads. Under 2.5s is good.
2.42 s
Total Blocking Time Total Blocking Time — total time the main thread was blocked, preventing user input. Under 200ms is good.
15 ms
Cumulative Layout Shift Cumulative Layout Shift — measures visual stability. How much the page layout shifts during loading. Under 0.1 is good.
0.012
Speed Index Speed Index — how quickly content is visually displayed during load. Under 3.4s is good.
1.65 s
Time to Interactive Time to Interactive — how long until the page is fully interactive and responds to user input. Under 3.8s is good.
4.16 s
Page Load Progression
FPage Weight BudgetAction3.1 MB transferred, 237 requestsFIX
Large JavaScript bundles delay interactivity. Split code by route or defer non-critical scripts.
JavaScript bundle is large — code-split routes and lazy-load off-screen components to defer.
Source: web.dev
Subset fonts to include only used characters, or switch to system font stacks.
Font payload is large — subset to used glyphs only, or fall back to system fonts (zero load time).
Source: web.dev font loading
Each request adds latency. Bundle small files, use sprites, or eliminate unnecessary requests.
High HTTP request count — bundling, sprite-ing, and HTTP/2 server push can reduce per-request overhead.
Source: web.dev
DThird-Party ImpactAction100% third-party, 0 ms blockingFIX
FJS Execution CostAction4319ms total JS executionFIX
Main Thread Breakdown
| Script | Total | Scripting | Parse/Compile | Party |
|---|---|---|---|---|
| https://www.bamboohr.com/ | 3398ms | 6ms | 0ms | 3rd |
| Unattributable | 383ms | 64ms | 0ms | 3rd |
| https://spoon.thebrightforks.com/i/47dc90ad568b2c4fffe90ca4469d6479.js | 141ms | 107ms | 3ms | 3rd |
| https://www.bamboohr.com/metrics/ | 108ms | 60ms | 47ms | 3rd |
| https://knive.thebrightforks.com/ct?id=27244&url=https%3A%2F%2Fwww.bamboohr.com%2F&sf=0&tpi=&ch=cheq4ppc&uvid=&tsf=0&tsfmi=&tsfu=&cb=1776819588544&hl=2&op=0&ag=3284844713&rand=03691620529162811916109595211812539120908105958985197208100020752111722022241127000790111891&fs=1350x940&fst=1350x940&np=linux%20x86_64&nv=google%20inc.&ref=&ss=800x600&nc=0&at=&di=W1siZWYiLDEyNDhdLFsiYWJuY2giLDIwXSxbLTMsIltcImludGVybmFsLXBkZi12aWV3ZXJcIixcImludGVybmFsLXBkZi12aWV3ZXJcIixcImludGVybmFsLXBkZi12aWV3ZXJcIixcImludGVybmFsLXBkZi12aWV3ZXJcIixcImludGVybmFsLXBkZi12aWV3ZXJcIl0iXSxbLTExLCJ7XCJ0XCI6XCJcIixcIm1cIjpbXCJkZXNjcmlwdGlvblwiLFwib2c6dGl0bGVcIixcIm9nOmRlc2NyaXB0aW9uXCIsXCJ0d2l0dGVyOnRpdGxlXCIsXCJ0d2l0dGVyOmRlc2NyaXB0aW9uXCJdfSJdLFstMTIsIm51bGwiXSxbLTIyLCJbXCJuXCIsXCJuXCJdIl0sWy0yNywiWzAsMCwwLFwiNGdcIixudWxsXSJdLFstMzMsIi0iXSxbLTU2LCJsYW5kc2NhcGUtcHJpbWFyeSJdLFstNTgsIi0iXSxbLTYyLCI4MCJdLFstNjUsIi0iXSxbLTc0LCIwLDAiXSxbLTE5LCJbMTAsMTAsMTAsMTAsMCwwLDEsMjQsMjQsXCItXCIsODAwLDYwMCw4MDAsNjAwLDc4MCw1ODAsMTM1MCw5NDAsMCwwLDAsMCxcIi1cIixcIi1cIiwxMzUwLDk0MCwwXSJdLFstMjAsIi0iXSxbLTUsIi0iXSxbLTYwLDIwN10sWy0yNCwiW10iXSxbLTM1LCJbMTc3NjgxOTU4ODQ2MCwwXSJdLFstNDAsIjMzIl0sWy0yLCI2LFNjakFSSUNDUkFDRE1vQXNwbGNFUndaRkN2S0RqZ2dDQ0RJQWlDUVFXbnE5ZnJnQmRFVVFRQkZhK0NFMWRSSEpBWkJBa3l6MlE2U1U3T09Ydm83cHJlYi9YZSsyUW5CRVRmL2IiXSxbLTcwLCItIl0sWy03MSwiYTAxMTAwMTAxMDAxMDAxMDEwMDAxMDEwMDExMTExMDEwMDAwMTAiXSxbLTQ2LCIwIl0sWy00NywiVVRDLGVuLVVTLGxhdG4sZ3JlZ29yeSJdLFstNDksIi0iXSxbLTMxLCJmYWxzZSJdLFstMzksIltcIjIwMDMwMTA3XCIsMixcIkdlY2tvXCIsXCJOZXRzY2FwZVwiLFwiTW96aWxsYVwiLG51bGwsbnVsbCx0cnVlLDgsZmFsc2UsbnVsbCw1LHRydWUsdHJ1ZSxudWxsLDAsdHJ1ZSx0cnVlLGZhbHNlLHRydWVdIl0sWy01MiwiLSJdLFstMTQsIi0iXSxbLTE1LCItIl0sWy02NCwiWzAsXCJtYWNPU1wiLFt7XCJiXCI6XCJDaHJvbWl1bVwiLFwidlwiOlwiMTQ3XCJ9LHtcImJcIjpcIkdvb2dsZSBDaHJvbWVcIixcInZcIjpcIjE0N1wifV1dIl0sWy0yMywiKyJdLFstNjcsIi0iXSxbLTY4LCItIl0sWy02OSwiTGludXggeDg2XzY0fEdvb2dsZSBJbmMufDh8NHxtYWNPU3wwIl0sWy0zMiwiMCJdLFstMzcsIi0xMDktNjYtNzAtIl0sWy0zOCwiYywtMSwtMSw0ODksMCwxLDAsMCwzOSw0NCwtMSwwLDExNTIsMTE1MiwxMjU0LDEyNTQiXSxbMTIsIntcImN0eFwiOlwid2ViZ2xcIixcInZcIjpcImdvb2dsZSBpbmMuIChnb29nbGUpXCIsXCJyXCI6XCJhbmdsZSAoZ29vZ2xlLCB2dWxrYW4gMS4zLjAgKHN3aWZ0c2hhZGVyIGRldmljZSAoc3ViemVybykgKDB4MDAwMGMwZGUpKSwgc3dpZnRzaGFkZXIgZHJpdmVyKVwiLFwic2x2XCI6XCJ3ZWJnbCBnbHNsIGVzIDEuMCAob3BlbmdsIGVzIGdsc2wgZXMgMS4wIGNocm9taXVtKVwiLFwiZ3ZlclwiOlwid2ViZ2wgMS4wIChvcGVuZ2wgZXMgMi4wIGNocm9taXVtKVwiLFwiZ3ZlblwiOlwid2Via2l0XCIsXCJiZW5cIjo3LFwid2dsXCI6MSxcImdyZW5cIjpcIndlYmtpdCB3ZWJnbFwiLFwic2VmXCI6MTkzMDgyMDI3OSxcInNlY1wiOlwiXCJ9Il0sWy01MCwiLSJdLFstNTEsIi0iXSxbLTksIisiXSxbLTE2LCIwIl0sWy0yMSwiLSJdLFstMjksIi0iXSxbLTM0LCItIl0sWy0zNiwiW1wiNC8zXCIsXCI0LzNcIl0iXSxbLTQsIi0iXSxbLTQ4LCJbXCItXCIsXCItXCIsXCItXCIsXCItXCIsXCItXCJdIl0sWy01OSwiZGVmYXVsdCJdLFstMTcsIjQiXSxbLTE4LCJbMCwwLDAsMV0iXSxbLTc1LCJ7fS5zb21lRnVuYyBpcyBub3QgYSBmdW5jdGlvbiJdLFstMSwiLSJdLFstNDIsIjg4MzM5OTAxNiJdLFstNTMsIjAwMSJdLFstMTAsIi0iXSxbLTU1LCIxIl0sWy01NywiV0UwWmVFdExXRUFYZkZ3WkVWRk5UVWxLQXhZV1NrbFdWbGNYVFZGY1cwdFFYbEZOWDFaTFVrb1hXbFpVRmxBV0RRNWRXZ0FKV0YwTUR3RmJDMW9OWDE5ZlhBQUpXbGdORFE4QVhROE5EZ0FYVTBvRENBTVBDQTBMRGhBVldFMFpTeGtSVVUxTlNVb0RGaFpLU1ZaV1Z4ZE5VVnhiUzFCZVVVMWZWa3RTU2hkYVZsUVdVQllORGwxYUFBbFlYUXdQQVZzTFdnMWZYMTljQUFsYVdBME5Ed0JkRHcwT0FCZFRTZ01JQXc4UERnQUFFQT09Il0sWy0yOCwiZW4tVVMsZW4iXSxbLTcyLCJFeFU9Il0sWy00MSwiLSJdLFstNDMsIjAwMDAwMDAxMDEwMDAwMDEwMDExMTAxMTAxMTAxMTAxMDAwMDAxMDExMDEiXSxbLTQ1LCI2MjAsMCwwLDAsMCwwLDAsMCw2NDgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwIl0sWy01NCwie1wiaFwiOltcIl8zXCIsXCIyODcyODk5MzIwXCJdLFwiZFwiOltdLFwiYlwiOltcIl8xXCIsXCIzOTA2NjgzNTQ4XCJdLFwic1wiOjF9Il0sWy0xMywiLSJdLFstNjEsIntcIndnc2xcIjpcIjg7cGFja2VkXzR4OF9pbnRlZ2VyX2RvdF9wcm9kdWN0O3N1Ymdyb3VwX3VuaWZvcm1pdHk7c3ViZ3JvdXBfaWQ7cmVhZG9ubHlfYW5kX3JlYWR3cml0ZV9zdG9yYWdlX3RleHR1cmVzO3VucmVzdHJpY3RlZF9wb2ludGVyX3BhcmFtZXRlcnM7cG9pbnRlcl9jb21wb3NpdGVfYWNjZXNzO3RleHR1cmVfYW5kX3NhbXBsZXJfbGV0O3VuaWZvcm1fYnVmZmVyX3N0YW5kYXJkX2xheW91dDtcIixcInBjZlwiOlwicmdiYTh1bm9ybVwifSJdLFsiYm5jaCIsOTldLFstMjYsIntcInRqaHNcIjo0MjkxNzExMixcInVqaHNcIjoxMzc1ODQwOCxcImpoc2xcIjoyMjQ4MTQ2OTQ0fSJdLFstNDQsIjAsMCwwLDUiXSxbLTYsIntcIndcIjpbXCIwXCIsXCJnb29nbGVfdGFnc19maXJzdF9wYXJ0eVwiLFwiZGF0YUxheWVyXCIsXCJtZDVcIixcIm9uQ2hlcVJlc3BvbnNlXCIsXCJjYWNoZUNoZXFEYXRhV2hlblJlYWR5XCIsXCJyZXN0b3JlQ2hlcURhdGFcIixcImdldENoZXFEYXRhRnJvbURhdGFMYXllclwiLFwiZ29vZ2xlX3RhZ19tYW5hZ2VyXCIsXCJwb3N0c2NyaWJlXCIsXCJnb29nbGVfdGFnX21hbmFnZXJfZXh0ZXJuYWxcIixcImpzcGJHZXRUeXBlTmFtZVwiLFwiZ29vZ2xlX3RhZ19kYXRhXCIsXCJhZGRDb25zZW50TGlzdGVuZXJUQVwiLFwiaGx4XCIsXCJfX2NmQmVhY29uXCIsXCJ0cnVzdGVcIixcIlBSRUZfTUdSX0FQSV9ERUJVR1wiLFwiUHJpdmFjeU1hbmFnZXJBUElcIixcIlRSVVNURV9DTUFQSV9ERUJVR1wiLFwiZ2VvTG9jYXRpb25cIixcInRyYWNraW5nUXVldWVcIixcImFsbG95XCIsXCJjaGVxQ29uc2VudEFsbG93ZWRcIixcIl9fY3RjZ19jdF8yNzI0NF9leGVjXCJdLFwiblwiOltdLFwiZFwiOltdfSJdLFstNywiLSJdLFstOCwiLSJdLFstNjMsIjE0Il0sWy0yNSwiLSJdLFstMzAsIltcInZcIiwwXSJdLFstNzMsIkVoUT0iXSxbLTY2LCJnZW9sb2NhdGlvbixjaHVhZnVsbHZlcnNpb25saXN0LGNyb3Nzb3JpZ2luaXNvbGF0ZWQsc2NyZWVud2FrZWxvY2ssb25kZXZpY2VzcGVlY2hyZWNvZ25pdGlvbix0cmFuc2xhdG9yLHB1YmxpY2tleWNyZWRlbnRpYWxzZ2V0LHNoYXJlZHN0b3JhZ2VzZWxlY3R1cmwsY2h1YWFyY2gsY29tcHV0ZXByZXNzdXJlLGNocHJlZmVyc3JlZHVjZWR0cmFuc3BhcmVuY3ksZGVmZXJyZWRmZXRjaCx1c2IsY2hzYXZlZGF0YSxwdWJsaWNrZXljcmVkZW50aWFsc2NyZWF0ZSxzaGFyZWRzdG9yYWdlLGRlZmVycmVkZmV0Y2htaW5pbWFsLHJ1bmFkYXVjdGlvbixjaGRvd25saW5rLGNodWFmb3JtZmFjdG9ycyxvdHBjcmVkZW50aWFscyxwYXltZW50LGNodWEsY2h1YW1vZGVsLGNoZWN0LGF1dG9wbGF5LGNhbWVyYSxsYW5ndWFnZWRldGVjdG9yLHByaXZhdGVzdGF0ZXRva2VuaXNzdWFuY2UsZGlnaXRhbGNyZWRlbnRpYWxzZ2V0LGFjY2VsZXJvbWV0ZXIsY2h1YXBsYXRmb3JtdmVyc2lvbixpZGxlZGV0ZWN0aW9uLHByaXZhdGVhZ2dyZWdhdGlvbixpbnRlcmVzdGNvaG9ydCxjaHZpZXdwb3J0aGVpZ2h0LGNhcHR1cmVkc3VyZmFjZWNvbnRyb2wsbG9jYWxmb250cyxjaHVhcGxhdGZvcm0sbWlkaSxjaHVhZnVsbHZlcnNpb24seHJzcGF0aWFsdHJhY2tpbmcsY2xpcGJvYXJkcmVhZCxnYW1lcGFkLGRpc3BsYXljYXB0dXJlLGtleWJvYXJkbWFwLGpvaW5hZGludGVyZXN0Z3JvdXAsYXJpYW5vdGlmeSxsb2NhbG5ldHdvcmssY2h1YWhpZ2hlbnRyb3B5dmFsdWVzLGNod2lkdGgsY2hwcmVmZXJzcmVkdWNlZG1vdGlvbixicm93c2luZ3RvcGljcyxlbmNyeXB0ZWRtZWRpYSxsb2NhbG5ldHdvcmthY2Nlc3MsZ3lyb3Njb3BlLHNlcmlhbCxjaHJ0dCxjaHVhbW9iaWxlLHdpbmRvd21hbmFnZW1lbnQsdW5sb2FkLGNoZHByLGNocHJlZmVyc2NvbG9yc2NoZW1lLGNodWF3b3c2NCxhdHRyaWJ1dGlvbnJlcG9ydGluZyxmdWxsc2NyZWVuLGlkZW50aXR5Y3JlZGVudGlhbHNnZXQscHJpdmF0ZXN0YXRldG9rZW5yZWRlbXB0aW9uLGhpZCxzdW1tYXJpemVyLGNodWFiaXRuZXNzLHN0b3JhZ2VhY2Nlc3Msc3luY3hocixjaGRldmljZW1lbW9yeSxjaHZpZXdwb3J0d2lkdGgscGljdHVyZWlucGljdHVyZSxtYWduZXRvbWV0ZXIsbG9vcGJhY2tuZXR3b3JrLGNsaXBib2FyZHdyaXRlLG1pY3JvcGhvbmUiXSxbImRkYiIsIjAsNiwwLDAsMCwxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMiw5LDAsMywxLDEsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMCwxNCwxLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCJdLFsiY2IiLCIwLDAsMCwwLDAsMCwwLDAsMCwxLDMsMSw4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDAsMSwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsNiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAiXV0%3D&dep=0&pre=0&sdd=&cri=mflZVVxQ5Q&pto=1316&ver=65&gac=-&mei=&ap=&fe=1&duid=1.1776819588.JXEzvzN4SmkcXtrm&suid=1.1776819588.b4z1hv3NSOTOr4gs&tuid=1.1776819588.rUzY4CWdP3GbPGlV&sid=1.1776819588548.8tWa6kuwV3W7j2J5&fbc=->m=WyJ0cnVzdGFyYy1jY20tcmVhZHkiLCJDb25zZW50IENoYW5nZWQiXQ%3D%3D&it=38%2C1115%2C57&fbcl=-&gacl=-&gacsd=-&rtic=-&rtict=-&bgc=-&spa=1&urid=0&ab=jx.2.0%3B&sck=-&io=aGA2Oi17bmY2Og%3D%3D | 108ms | 98ms | 0ms | 3rd |
| https://www.bamboohr.com/blocks/logos/logos.js | 107ms | 66ms | 0ms | 3rd |
| https://form-renderer.trustarc.com/browser/client.js | 73ms | 46ms | 27ms | 3rd |
FJS BundlesAction55 scripts, 445 KB unusedFIX
Downloaded but never executed on this page.
| Script | Size | Unused | Minified | Party |
|---|---|---|---|---|
| https://form-renderer.trustarc.com/browser/client.js | 412 KB | 306 KB (75%) | ✓ | 3rd |
| https://www.bamboohr.com/metrics/ | 185 KB | 84 KB (46%) | ✓ | 3rd |
| https://connect.facebook.net/en_US/fbevents.js | 97 KB | 33 KB (34%) | ✓ | 3rd |
| https://www.bamboohr.com/blocks/form/form.js | 24 KB | 22 KB (94%) | ✗ | 3rd |
| https://www.bamboohr.com/blocks/multi-hero/multi-hero.js | 2 KB | — | ✓ | 3rd |
| https://www.bamboohr.com/blocks/tabs/tabs.js | 9 KB | — | ✗ | 3rd |
| https://www.bamboohr.com/scripts/lib-analytics.js | 8 KB | — | ✗ | 3rd |
| https://www.bamboohr.com/scripts/_classes/analytics-queue.js | 1 KB | — | ✓ | 3rd |
| https://www.bamboohr.com/scripts/scroll-tracking.js | 1 KB | — | ✓ | 3rd |
| https://www.bamboohr.com/scripts/data-testid.js | 4 KB | — | ✓ | 3rd |
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
Consider code splitting or tree shaking to reduce unused code.
This bundle has high unused code — code-split or tree-shake to ship only what executes.
Source: web.dev / Lighthouse coverage
FPage Weight InventoryAction237 resources · 3.1 MB · 445 KB savings availableFIX
~445.0 KiB of savings available
| # | Resource | Type | Size | Cache | Unused | 3rd party | Issues |
|---|---|---|---|---|---|---|---|
| — | — | ||||||
| 237 resources | 3.1 MiB | ||||||
FHTTP CachingActionNo cache headersFIX
No Cache-Control header
Adding a Cache-Control header can significantly improve repeat-visit performance.
CImage OptimizationAction97 images, 0 KB saveableREVIEW
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
Set explicit width and height to prevent CLS.
Image without explicit width/height — browser can't reserve space; CLS jumps when image loads.
Source: web.dev / Core Web Vitals
CGreen HostingActionWhether the site is served from green-energy infrastructureREVIEW
Green Hosting
No green hosting detected
A+Text CompressionAll text resources are compressedPASS
A+Font Loading6 fonts (467 KB)PASS
Web fonts
6
467 KB total
Render-blocking
0
of 6
Dominant font-display
swap
Most common across fonts
Font loading timeline
- Convert to woff2 for ~30% smaller file size
- Subset this font — over 100 KB suggests Latin Extended or full glyph coverage that most pages don't need
Optimization checklist
- Preload critical fonts (priority=high)
- Use woff2 format for all fonts
- Set font-display to swap, optional, or fallback
- Subset large fonts (≤100 KB each)
Fixing the unchecked items could save ~194 KB and ~388 ms
A+Resource CachingAll resources properly cachedPASS
A+Critical Rendering PathNo render-blocking resourcesPASS
A+Resource HintsNo optimization neededPASS
Network Waterfall237 requests over 31912msINFO
Third-Party Script CostPer-script blocking time, transfer cost, and cache headersINFO
| Script | Category | Execution | Transfer | Unused | Monthly Cost | Verdict |
|---|---|---|---|---|---|---|
www.bamboohr.com www.bamboohr.com | Other | 3398ms | 13 KB | — | €37/mo | Costly |
Unattributable Unattributable | Other | 383ms | 0 KB | — | €4/mo | Costly |
spoon.thebrightforks.com spoon.thebrightforks.com | Other | 141ms | 45 KB | — | €2/mo | Optional |
www.bamboohr.com www.bamboohr.com | Other | 108ms | 185 KB | 46% | €1/mo | Optional |
knive.thebrightforks.com knive.thebrightforks.com | Other | 108ms | 2 KB | — | €1/mo | Optional |
www.bamboohr.com www.bamboohr.com | Other | 107ms | 5 KB | — | €1/mo | Optional |
form-renderer.trustarc.com form-renderer.trustarc.com | Other | 73ms | 412 KB | 75% | €1/mo | Optional |
These scripts may cost more than they're worth
- www.bamboohr.com adds 3398ms and costs ~€37/month
- Unattributable adds 383ms and costs ~€4/month
100% of JavaScript execution time is spent on third-party scripts. Consider auditing which scripts are essential.
When third-party JS execution time exceeds your own, performance gains from frontend work are capped by code you don't own.
Learn more ▾ ▴
Every millisecond of third-party JS competes with your own for main-thread time. If their share is bigger than yours, optimization on your code base barely moves the needle. Audit, defer, or remove third-parties before further frontend optimization. Use Lighthouse's third-party audit to identify the worst offenders.
Source: web.dev
www.bamboohr.com takes 3398ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
Unattributable takes 383ms of CPU time. Consider loading it asynchronously or replacing it with a lighter alternative.
This script has high main-thread execution time — optimize hot paths or defer.
Source: web.dev
75% of form-renderer.trustarc.com's code is unused. The script may be loading features you don't use.
Bundle has high unused-code ratio — tree-shaking and route-splitting recover the wasted bytes.
Source: web.dev