Page load timeline showing an LCP image downloading earlier thanks to rel=preload and fetchpriority=highIntroduction

Image Preloading: How rel=preload and fetchpriority Speed Up Your LCP

View contents

Image Preloading: How rel=preload and fetchpriority Speed Up Your LCP

Introduction

Preloading an image means telling the browser to download it at maximum priority, before the normal preload scanner discovers it in the HTML. The UXR SEO Analyzer checks whether a page's LCP (Largest Contentful Paint) image uses <link rel="preload"> or the fetchpriority="high" attribute, because this is one of the most effective, lowest-effort tweaks for improving LCP.

The Problem: Late Discovery of the LCP Image

The browser normally discovers images as it parses the HTML. If your LCP image is defined via CSS (background-image) or is injected dynamically via JavaScript, the browser can take longer to discover it, delaying when it starts downloading it and therefore delaying the LCP moment.

What rel=preload Does

<link rel="preload" as="image" href="/hero.jpg" fetchpriority="high">

This tag in the <head> tells the browser: "you're going to need this resource soon, start downloading it right now," without waiting for the HTML parser to reach the corresponding <img> tag.

What fetchpriority="high" Does

Boosting the priority of the LCP image by specifying fetchpriority="high" on the image element can cause LCP to happen sooner. This attribute is particularly effective when used on a page's LCP image, and raising its priority with this attribute can improve LCP with relatively little effort.

<img src="/hero.jpg" fetchpriority="high" width="1200" height="600" alt="...">

Preload or fetchpriority? When to Use Each

ScenarioSolution
LCP image declared directly in the initial HTMLfetchpriority="high" on the <img> tag
LCP image as a CSS background (background-image)<link rel="preload"> for early discovery
Responsive LCP image with srcsetrel="preload" with imagesrcset/imagesizes

Preload is still required for early discovery of LCP images included as CSS backgrounds, and to boost those background images' priority it's worth including fetchpriority="high" on the preload as well.

The Most Common Mistake: Combining It With Lazy Loading

Never combine loading="lazy" with the image you're preloading or marking as fetchpriority="high"—they're opposite strategies. Lazy loading delays the load; preload/fetchpriority accelerates it. Applying both to the same image confuses the browser and lazy loading usually wins, nullifying the benefit.

Expected Impact

If the preload is already declared as one of the first elements in the <head>, an additional fetchpriority="high" may not improve LCP much further; but if the preload happens after other resources have already loaded, a high fetchpriority can noticeably improve LCP.

How the UXR SEO Analyzer Detects This

The analyzer identifies the candidate LCP image element in the initial viewport and checks whether a corresponding <link rel="preload" as="image"> exists in the <head>, or whether the <img> tag includes fetchpriority="high". If neither signal is present, it's reported as a low-effort LCP improvement opportunity—usually one of the fastest fixes to apply in the entire audit.

Fetch Priority as a Standalone API

Beyond images, the fetchpriority attribute also applies to scripts, stylesheets, and iframes, letting you adjust the relative priority of any resource without relying exclusively on preload. For images, though, combining both techniques (preload for early discovery + fetchpriority for network priority) usually gives the best result when the LCP element isn't trivial to discover from the initial HTML.

Relationship to the Preload Scanner

The browser has a preload scanner that speculatively parses the HTML while the main parser keeps processing the document, discovering resources like images and scripts before the DOM tree is complete. This scanner already does a lot of work on its own—but it can't discover resources that only exist inside JavaScript or CSS rules, which is exactly the case where manual preloading becomes essential.


References

  1. web.dev - Preload critical assets to improve loading speed
  2. web.dev - Optimize resource loading with the Fetch Priority API
  3. web.dev - Optimize Largest Contentful Paint
  4. Chrome Developers - LCP request discovery

Related articles

Related version

Detailed guide

Image Preloading Guide: Practical Implementation to Reduce LCP

How to implement rel=preload and fetchpriority=high for the LCP image, including responsive variants and CSS backgrounds, without falling into the mistakes that cancel out the benefit.

Category hub

Hub

Images Seo Hub

Images are critical to user engagement—but they can also be your website's biggest performance bottleneck

In the same category

Introduction

Lcp Lazy Loading Explained

You've added lazy loading to your images to improve performance—but your page actually got slower

Introduction

Lcp Explained

Largest Contentful Paint (LCP) is one of Google's Core Web Vitals—a set of metrics that measure real-world user experience on your website

Introduction

Fetchpriority Explained

When your page loads, the browser makes dozens of requests for various resources—images, scripts, stylesheets, fonts

Introduction

Render Blocking Resources Explained

Render-blocking resources are files that prevent the browser from displaying content to users until they are fully downloaded and processed

Other topics

Hub

Performance Seo Hub

Performance is a critical ranking factor and directly impacts user experience