Website Speed Analyzer - Check Website Performance & Speed
📌 Bookmark your favorite tools and return easily anytime!
⚡ Website Speed Analyzer
Analyze your website performance and get optimization recommendations
✅ Get Detailed Speed & Performance Metrics Instantly
Analyzing your website...
📊 Export Analysis Results
💡 Optimization Recommendations
💡 Website Speed Tips
🖼️
Optimize images: Compress images and use modern formats
⚙️
Minimize CSS/JS: Reduce code size and defer non-critical JavaScript
🔒
Enable caching: Leverage browser caching and CDN
📦
Lazy loading: Load images and content on demand
✨ Features
- PageSpeed analysis
- Core Web Vitals
- Load time metrics
- Mobile & Desktop
- Performance scoring
- SEO readiness
- Accessibility check
- Best practices
- Detailed metrics
- Recommendations
Part of CalcsHub.com - Your Trusted Calculation And Solution Hub
`);printWindow.document.close();
printWindow.print();
showNotification('📄 Opening printable report...');
}function exportToText() {
if (!lastAnalysisResults) {
showNotification('❌ No results to export');
return;
}const results = lastAnalysisResults;
const timestamp = new Date().toLocaleString();
let textContent = `WEBSITE SPEED ANALYSIS REPORT\n`;
textContent += `Generated on: ${timestamp}\n\n`;
textContent += `WEBSITE DETAILS:\n`;
textContent += `URL: ${results.url}\n`;
textContent += `Device Type: ${results.deviceType}\n`;
textContent += `Connection Speed: ${results.connectionType}\n\n`;
textContent += `PERFORMANCE SCORES:\n`;
textContent += `Performance: ${results.scores.performance}/100 (${getScoreLabel(results.scores.performance)})\n`;
textContent += `Accessibility: ${results.scores.accessibility}/100 (${getScoreLabel(results.scores.accessibility)})\n`;
textContent += `SEO: ${results.scores.seo}/100 (${getScoreLabel(results.scores.seo)})\n`;
textContent += `Best Practices: ${results.scores.bestPractice}/100 (${getScoreLabel(results.scores.bestPractice)})\n\n`;
textContent += `PERFORMANCE METRICS:\n`;
textContent += `First Contentful Paint: ${results.metrics.firstContentfulPaint}s\n`;
textContent += `Largest Contentful Paint: ${results.metrics.largestContentfulPaint}s\n`;
textContent += `Cumulative Layout Shift: ${results.metrics.cumulativeLayoutShift}\n`;
textContent += `First Input Delay: ${results.metrics.firstInputDelay}ms\n`;
textContent += `Total Blocking Time: ${results.metrics.totalBlockingTime}ms\n`;
textContent += `Page Load Complete: ${results.metrics.loadComplete}s\n`;
textContent += `Total Page Size: ${results.metrics.pageSize}MB\n`;
textContent += `Total Requests: ${results.metrics.requests}\n\n`;
textContent += `RECOMMENDATIONS:\n`;
const recommendations = generateRecommendationsArray(results.scores);
recommendations.forEach((rec, index) => {
textContent += `${index + 1}. ${rec}\n`;
});
textContent += `\n---\nGenerated by CalcsHub.com\n`;
// Create and download text file
const blob = new Blob([textContent], { type: 'text/plain' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `website-speed-analysis-${new Date().getTime()}.txt`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
showNotification('📄 Text report downloaded!');
}function printReport() {
if (!lastAnalysisResults) {
showNotification('❌ No results to print');
return;
}
exportToPDF(); // Reuse the PDF function which opens print dialog
}function shareResults() {
if (!lastAnalysisResults) {
showNotification('❌ No results to share');
return;
}const results = lastAnalysisResults;
const shareText = `I just analyzed ${results.url} with Website Speed Analyzer!\n\n` +
`Performance Score: ${results.scores.performance}/100\n` +
`Load Time: ${results.metrics.loadComplete}s\n` +
`Check your website speed at CalcsHub.com`;
if (navigator.share) {
navigator.share({
title: 'Website Speed Analysis',
text: shareText,
url: window.location.href
});
} else {
// Fallback: copy to clipboard
navigator.clipboard.writeText(shareText).then(() => {
showNotification('📋 Results copied to clipboard!');
});
}
}function getScoreClass(score) {
if (score >= 90) return 'excellent';
if (score >= 50) return 'good';
return 'poor';
}function generateRecommendationsHTML(scores) {
const recommendations = generateRecommendationsArray(scores);
return recommendations.map(rec => `
${rec}
`).join('');
}function generateRecommendationsArray(scores) {
const recommendations = [];
if (scores.performance < 75) {
recommendations.push('Optimize and compress images using modern formats like WebP');
recommendations.push('Minimize JavaScript and CSS files');
}
if (scores.performance < 60) {
recommendations.push('Enable GZIP compression on your server');
recommendations.push('Implement lazy loading for images');
}
if (scores.seo < 85) {
recommendations.push('Ensure mobile responsiveness for better SEO');
recommendations.push('Add meta descriptions and structured data');
}
if (scores.accessibility < 80) {
recommendations.push('Improve color contrast ratios and add ARIA labels');
}
if (scores.bestPractice < 75) {
recommendations.push('Use HTTPS and update security certificates');
recommendations.push('Fix browser console errors and warnings');
}
recommendations.push('Leverage browser caching with appropriate headers');
recommendations.push('Use a Content Delivery Network (CDN)');
return recommendations.slice(0, 6);
}function showError(msg) {
const el = document.getElementById('errorMessage');
el.textContent = msg;
el.classList.add('show');
}function hideError() {
document.getElementById('errorMessage').classList.remove('show');
}function showNotification(msg) {
const notif = document.getElementById('notification');
notif.textContent = msg;
notif.classList.add('show');
setTimeout(() => notif.classList.remove('show'), 2500);
}