For years, SEO professionals and web developers obsessively tracked First Input Delay (FID) as the primary metric for website interactivity. In March 2024, Google officially replaced FID with a much stricter, highly complex metric: Interaction to Next Paint (INP). While INP is generally associated with heavy JavaScript execution, one of its silent killers is actually entirely visual: high-resolution image decoding.
What is Interaction to Next Paint (INP)?
INP measures the sheer responsiveness of your page across its entire lifecycle—not just the first click. Whenever a user clicks a button, taps a link, or presses a key on their keyboard, INP logs the time it takes for the browser to visually update the screen in response to that interaction.
A "Good" INP score means the browser responds in under 200 milliseconds. A "Poor" score means it takes longer than 500 milliseconds. If your website feels sluggish, laggy, or unresponsive when a user clicks a dropdown menu, your INP is failing.
The Main Thread Bottleneck
To understand how images ruin INP, you need to understand the browser's Main Thread. The browser has a single "superhighway" used to execute JavaScript, calculate CSS layouts, and paint pixels to the screen. Because it is a single-lane highway, it can only do one task at a time.
If a user clicks an "Add to Cart" button, an event listener fires and JavaScript attempts to update the cart icon. However, if the Main Thread is currently busy doing a massive, complex calculation, that JavaScript event is forced to wait in line. The screen freezes, the button fails to click instantly, and the user experiences severe lag (jank). This wait time directly inflates your INP score.
The Hidden Cost of Image Decoding
Most people assume images only cause problems during the network download phase (affecting metrics like Largest Contentful Paint). But what happens after the image finishes downloading?
Before an image can be displayed, the browser must decode it. It has to take the compressed JPEG or WebP file and mathematically decompress it back into millions of raw, uncompressed pixels that the GPU can paint onto the monitor.
Decoding Blocks the Main Thread
Historically, image decoding happened directly on the Main Thread. If you forced a mobile browser to decode a giant, uncompressed 10MB JPEG, the math required would hijack the Main Thread for hundreds of milliseconds. If a user tried to scroll or tap a button during that exact window, the browser would ignore them until the decoding finished. Result: A terrible INP score.
The Solutions: How to Protect Your INP
Fixing image-related INP issues requires a combination of aggressive compression and modern HTML attributes.
1. Use Async Decoding
In 2026, modern browsers support the `decoding="async"` attribute on `<img>` tags. By explicitly adding this attribute (`<img src="hero.jpg" decoding="async" />`), you command the browser to move the heavy math of image decoding off the Main Thread and onto a background thread.
This frees up the Main Thread immediately, meaning if the user clicks a button while the image is decompressing in the background, the UI remains instantly responsive.
2. Compress and Resize Relentlessly
Even with async decoding, throwing massive files at low-end mobile CPUs is a terrible idea. The processing cost scales exponentially with resolution. An image that is 4000x4000 pixels requires computing 16 million pixels. Scaling that image down to its exact display size (e.g., 800x800) reduces the workload to just 640,000 pixels—a 96% reduction in CPU processing time.
- Never serve raw photos: Always compress your assets using tools like EasyImageCompress.
- Convert legacy formats: Transitioning from heavy JPEGs to hyper-efficient formats like WebP significantly lowers the computational overhead required by the browser's rendering engine.
- Use Next-Gen Codecs carefully: While AVIF provides the best file size, it requires far more CPU power to decode than WebP. If INP is your primary focus on low-end devices, highly-compressed WebP often provides the best balance of network speed and decoding speed.
In the era of Core Web Vitals, performance is holistic. You cannot just optimize for network speed; you must optimize for the device's CPU. By crushing file dimensions and leveraging async rendering, you guarantee that your visuals never hold your interactive UI hostage.