Good bones. Room to move faster.
4 failed checks. 6 passing. Start with the highest-impact fixes below.
Performance
Accessibility
SEO
Best practices
01 Start here.
IMPACT → EFFORTPotential scores are estimates. Gains overlap; they are not additive or guaranteed.
Your content arrives, but the first impression is heavier than it needs to be. A large hero image and a blocking widget delay the main content to 3.8 seconds. Start with those two fixes, then split the charting bundle. The layout is stable and the server responds quickly; keep those wins as you reduce the page weight.
02 The vital signs.
LAB MEASUREMENTSLargest contentful paint
Good ≤ 2.5s · Poor > 4.0s
Interaction to next paint
Needs interaction data. A navigation-only lab test can’t measure it.
Cumulative layout shift
Good ≤ 0.100 · Poor > 0.250
First contentful paint
Good ≤ 1.8s · Poor > 3.0s
Time to first byte
Good ≤ 800ms · Poor > 1.8s
LCP, INP and CLS are Core Web Vitals. FCP and TTFB help diagnose the cause. This is a lab snapshot; INP requires interaction data.
03 The fix queue.
4 FAILED CHECKS4 findings match the filters.
01Right-size the hero image
Performance→ LCPModerate+15 pts
Right-size the hero image
What’s happening
The 2,400px hero image is rendered at 720px. The page transfers 420KB more image data than needed.
Why it matters
This can affect largest contentful paint, especially on a slower mobile device or connection.
Affected resources
- /images/hero-studio.jpg
Next.js · suggested fix
Use next/image with responsive sizes="(max-width: 768px) 100vw, 50vw" and explicit width and height. Preload the hero image only if it is the LCP element. Serve AVIF or WebP.
Effort is a rough estimate. Point gains are directional, overlap, and require a re-test.
02Clear the critical rendering path
Performance→ FCPQuick fix+9 pts
Clear the critical rendering path
What’s happening
A third-party widget loads synchronously before the main page content can paint. Estimated time saved: 620ms.
Why it matters
This can affect first contentful paint, especially on a slower mobile device or connection.
Affected resources
- https://widget.example.com/client.js
Next.js · suggested fix
Load the non-essential widget with next/script using strategy="lazyOnload". Keep essential page styles in the critical path and verify the widget still works after deferring it.
Effort is a rough estimate. Point gains are directional, overlap, and require a re-test.
03Ship less JavaScript on the first visit
PerformanceInvolvedReview
Ship less JavaScript on the first visit
What’s happening
The initial bundle includes a charting library used only below the fold. Approximately 86KB is unused during page load.
Why it matters
This adds work or friction during page load. Confirm the bottleneck before changing the code.
Affected resources
- /_next/static/chunks/charts.js
Next.js · suggested fix
Inspect the bundle with @next/bundle-analyzer. Dynamically import the charting component and load it when needed. Test the loading state and keyboard access.
Effort is a rough estimate. Point gains are directional, overlap, and require a re-test.
04Describe the project thumbnails
AccessibilityQuick fixReview
Describe the project thumbnails
What’s happening
Two meaningful project images do not have an accessible text alternative.
Why it matters
A barrier here can prevent someone from reading or using the page. A low point estimate does not make accessibility optional.
Affected resources
- /images/project-one.webp
- /images/project-two.webp
Next.js · suggested fix
Add concise, descriptive alt text to meaningful project thumbnails. Keep decorative images alt="". Verify the gallery with a screen reader.
Effort is a rough estimate. Point gains are directional, overlap, and require a re-test.
6 checks passed
- Document has a descriptive titleSEO
- HTTPS connection is secureBest practices
- Layout stays stable while loadingBest practices
- Text has sufficient contrastAccessibility
- Links have descriptive namesAccessibility
- Viewport is configured for mobileBest practices
1 informational / manual checks
- Check keyboard focus order manually
Automated checks cannot fully assess keyboard navigation. Verify the focus order with Tab and Shift+Tab.
04 Under the hood.
estimated excess image data · 1 flagged
Inspect resources
- hero-studio.jpg · 420KB excess
main-thread blocking · 1 services identified
Inspect services
- Example widget · 210ms
blocking fonts · 0 missing display strategy
Keep the gains.
Catch the regressions.
Found 4 things to improve? Guard will catch performance regressions after every deploy.
Get the first signal.
Join the early access list. We’ll email you when Guard is ready.