Analyze your website's performance with Core Web Vitals, actionable code snippets, and detailed optimization recommendations.
Try these examples:
12/11/2025, 2:48:04 am UTC
1,743ms
Good
2ms
Good (est)
1.15
Poor (est)
15ms
Good
171ms
Good
Users see content quickly - minimal bounce risk
Interactive elements respond immediately
Unstable layout - users may click wrong elements
Needs Work
1,743ms
Complete page load
10.51 MB
102
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-c37d781e2da5.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-c37d781e2da5.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-8bf3328b2828.css');
loadCSS('https://github.githubassets.com/assets/global-550891c33aa6.css');
loadCSS('https://github.githubassets.com/assets/github-f86c648606b5.css');
loadCSS('https://github.githubassets.com/assets/site-7908d55f3275.css');
loadCSS('https://github.githubassets.com/assets/landing-pages-0cb0c2f00e3a.css');
loadCSS('https://github.githubassets.com/assets/home-99f0f34e57e5.css');
loadCSS('https://github.githubassets.com/assets/primer-react.35907f412927d45d6534.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
171ms
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: 15ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/light_high_contrast-34b642d57214.css
|
84.38 KB |
Started: 16ms after page load
Duration: 15ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/dark-4bce7af39e21.css
|
83.7 KB |
Started: 32ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/dark_high_contrast-ad512d3e2f3b.css
|
84.25 KB |
Started: 47ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-primitives-c37d781e2da5.css
|
10.47 KB |
Started: 62ms after page load
Duration: 23ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-8bf3328b2828.css
|
347.42 KB |
Started: 86ms after page load
Duration: 14ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/global-550891c33aa6.css
|
292.71 KB |
Started: 101ms after page load
Duration: 16ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/github-f86c648606b5.css
|
155.97 KB |
Started: 118ms after page load
Duration: 16ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/site-7908d55f3275.css
|
80.85 KB |
Started: 135ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/landing-pages-0cb0c2f00e3a.css
|
680.66 KB |
Started: 150ms after page load
Duration: 21ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/home-99f0f34e57e5.css
|
51.16 KB |
Started: 173ms after page load
Duration: 14ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-react.35907f412927d45d6534.module.css
|
263.8 KB |
Started: 188ms after page load
Duration: 15ms to complete |
🚫 📦
Add async loading
|
| CSS |
https://github.githubassets.com/assets/landing-pages.135ee2774881c3ae04db.module.css
|
68.71 KB |
Started: 204ms after page load
Duration: 18ms to complete |
🚫
Add async loading
|
| CSS |
https://github.githubassets.com/assets/primer-react.35907f412927d45d6534.module.css
|
263.8 KB |
Started: 222ms after page load
Duration: 19ms to complete |
📦
Minify/split
|
| CSS |
https://github.githubassets.com/assets/keyboard-shortcuts-dialog.29aaeaafa90f007c6f61.module.css
|
1.72 KB |
Started: 243ms after page load
Duration: 14ms to complete |
✅
Optimized
|
| CSS |
https://github.githubassets.com/assets/primer-react.35907f412927d45d6534.module.css
|
263.8 KB |
Started: 257ms after page load
Duration: 16ms to complete |
📦
Minify/split
|
| CSS |
https://github.githubassets.com/assets/marketing-navigation.8284bdfe1ee4804a58c1.module.css
|
9.65 KB |
Started: 274ms after page load
Duration: 14ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/high-contrast-cookie-1a011967750c.js
|
1.52 KB |
Started: 289ms after page load
Duration: 21ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/wp-runtime-3af7ae85420a.js
|
33.79 KB |
Started: 311ms after page load
Duration: 26ms to complete |
✅
Optimized
|
| JS |
https://github.githubassets.com/assets/913-ca2305638c53.js
|
9.51 KB |
Started: 338ms after page load
Duration: 20ms to complete |
✅
Optimized
|
Showing first 20 of 101 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