{"scanId":"shrohans-portfolio-vercel-app-f75b17a911","url":"https://shrohans-portfolio.vercel.app/","finalUrl":"https://shrohans-portfolio.vercel.app/","status":"complete","scannedAt":"2026-08-31T12:26:26.630Z","durationMs":79221,"rubricVersion":"2026.08.1","engine":{"probes":"xspeed-scan/1.0","lighthouse":"13.4.1","psiError":null,"lighthouseAnalysedAt":"2026-08-31T12:25:58.578Z","lighthouseReplayed":false},"platform":{"wordpress":false,"generator":null,"cachePlugin":null,"xspeed":false,"xspeedVersion":null,"xspeedProVersion":null,"xspeedMcp":false,"xspeedHub":null,"cdn":"Vercel Edge","edgeFingerprint":"platform-edge","crawlerTextChars":167,"renderCache":null,"usesNextImage":false,"stackName":null,"saas":false,"hosting":"Vercel"},"measured":{"ttfbMs":91,"redirects":0,"compression":"none","cacheHit":false,"lighthouse":27,"lcpMs":12376.978668430682,"cls":0.001073065494519471,"tbtMs":2078,"lighthouseDesktop":38},"icon":null,"restricted":null,"screenshot":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHyAPoDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIF/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AiADWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9k=","screenshotDesktop":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAFcAfQDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAf/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIF/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AiADWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9k=","checks":[{"id":"S1","name":"Lighthouse performance score (mobile)","dimension":"speed","weight":18,"status":"fail","earned":4.9,"evidence":"27/100 (Lighthouse 13.4.1, mobile)","remediation":"The composite Lighthouse score — every fix below moves it.","fix":{"tier":"free","feature":"AI Optimize","prompt":"Using my site's xSpeed MCP connection: run optimize_site, then run_benchmark to verify the score improved."},"refs":[{"name":"Lighthouse performance scoring","url":"https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"}]},{"id":"S2","name":"Largest Contentful Paint ≤ 2.5s","dimension":"speed","weight":8,"status":"fail","earned":0,"evidence":"LCP 12.4s","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","fix":{"tier":"free","feature":"Page Cache + Preloader (Critical CSS in Pro)","prompt":"Using my site's xSpeed MCP connection: enable page caching, start the preloader, and (on Pro) generate critical CSS for this page; then re-test LCP."},"refs":[{"name":"web.dev — Largest Contentful Paint","url":"https://web.dev/articles/lcp"},{"name":"Optimize LCP","url":"https://web.dev/articles/optimize-lcp"}]},{"id":"S3","name":"Cumulative Layout Shift ≤ 0.1","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"CLS 0.001","remediation":"Reserve space for images/embeds so the page does not jump as it loads.","refs":[{"name":"web.dev — Cumulative Layout Shift","url":"https://web.dev/articles/cls"}]},{"id":"S4","name":"Total Blocking Time ≤ 200ms","dimension":"speed","weight":5,"status":"fail","earned":0,"evidence":"TBT 2.1s","remediation":"Less JavaScript on the main thread: defer scripts and drop unused bundles.","fix":{"tier":"free","feature":"JS Minify + Defer","prompt":"Using my site's xSpeed MCP connection: enable JS minification and deferred loading, then re-test Total Blocking Time."},"refs":[{"name":"web.dev — Total Blocking Time","url":"https://web.dev/articles/tbt"}]},{"id":"S5","name":"First Contentful Paint ≤ 1.8s","dimension":"speed","weight":4,"status":"fail","earned":0,"evidence":"FCP 9.1s","remediation":"First paint is gated on server response and render-blocking CSS.","fix":{"tier":"free","feature":"Page Cache + CSS Minify","prompt":"Using my site's xSpeed MCP connection: enable page caching and CSS minification, then re-test First Contentful Paint."},"refs":[{"name":"web.dev — First Contentful Paint","url":"https://web.dev/articles/fcp"}]},{"id":"D1","name":"Time to first byte ≤ 200ms","dimension":"delivery","weight":8,"status":"pass","earned":8,"evidence":"TTFB 91ms (best of 2 requests from our scanner)","remediation":"The server rebuilds the page on every request. A page cache answers in 5–15ms.","refs":[{"name":"web.dev — Time to First Byte","url":"https://web.dev/articles/ttfb"}]},{"id":"D2","name":"Page served from cache","dimension":"delivery","weight":7,"status":"fail","earned":0,"evidence":"No cache evidence in headers or HTML","remediation":"Serve HTML from a static cache instead of rebuilding it per visitor.","fix":{"tier":"free","feature":"Page Cache + Preloader","prompt":"Using my site's xSpeed MCP connection: enable page caching, start the preloader so pages are pre-warmed, and confirm get_cache_status reports hits."},"refs":[{"name":"MDN — HTTP caching","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"}]},{"id":"D3","name":"HTML compression (Brotli/GZIP)","dimension":"delivery","weight":5,"status":"fail","earned":0,"evidence":"No Content-Encoding on the HTML response","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","fix":{"tier":"free","feature":"GZIP (Brotli in Pro)","prompt":"Using my site's xSpeed MCP connection: enable GZIP compression (and Brotli if Pro), then confirm the HTML response is compressed."},"refs":[{"name":"MDN — Content-Encoding","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding"},{"name":"RFC 7932 — Brotli","url":"https://www.rfc-editor.org/rfc/rfc7932"}]},{"id":"D4","name":"Efficient cache policy on static assets","dimension":"delivery","weight":5,"status":"info","earned":0,"evidence":"Needs the Lighthouse audit","naReason":"Needs the Lighthouse audit","remediation":"Re-run when Lighthouse is available.","refs":[{"name":"Lighthouse — Efficient cache policy","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl"}]},{"id":"D5","name":"CDN / edge network","dimension":"delivery","weight":3,"optional":true,"status":"pass","earned":3,"evidence":"Vercel Edge detected","remediation":"Serving through an edge network.","refs":[{"name":"web.dev — Content delivery networks","url":"https://web.dev/articles/content-delivery-networks"}]},{"id":"D6","name":"Clean redirect chain","dimension":"delivery","weight":2,"status":"pass","earned":2,"evidence":"No redirects — the URL answers directly","remediation":"Each redirect adds a full round-trip before the page can even start.","refs":[{"name":"Lighthouse — Avoid redirects","url":"https://developer.chrome.com/docs/lighthouse/performance/redirects"}]},{"id":"A1","name":"No render-blocking resources","dimension":"assets","weight":5,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"pro","feature":"Critical CSS + Unused CSS removal","prompt":"Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test."},"refs":[{"name":"Lighthouse — Render-blocking resources","url":"https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources"}]},{"id":"A2","name":"Minified CSS and JavaScript","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Lighthouse audit score 100%","remediation":"Ship minified assets — whitespace and comments are pure transfer waste.","refs":[{"name":"Lighthouse — Minify CSS","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-css"},{"name":"Minify JavaScript","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript"}]},{"id":"A3","name":"Modern, optimized image formats","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"pro","feature":"Image Converter (WebP/AVIF)","prompt":"Using my site's xSpeed MCP connection: enable WebP/AVIF conversion with URL rewriting, then re-test image audits."},"refs":[{"name":"Lighthouse — Modern image formats","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images"}]},{"id":"A4","name":"Offscreen images lazy-loaded","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"free","feature":"Lazy Load","prompt":"Using my site's xSpeed MCP connection: enable lazy loading for images and iframes, then re-test."},"refs":[{"name":"Lighthouse — Defer offscreen images","url":"https://developer.chrome.com/docs/lighthouse/performance/offscreen-images"}]},{"id":"A5","name":"Total page weight ≤ 1.5MB","dimension":"assets","weight":3,"status":"fail","earned":0,"evidence":"5.1MB transferred","remediation":"Heavy pages are slow on every connection — compress, lazy-load, and trim.","fix":{"tier":"free","feature":"Minify + Lazy Load + Image Converter (Pro)","prompt":"Using my site's xSpeed MCP connection: enable minification and lazy loading (and image conversion on Pro), then re-check page weight."},"refs":[{"name":"Lighthouse — Total byte weight","url":"https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight"}]},{"id":"W1","name":"Platform","dimension":"stack","weight":0,"status":"info","earned":0,"evidence":"Platform not identified","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"WordPress.org — Optimization: caching","url":"https://wordpress.org/documentation/article/optimization/#Caching"}]},{"id":"W3","name":"Powered by xSpeed","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"xSpeed — feature overview","url":"https://xspeedcache.com/features"},{"name":"xSpeed vs other cache plugins","url":"https://xspeedcache.com/comparison"}]},{"id":"W4","name":"AI-controllable (xSpeed MCP)","dimension":"stack","weight":2,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":9.9,"weight":40,"score":25,"applicable":true},"delivery":{"earned":13,"weight":25,"score":52,"applicable":true},"assets":{"earned":4,"weight":7,"score":57,"applicable":true},"stack":{"earned":0,"weight":0,"score":0,"applicable":false}},"overallScore":37,"partial":false,"challenged":null,"unanalysable":false,"gradedWeight":72,"grade":"F","level":1,"levelName":"Critical","reportUrl":"https://xspeedcache.com/scan/r/shrohans-portfolio-vercel-app-f75b17a911"}