Analyze your website's performance with Core Web Vitals, actionable code snippets, and detailed optimization recommendations.
Try these examples:
9/9/2025, 7:33:36 am UTC
1,530ms
Good
2ms
Good (est)
1.1
Poor (est)
16ms
Good
93ms
Good
Users see content quickly - minimal bounce risk
Interactive elements respond immediately
Unstable layout - users may click wrong elements
Needs Work
1,530ms
Complete page load
10.03 MB
96
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-dc7ca6859caf.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-dc7ca6859caf.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-6448649c7147.css');
loadCSS('https://github.githubassets.com/assets/light_high_contrast-42fc7e3b06b7.css');
loadCSS('https://github.githubassets.com/assets/dark-d17b946fc2c5.css');
loadCSS('https://github.githubassets.com/assets/dark_high_contrast-1b924088c83a.css');
loadCSS('https://github.githubassets.com/assets/primer-f96b923db733.css');
loadCSS('https://github.githubassets.com/assets/global-2744ca59d025.css');
loadCSS('https://github.githubassets.com/assets/github-f7128b22e253.css');
loadCSS('https://github.githubassets.com/assets/site-36e5e1b0bd56.css');
loadCSS('https://github.githubassets.com/assets/landing-pages-e72ec641ec1c.css');
loadCSS('https://github.githubassets.com/assets/home-81413a57f179.css');
loadCSS('https://github.githubassets.com/assets/primer-react.d0c7fff6074fe65697c3.module.css');
loadCSS('https://github.githubassets.com/assets/landing-pages.3f5bf4b40ca8a04b8f45.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
93ms
Excellent response time
13 resources
Consider async/defer loading
Type | Resource URL | Size | Timeline | Actions |
---|---|---|---|---|
CSS |
https://github.githubassets.com/assets/light-6448649c7147.css
|
77.4 KB |
Started: 0ms after page load
Duration: 16ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/light_high_contrast-42fc7e3b06b7.css
|
77.96 KB |
Started: 16ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/dark-d17b946fc2c5.css
|
77.3 KB |
Started: 32ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/dark_high_contrast-1b924088c83a.css
|
77.83 KB |
Started: 48ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/primer-primitives-dc7ca6859caf.css
|
10.47 KB |
Started: 64ms after page load
Duration: 13ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/primer-f96b923db733.css
|
346.94 KB |
Started: 77ms after page load
Duration: 16ms to complete |
🚫 📦
Add async loading
|
CSS |
https://github.githubassets.com/assets/global-2744ca59d025.css
|
292.1 KB |
Started: 94ms after page load
Duration: 17ms to complete |
🚫 📦
Add async loading
|
CSS |
https://github.githubassets.com/assets/github-f7128b22e253.css
|
144.35 KB |
Started: 111ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/site-36e5e1b0bd56.css
|
69.24 KB |
Started: 127ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/landing-pages-e72ec641ec1c.css
|
670.75 KB |
Started: 142ms after page load
Duration: 18ms to complete |
🚫 📦
Add async loading
|
CSS |
https://github.githubassets.com/assets/home-81413a57f179.css
|
42.15 KB |
Started: 161ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/primer-react.d0c7fff6074fe65697c3.module.css
|
198.63 KB |
Started: 176ms after page load
Duration: 14ms to complete |
🚫 📦
Add async loading
|
CSS |
https://github.githubassets.com/assets/landing-pages.3f5bf4b40ca8a04b8f45.module.css
|
29.3 KB |
Started: 192ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
CSS |
https://github.githubassets.com/assets/primer-react.d0c7fff6074fe65697c3.module.css
|
198.63 KB |
Started: 207ms after page load
Duration: 15ms to complete |
📦
Minify/split
|
CSS |
https://github.githubassets.com/assets/keyboard-shortcuts-dialog.2de9c7d6456a311fce49.module.css
|
1.72 KB |
Started: 223ms after page load
Duration: 13ms to complete |
✅
Optimized
|
JS |
https://github.githubassets.com/assets/high-contrast-cookie-f3788027bd8d.js
|
1.54 KB |
Started: 237ms after page load
Duration: 13ms to complete |
✅
Optimized
|
JS |
https://github.githubassets.com/assets/wp-runtime-4ed7f03a497d.js
|
90.7 KB |
Started: 250ms after page load
Duration: 16ms to complete |
✅
Optimized
|
JS |
https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-468bf7cab607.js
|
9.67 KB |
Started: 266ms after page load
Duration: 14ms to complete |
✅
Optimized
|
JS |
https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1d3d52-25523f4ee061.js
|
14.77 KB |
Started: 281ms after page load
Duration: 13ms to complete |
✅
Optimized
|
JS |
https://github.githubassets.com/assets/packages_failbot_failbot_ts-7cdfcb8274ec.js
|
10.39 KB |
Started: 295ms after page load
Duration: 14ms to complete |
✅
Optimized
|
Showing first 20 of 95 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