---
title: "Performance rules (perf/*)"
description: "All 25 performance rules void reports, each with severity, why it matters and how to fix it."
canonical: https://void-design.vercel.app/rules/perf
lastModified: 2026-09-16
---

# Performance rules

Core Web Vitals and bytes: LCP, CLS, TBT, TTFB, JavaScript, CSS, fonts, images, caching and compression, measured as the median of several runs on a throttled mobile and a desktop profile. Run `void perf` or `void audit`.

| Rule | Severity | Problem |
| --- | --- | --- |
| [`perf/lcp-slow`](https://void-design.vercel.app/rules/perf/lcp-slow.md) | error | Largest Contentful Paint is slow |
| [`perf/cls-high`](https://void-design.vercel.app/rules/perf/cls-high.md) | error | Cumulative Layout Shift is high |
| [`perf/ttfb-slow`](https://void-design.vercel.app/rules/perf/ttfb-slow.md) | warn | Server response (TTFB) is slow |
| [`perf/fcp-slow`](https://void-design.vercel.app/rules/perf/fcp-slow.md) | warn | First Contentful Paint is slow |
| [`perf/tbt-high`](https://void-design.vercel.app/rules/perf/tbt-high.md) | warn | Main thread is blocked by long tasks during load |
| [`perf/js-budget`](https://void-design.vercel.app/rules/perf/js-budget.md) | warn | First-load JavaScript exceeds the budget |
| [`perf/css-budget`](https://void-design.vercel.app/rules/perf/css-budget.md) | warn | CSS transfer exceeds the budget |
| [`perf/font-budget`](https://void-design.vercel.app/rules/perf/font-budget.md) | warn | Web font transfer exceeds the budget |
| [`perf/too-many-fonts`](https://void-design.vercel.app/rules/perf/too-many-fonts.md) | warn | Too many font files are downloaded |
| [`perf/image-budget`](https://void-design.vercel.app/rules/perf/image-budget.md) | warn | Image transfer exceeds the budget |
| [`perf/too-many-requests`](https://void-design.vercel.app/rules/perf/too-many-requests.md) | info | Page makes many requests |
| [`perf/lcp-image-lazy`](https://void-design.vercel.app/rules/perf/lcp-image-lazy.md) | error | LCP image is lazy-loaded |
| [`perf/lcp-image-no-priority`](https://void-design.vercel.app/rules/perf/lcp-image-no-priority.md) | warn | LCP image has no fetchpriority="high" |
| [`perf/lcp-background-image`](https://void-design.vercel.app/rules/perf/lcp-background-image.md) | warn | LCP element is a CSS background image |
| [`perf/image-oversized`](https://void-design.vercel.app/rules/perf/image-oversized.md) | warn | Image is much larger than its rendered size |
| [`perf/image-legacy-format`](https://void-design.vercel.app/rules/perf/image-legacy-format.md) | warn | Image served in a legacy format |
| [`perf/images-missing-dimensions`](https://void-design.vercel.app/rules/perf/images-missing-dimensions.md) | warn | Images without width/height or aspect-ratio |
| [`perf/render-blocking`](https://void-design.vercel.app/rules/perf/render-blocking.md) | warn | Render-blocking resources delay first paint |
| [`perf/no-text-compression`](https://void-design.vercel.app/rules/perf/no-text-compression.md) | warn | Text resources are served uncompressed |
| [`perf/cache-headers`](https://void-design.vercel.app/rules/perf/cache-headers.md) | warn | Hashed static assets are not cached long-term |
| [`perf/third-party-heavy`](https://void-design.vercel.app/rules/perf/third-party-heavy.md) | warn | Heavy third-party footprint |
| [`perf/dom-size`](https://void-design.vercel.app/rules/perf/dom-size.md) | warn | DOM is very large |
| [`perf/bfcache-blocked`](https://void-design.vercel.app/rules/perf/bfcache-blocked.md) | warn | Page is not eligible for the back/forward cache |
| [`perf/lighthouse-score-low`](https://void-design.vercel.app/rules/perf/lighthouse-score-low.md) | warn | Lighthouse performance score is low |
| [`perf/lighthouse-audit`](https://void-design.vercel.app/rules/perf/lighthouse-audit.md) | info | Lighthouse flagged an opportunity |
