Skip to content

Test your website now

Free, no card. We read only public pages.

Run free audit →

Performance · Low severity

Too Many HTTP Requests: Audit the Work Behind the Count

Reduce unnecessary HTTP requests. Audit third-party chains, defer noncritical media, preserve consent and core features, and verify bytes and main-thread work.

Published · Updated

What the check tests

Check
perf.requests - Request count in check
Passes when
A rendered page should stay under roughly 80 requests; over 150 is a strong smell.
Scope
graded on every page crawled
Severity
Low
Fix effort
medium - a working day
Impact when fixed
low

In one paragraph

Too many HTTP requests means the sampled page initiated more requests than this check's configured budget. The count includes more than initial HTML references and is not a direct measure of slowness. Inspect which resources load, their hosts, bytes, timing, and execution cost. Remove unused work and defer appropriate media without hiding critical content or breaking required integrations.

Why it matters

Modern HTTP can multiplex multiple requests over a connection, so the old idea that every file requires a separate connection is misleading. Twenty small cached resources can cost less than one large script that monopolises the main thread.

A high count is still useful evidence of accumulated dependencies. Multiple vendor chains, unnecessary embeds, repeated calls, and media loaded before it is needed can compete with critical resources. The right objective is a faster, correct page rather than the smallest possible request total.

Some requests are legitimate consequences of user choices or application architecture. Consent state, device size, cache, extensions, and observation duration can all change the count. Compare equivalent conditions and understand the traffic rather than removing everything unfamiliar.

How WebAuditOS evaluates this finding

The supplied rule counts requests initiated during a sampled 1440×900 desktop render without throttling, observing until the render finishes with its documented wait for network quiet. It includes the document, third-party calls, failures, redirects, and runtime requests started during that window.

Up to 80 requests passes, 81-150 warns, and above 150 fails at the documented low severity. Unrendered pages are not graded. Later scrolling, media segments, or polling can fall outside the window, while ongoing activity can make counts differ between runs. This is not a complete lifetime network budget.

How to fix it

  1. Reproduce the page with a fresh browser session and record the Network panel. Note viewport, cache, stored consent, and duration. Inspect initiators so a single vendor's descendants remain visible.
  2. Group by owner and purpose. Identify duplicate tags, unused plugins, repeated API calls, noncritical embeds, and resources loaded on templates that never use them. Review bytes and execution alongside counts.
  3. Remove confirmed unused dependencies with the responsible team. A consent manager or authentication component may look like an external widget while being essential. Keep a record of each removal and expected effect.
  4. Scope integrations to routes and conditions that need them. Respect actual consent requirements and provider behaviour; an arbitrary delay is not a privacy-compliance design.
  5. Lazy-load suitable offscreen images and iframes. Do not lazy-load the actual above-the-fold LCP image simply to reduce the initial count. Reserve dimensions to avoid layout movement.
  6. Consider a lightweight preview for expensive video or map embeds, loading the real integration after a deliberate action. Maintain keyboard access, descriptive labels, and a usable fallback. If the embed is the page's main purpose, measure the additional interaction cost.
  7. Consolidate only where it helps. Route-aware bundling, shared icons, and removal of duplicate code can be valuable; merging every asset into one file can damage caching and make all pages download unrelated code. Account for your actual delivery protocol.
  8. Test user journeys, consent states, LCP, responsiveness, and visual stability after changes. Rescan under comparable conditions and inspect whether fewer requests correspond to less useful work, not merely a different observation window.

What the fix can break

Delayed analytics can change which visits are observed. Record that measurement change so reduced reported traffic is not mistaken for a real audience loss.

Click-to-load embeds introduce an extra step and can affect accessibility or conversion. Evaluate the interaction rather than assuming saved requests always win.

Removing API calls or combining bundles without understanding dependencies can break rare screens. Keep changes attributable and retain an appropriate rollback. A page below eighty requests can still be very slow if its remaining resources are large or expensive.

Questions

Is eighty a browser limit?

No. It is the supplied scanner budget, not an HTTP standard or a search-engine rule.

Why is my browser count different?

Cache, extensions, viewport, consent, interaction, and observation duration can all differ. Match conditions before comparing totals.

Does combining every script improve performance?

Not necessarily. It can increase unused downloads and reduce cache efficiency. Remove and split work based on real usage.

Review blocking time, stylesheets, and the Core Web Vitals guide.

In the report

Test this on your own site

Every scan runs perf.requests on every page it crawls, on every plan. The finding carries this id, so a line in a report can be matched to the explanation above - and the free scan needs no account.