---
title: "Improving Lighthouse Accuracy · Unlighthouse"
meta:
  "og:description": "Optimize Lighthouse scan accuracy with multiple samples and reduced concurrency for more reliable, consistent Core Web Vitals results."
  "og:title": "Improving Lighthouse Accuracy · Unlighthouse"
  description: "Optimize Lighthouse scan accuracy with multiple samples and reduced concurrency for more reliable, consistent Core Web Vitals results."
---

**Recipes**

# **Improving Lighthouse Accuracy**

[Copy for LLMs](https://unlighthouse.dev/guide/recipes/improving-accuracy.md)

Lighthouse scores can vary 5-10 points between runs due to network conditions, CPU load, and browser state. These techniques improve consistency for reliable [**Core Web Vitals**](https://unlighthouse.dev/glossary) measurement.

## [Why Scores Vary](#why-scores-vary)

Single Lighthouse runs can fluctuate by 5-10 points due to:

- CPU load from other browser tabs or processes
- Network latency variations
- Memory pressure
- Background service workers

For reliable performance monitoring, use multiple samples.

## [Multiple Samples Per URL](#multiple-samples-per-url)

Run Lighthouse multiple times and average the results for better accuracy:

```
import { defineUnlighthouseConfig } from 'unlighthouse/config'

export default defineUnlighthouseConfig({
  scanner: {
    samples: 3, // Run 3 scans per URL and average results
  },
})
```

Use `samples: 3` for development, `samples: 5` for CI/production audits.

## [Reduce Parallel Scans](#reduce-parallel-scans)

Limit concurrent workers to reduce CPU contention and improve score consistency:

```
import { defineUnlighthouseConfig } from 'unlighthouse/config'

export default defineUnlighthouseConfig({
  puppeteerClusterOptions: {
    maxConcurrency: 1, // Single worker for maximum accuracy
  },
})
```

## [Enable Throttling](#enable-throttling)

Network throttling simulates real-world conditions and reduces score variability:

```
export default defineUnlighthouseConfig({
  scanner: {
    throttle: true, // Simulate 4G network
  },
})
```

## [Recommended Production Config](#recommended-production-config)

For the most accurate results:

```
export default defineUnlighthouseConfig({
  scanner: {
    samples: 5,
    throttle: true,
  },
  puppeteerClusterOptions: {
    maxConcurrency: 1,
  },
})
```

Higher accuracy increases scan time significantly. Balance accuracy needs with scan duration.

[Edit this page](https://github.com/harlan-zw/unlighthouse/edit/main/docs/1.guide/recipes/improving-accuracy.md)

[Markdown For LLMs](https://unlighthouse.dev/guide/recipes/improving-accuracy.md)

**Did this page help you? **

Anything that could be done better? :)

Help us improve this page. You can [edit this page](https://github.com/harlan-zw/unlighthouse/edit/main/docs/1.guide/recipes/improving-accuracy.md) on GitHub or provide anonymous feedback below.

[**UI Customization** Modify Unlighthouse client interface columns and display to show custom metrics and data.](https://unlighthouse.dev/guide/recipes/client) [**Large Sites** Scan large websites with thousands of pages efficiently. Configure sampling, URL filtering, and optimization strategies for bulk Lighthouse testing.](https://unlighthouse.dev/guide/recipes/large-sites)

**On this page **

- [Why Scores Vary](#why-scores-vary)
- [Multiple Samples Per URL](#multiple-samples-per-url)
- [Reduce Parallel Scans](#reduce-parallel-scans)
- [Enable Throttling](#enable-throttling)
- [Recommended Production Config](#recommended-production-config)