Analyze your website's performance with Core Web Vitals, actionable code snippets, and detailed optimization recommendations.
Try these examples:
11/9/2025, 5:59:05 am UTC
2,108ms
Good
2ms
Good (est)
1.15
Poor (est)
17ms
Good
99ms
Good
Users see content quickly - minimal bounce risk
Interactive elements respond immediately
Unstable layout - users may click wrong elements
Needs Work
2,108ms
Complete page load
10.6 MB
103
Preload critical stylesheets to prevent render blocking
200-500ms faster First Contentful Paint
<!-- Preload critical CSS for faster rendering -->
<link rel="preload" href="https://github.githubassets.com/assets/primer-primitives-15839d47b75d.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-15839d47b75d.css"></noscript>
Load large CSS files asynchronously to prevent render blocking
100-300ms faster page rendering
<!-- Load non-critical CSS asynchronously -->
<script>
function loadCSS(href) {
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = href;
document.head.appendChild(link);
}
loadCSS('https://github.githubassets.com/assets/light-8e973f836952.css');
loadCSS('https://github.githubassets.com/assets/light_high_contrast-34b642d57214.css');
loadCSS('https://github.githubassets.com/assets/dark-4bce7af39e21.css');
loadCSS('https://github.githubassets.com/assets/dark_high_contrast-ad512d3e2f3b.css');
loadCSS('https://github.githubassets.com/assets/primer-a5c85403da8c.css');
loadCSS('https://github.githubassets.com/assets/global-abde950b7df1.css');
loadCSS('https://github.githubassets.com/assets/github-490b3f68bf33.css');
loadCSS('https://github.githubassets.com/assets/site-7908d55f3275.css');
loadCSS('https://github.githubassets.com/assets/landing-pages-3d291f2f5b32.css');
loadCSS('https://github.githubassets.com/assets/home-99f0f34e57e5.css');
loadCSS('https://github.githubassets.com/assets/primer-react.53f37102c46fd176a96b.module.css');
loadCSS('https://github.githubassets.com/assets/landing-pages.135ee2774881c3ae04db.module.css');
</script>
Use WebP format and lazy loading for large images
30-70% smaller image file sizes
<!-- Responsive images with modern formats -->
<picture>
<source srcset="images/accordion-1-ce487d44c0bf.webp" type="image/webp">
<source srcset="images/accordion-1-ce487d44c0bf.jpg" type="image/jpeg">
<img src="https://images.ctfassets.net/8aevphvgewt8/1Dt1ncaR6ZM4dQvknFzfBI/e5c2092be5bd53881622eced4fd37564/accordion-1-ce487d44c0bf.webp" alt="Description" loading="lazy"
width="800" height="600">
</picture>
<picture>
<source srcset="images/accordion-2-730955545f07.webp" type="image/webp">
<source srcset="images/accordion-2-730955545f07.jpg" type="image/jpeg">
<img src="https://images.ctfassets.net/8aevphvgewt8/1uXZYDy7dMcH9QwxuAU06F/1cb167cc60d725b8cf7089faf9a4ed06/accordion-2-730955545f07.webp" alt="Description" loading="lazy"
width="800" height="600">
</picture>
<picture>
<source srcset="images/accordion-3-52ca331d22ea.webp" type="image/webp">
<source srcset="images/accordion-3-52ca331d22ea.jpg" type="image/jpeg">
<img src="https://images.ctfassets.net/8aevphvgewt8/3xzVZaJhqo3B62R8NeHjX2/e37c81e4f26e9dac2aff1f23a0243087/accordion-3-52ca331d22ea.webp" alt="Description" loading="lazy"
width="800" height="600">
</picture>
<!-- CSS for responsive behavior -->
<style>
img {
max-width: 100%;
height: auto;
}
</style>
Load images only when they come into view
Faster initial page load, reduced bandwidth
<!-- Add lazy loading to images below the fold -->
<img src="image.jpg" alt="Description" loading="lazy" width="400" height="300">
<!-- For better browser support, use this polyfill -->
<script>
if ('loading' in HTMLImageElement.prototype) {
// Native lazy loading supported
} else {
// Fallback for older browsers
var images = document.querySelectorAll('img[loading="lazy"]');
var imageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
var image = entry.target;
image.src = image.dataset.src;
image.classList.remove('lazy');
imageObserver.unobserve(image);
}
});
});
images.forEach(function(img) { imageObserver.observe(img); });
}
</script>
Compress text files to reduce transfer size by 60-80%
60-80% smaller file sizes for text-based resources
# Add to your .htaccess file for Apache
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
</IfModule>
# For Nginx, add to your server block:
# gzip on;
# gzip_vary on;
# gzip_min_length 1024;
# gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript;
HTTP/2
Modern protocol - faster loading
Gzip
Files compressed - saves bandwidth
99ms
Excellent response time
13 resources
Consider async/defer loading
| Type | Resource URL | Size | Timeline | Actions |
|---|---|---|---|---|
| CSS |
https://github.githubassets.com/assets/light-8e973f836952.css
|
83.88 KB |
Started: 0ms after page load
Duration: 17ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/light_high_contrast-34b642d57214.css
|
84.38 KB |
Started: 18ms after page load
Duration: 19ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/dark-4bce7af39e21.css
|
83.7 KB |
Started: 38ms after page load
Duration: 17ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/dark_high_contrast-ad512d3e2f3b.css
|
84.25 KB |
Started: 56ms after page load
Duration: 17ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-primitives-15839d47b75d.css
|
10.47 KB |
Started: 74ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-a5c85403da8c.css
|
346.9 KB |
Started: 90ms after page load
Duration: 18ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/global-abde950b7df1.css
|
292.91 KB |
Started: 110ms after page load
Duration: 17ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/github-490b3f68bf33.css
|
153.76 KB |
Started: 127ms after page load
Duration: 21ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/site-7908d55f3275.css
|
80.85 KB |
Started: 150ms after page load
Duration: 18ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/landing-pages-3d291f2f5b32.css
|
680.66 KB |
Started: 168ms after page load
Duration: 29ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/home-99f0f34e57e5.css
|
51.16 KB |
Started: 199ms after page load
Duration: 17ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-react.53f37102c46fd176a96b.module.css
|
241.69 KB |
Started: 218ms after page load
Duration: 18ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/landing-pages.135ee2774881c3ae04db.module.css
|
68.71 KB |
Started: 237ms after page load
Duration: 24ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-react.53f37102c46fd176a96b.module.css
|
241.69 KB |
Started: 262ms after page load
Duration: 24ms to complete |
📦
Minify/split
|
| CSS |
https://github.githubassets.com/assets/keyboard-shortcuts-dialog.2de9c7d6456a311fce49.module.css
|
1.72 KB |
Started: 286ms after page load
Duration: 21ms to complete |
✅
Optimized
|
| CSS |
https://github.githubassets.com/assets/primer-react.53f37102c46fd176a96b.module.css
|
241.69 KB |
Started: 310ms after page load
Duration: 27ms to complete |
📦
Minify/split
|
| CSS |
https://github.githubassets.com/assets/marketing-navigation.fd20bacfa4fdf4953836.module.css
|
9.64 KB |
Started: 338ms after page load
Duration: 15ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/high-contrast-cookie-1a011967750c.js
|
1.52 KB |
Started: 354ms after page load
Duration: 18ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/wp-runtime-090ecc7196d1.js
|
110.78 KB |
Started: 373ms after page load
Duration: 22ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-392bf0ab720a.js
|
9.63 KB |
Started: 396ms after page load
Duration: 25ms to complete |
✅
Optimized
|
Showing first 20 of 102 resources
Users see blank page longer
Severity: High
Slow loading on mobile/poor connections
Severity: Medium
Category: Images
Compress 2 large images and consider WebP format