7 tasks from this audit
Export to your tracker — bulk via CSV, or one-by-one to Jira or Linear. Check items off as you fix them.
- High
Address accessibility gaps
Small effort·Affects 4 pages·Quick win▸ Description
Why it matters
About 15% of users have a disability (WHO). Accessibility gaps both exclude these users and create ADA/EAA compliance risk in the US and EU.Accessibility issues exclude users of assistive technology and create legal exposure (ADA / European Accessibility Act). Many fixes also help SEO.
Steps
1. Give interactive elements and dialogs accessible names (aria-label or visible text).
2. Ensure every meaningful image has descriptive alt text.
3. Check color contrast meets WCAG AA.Affects 4 pages · effort: small · owner: Frontend / Design
- Critical
Unblock the initial render
Medium effort·Affects 10 pages▸ Description
Why it matters
Largest Contentful Paint is a Google ranking signal. Sites in the slowest quartile of their category see 30–50% less organic search traffic than faster peers.CSS and JavaScript in the critical path delay first paint — visitors stare at a blank screen, and Largest Contentful Paint (a Google ranking signal) suffers.
Expected outcome
~1.0s faster load across 10 affected pages.Found on this site
- Render-blocking requests — Est savings of 1,200 ms
- Reduce unused CSS — Est savings of 23 KiB
Seen on: /about, /pricing, /, /contact, /docs/flagsSteps
1. Inline critical above-the-fold CSS and defer the rest.
2. Add async or defer to render-blocking scripts.
3. Preload the LCP image and key fonts so the browser discovers them early.
4. Remove unused CSS rules from above-the-fold stylesheets.Stack-specific
1. Use next/font so fonts do not block render.
2. Avoid importing large global CSS; prefer per-component styles.Affects 10 pages · effort: medium · owner: Frontend
- Critical
Cut and defer JavaScript
Large effort·Affects 10 pages▸ Description
Why it matters
Heavy JavaScript is the #1 driver of slow mobile sites — 53% of mobile users abandon pages that take longer than 3 seconds to load (Google mobile-speed research).Large scripts block the browser’s main thread, so the page looks loaded but does not respond to taps or clicks. This is the most common cause of a slow mobile experience and directly drives up bounce rate.
Expected outcome
~2.0s faster load across 10 affected pages.Found on this site
- Reduce unused JavaScript — Est savings of 642 KiB
- Reduce JavaScript execution time — 2.5 s
- Minimize main-thread work — 4.0 s
- Legacy JavaScript — Est savings of 27 KiB
Seen on: /about, /pricing, /, /contact, /docs/flagsSteps
1. Audit the bundle to find the largest dependencies (a bundle analyzer or source-map-explorer).
2. Code-split so route- and below-the-fold code loads on demand instead of upfront.
3. Remove or replace heavy third-party scripts; load non-critical ones with async/defer or after first interaction.
4. Drop legacy polyfills and transpilation targets that modern browsers no longer need.Stack-specific
1. Use next/dynamic to lazy-load heavy components.
2. Run @next/bundle-analyzer to find oversized chunks.
3. Set a modern browserslist so Next.js stops shipping legacy transforms.Affects 10 pages · effort: large · owner: Frontend
- Medium
Declare a policy for AI crawlers
Small effort·Affects 1 page·Quick win▸ Description
Why it matters
AI answer engines are a fast-growing discovery channel. Sites they can’t identify a policy for are crawled on the bot’s terms, and sites that block them forfeit citations — both are decisions worth making deliberately.Answer engines like ChatGPT, Perplexity and Claude crawl with named bots (GPTBot, ClaudeBot, Google-Extended…). With no explicit robots.txt rule you have made no decision — you neither invited them in to be cited nor kept them out. Either choice is fine; silence isn’t.
Found on this site
- Unspecified: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Google-Extended, PerplexityBot, Perplexity-User, Applebot-Extended, CCBot
Seen on: /robots.txtSteps
1. Decide whether you want AI answer engines to read and cite your content.
2. Add an explicit Allow or Disallow rule for each major AI bot in robots.txt.
3. If you allow them, make sure your key content is server-rendered so they can actually read it.
4. Re-run the readiness checker to confirm the policy is detected.Copy-paste fix
```
# Allow AI answer engines to read and cite your content:
User-agent: GPTBot
Allow: /User-agent: OAI-SearchBot
Allow: /User-agent: ChatGPT-User
Allow: /User-agent: ClaudeBot
Allow: /User-agent: Claude-User
Allow: /User-agent: Google-Extended
Allow: /User-agent: PerplexityBot
Allow: /User-agent: Perplexity-User
Allow: /User-agent: Applebot-Extended
Allow: /User-agent: CCBot
Allow: /# …or block them from training/crawling instead — pick one:
# (replace "Allow: /" with "Disallow: /" above)
```Affects 1 page · effort: small · owner: SEO / Content
- Medium
Add Schema.org structured data
Medium effort·Affects 6 pages▸ Description
Why it matters
Structured data is a low-risk SEO and AI-visibility win: it doesn’t change your design but materially improves how engines understand and present your pages.Schema.org JSON-LD tells search engines and answer engines what each page is — an Organization, an Article, a Product, an FAQ. Pages with structured data earn richer search results and are easier for LLMs to summarize and cite accurately.
Found on this site
- Present: BreadcrumbList (2), Organization (2), TechArticle (2), WebSite (2), Service (1)Steps
1. Add an Organization + WebSite schema to your homepage (identity for the whole site).
2. Add BreadcrumbList to section pages so engines understand your hierarchy.
3. Add page-type schema where it fits — Article/BlogPosting on posts, FAQPage on Q&A, Product on product pages.
4. Validate with Google’s Rich Results Test before shipping.Copy-paste fix
```
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "vercel.com",
"url": "https://vercel.com",
"logo": "https://vercel.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/your-company",
"https://twitter.com/your-handle"
]
}
</script>
```Affects 6 pages · effort: medium · owner: SEO / Content
- Medium
Right-size and modernize images
Medium effort·Affects 3 pages▸ Description
Why it matters
Images account for roughly 25% of an average mobile page (HTTP Archive). Every MB of unoptimized images adds 1–2 seconds of mobile load time.Oversized images waste bandwidth and slow the largest element on the page. On mobile connections this is often the single biggest load-time cost.
Found on this site
- Improve image delivery — Est savings of 273 KiB
Seen on: /about, /, /docs/flagsSteps
1. Serve images at the dimensions they are displayed, with srcset for different screen sizes.
2. Use modern formats (WebP/AVIF) with fallbacks.
3. Lazy-load below-the-fold images.
4. Compress images — aim well under 200 KB for most photos.Stack-specific
1. Use the next/image component — it handles sizing, modern formats and lazy-loading automatically.Affects 3 pages · effort: medium · owner: Frontend / Design
- Low
Reduce total page weight
Medium effort·Affects 1 page▸ Description
Why it matters
Every additional megabyte of page weight typically adds 1–2 seconds of mobile load time on a slow connection (HTTP Archive).Heavy pages cost real money for users on metered mobile data and load slowly on weak connections — a meaningful share of every site’s traffic.
Found on this site
- Avoid enormous network payloads — Total size was 2,719 KiB
Seen on: /kb/buildsSteps
1. Enable text compression (Brotli or Gzip) for all text assets.
2. Trim the largest payloads — usually JavaScript and images.
3. Remove unused third-party embeds and scripts.Affects 1 page · effort: medium · owner: Frontend