Web Development / SEO
Article Image Performance
Learn how to improve article image performance with right-sized images, responsive delivery, LCP-aware loading, lazy loading, and quality-preserving compression.
This article is part of the BadGames article-image SEO cluster. The page treatment highlights the image decision that matters most for this specific topic.
Key Takeaways
Use the right image for the job. The article image should support the reader’s decision instead of acting as decoration.
Keep the page scannable. Inline assets should break up the article only where they make the topic easier to understand.
Publish the metadata. Featured images, social images, alt text, and preview metadata need to agree with the article.
A featured image can make an article feel polished, useful, and worth reading.
It can also make the article slow.
That is the problem. The same image that makes the article look better can become one of the heaviest resources on the page. If it loads too late, is too large, uses the wrong format, or is lazy-loaded when it should not be, the article feels slower than it needs to.
Good article image performance is not about making images tiny and ugly. It is about serving the right image, at the right size, at the right time.
For the design side of article images, start with our pillar guide to featured image best practices for articles. For image SEO, see Image SEO for Developers. For Google Discover-specific image rules, see Google Discover Images for Articles. For dimensions and crop decisions, see our guide to WordPress featured image size.
This article focuses on performance.
Why article images affect performance
Images are often among the largest resources on a web page. A single large featured image can weigh more than the HTML, CSS, and JavaScript needed to render the article.
That matters because readers do not experience a page as a technical waterfall. They experience it as:
Did the page show up quickly, or did it feel slow?
The main featured image often appears near the top of the article. That means it may become the Largest Contentful Paint, or LCP, element. LCP is a Core Web Vitals metric that measures when the largest visible content element is rendered. If the article hero image is the LCP element and it loads late, the page can feel slow.
web.dev’s LCP guidance explains that lazy-loading an LCP image can delay loading, because the browser may not start fetching the image until after layout confirms it is in the viewport. web.dev LCP optimization
So the first rule is simple:
Do not treat all images the same.
The above-the-fold featured image needs different handling than images further down the article.
The performance goal
The goal is not:
Use the smallest possible image.
The goal is:
Use the smallest image that still looks good in the place where it appears.
That difference matters.
A 1600 × 900 featured image might be reasonable for a wide article hero. It might be wasteful inside a 360 px mobile card. A 1200 px-wide image might be perfect in one layout and too small in another. A heavily compressed image might load fast but look bad enough to weaken the article.
Good performance is a balance:
- large enough to look sharp
- compressed enough to load quickly
- served in the right dimensions
- loaded at the right time
- not repeated unnecessarily
- not hidden behind render-blocking work
Social Preview
Shared links should signal speed and quality.
The social preview frames the article around the practical tradeoff: keep featured images sharp while controlling bytes, dimensions, and loading behavior.
Start with the right master image
Before performance optimization, we need a sane master image.
For our article workflow, a practical policy is:
| Use | Good size |
|---|---|
| Preferred article master | 1600 × 900 |
| Smaller approved 16:9 article image | 1280 × 720 |
| Social preview crop | 1200 × 630 |
| Square crop when needed | 1200 × 1200 |
| 4:3 crop when needed | 1200 × 900 |
The master should be big enough for the article layout, but not absurdly large.
Avoid uploading original production exports such as:
4000 × 2250
6000 × 3375
7680 × 4320
Those may be useful as private source files, but they are usually not what we want to serve directly on an article page.
A good production workflow is:
Keep the source file separately.
Export web-ready sizes.
Upload the web-ready image.
Let WordPress generate responsive variants where appropriate.
Do not confuse the design source with the web image.
Choose the right image format
There is no single perfect image format for every article image.
A practical rule:
| Format | Best for |
|---|---|
| JPEG | Photos and complex images where broad compatibility matters |
| WebP | Good default for many web images, photos, illustrations, and mixed graphics |
| PNG | Images needing transparency or crisp lossless detail, but often heavier |
| SVG | Simple vector graphics, icons, diagrams, logos |
| AVIF | Very efficient compression, but test quality and workflow support |
For featured images, WebP or optimized JPEG is usually the practical default.
Use PNG carefully. It can be useful for sharp UI graphics or transparency, but it can also become much heavier than needed.
Use SVG for diagrams and vector graphics when the image is truly vector-friendly. Do not force complex illustrations or screenshots into SVG just because vector sounds better.
The right format depends on the image.
Compression should be visible, not theoretical
Compression is not just a number.
A featured image should be checked visually after export. Too little compression gives us heavy files. Too much compression creates artifacts, muddy gradients, noisy text, or blurry UI.
Good compression questions:
- Does the image still look sharp at article size?
- Are gradients clean enough?
- Are UI edges readable?
- Is small text avoided or still readable?
- Is the file size reasonable?
- Does the mobile version download a smaller file?
For technical images, watch out for:
- blurry code
- fuzzy UI labels
- banding in dark gradients
- noisy backgrounds
- compression artifacts around text
- low-quality screenshots scaled up too far
A clean, simple composition often compresses better than a noisy, busy one. Good design can improve performance.
Use responsive images
Responsive images let the browser choose a suitable file for the user’s screen and layout.
Instead of forcing every visitor to download one large image, we can provide several sizes:
<img
src="/images/article-image-1200.webp"
srcset="/images/article-image-800.webp 800w,
/images/article-image-1200.webp 1200w,
/images/article-image-1600.webp 1600w"
sizes="(max-width: 800px) 100vw, 1200px"
width="1600"
height="900"
alt="Article preview image showing responsive image sizes for desktop and mobile layouts."
>
MDN explains that responsive images help serve different image resources depending on the device, resolution, and layout. MDN responsive images
web.dev also explains that srcset and sizes help the browser choose the best image based on what it knows about the user, device, and browsing situation. web.dev responsive images
This is especially important on article pages because the same featured image may appear in different contexts:
- full article hero
- archive card
- related post card
- mobile header
- sidebar module
- social preview
One original image should not mean one downloaded file for every situation.
WordPress already helps, but we still need to check it
WordPress has supported responsive images since WordPress 4.4 by adding srcset and sizes attributes to generated image markup. WordPress responsive images documentation
That is helpful, but it does not mean everything is automatically perfect.
We still need to check:
- what size was uploaded
- what sizes WordPress generated
- whether the theme outputs the right image size
- whether
sizesmatches the actual layout - whether the featured image is lazy-loaded
- whether the image is being served as full size when a smaller one would do
- whether custom image sizes are needed for cards or hero images
WordPress can generate the tools. The theme still needs to use them correctly.
Scan-Friendly Summary
A fast-image checklist before publishing.
The summary graphic pulls the performance workflow into one pass: choose dimensions, compress carefully, set responsive output, and verify real page weight.
Do not lazy-load the main featured image
Lazy loading is good for images that are below the fold.
It is usually bad for the main image that appears at the top of the article.
web.dev’s browser-level lazy-loading guidance recommends eager-loading images visible in the first viewport and using lazy loading for images that are off-screen. It also recommends using fetchpriority="high" for important images such as the LCP image. web.dev browser-level lazy loading
For a main featured image near the top of the article, this is usually better:
<img
src="/images/article-featured-image-1600.webp"
width="1600"
height="900"
fetchpriority="high"
alt="Article hero image showing a fast featured image loading above the fold."
>
For an image further down the article, this is usually fine:
<img
src="/images/article-inline-example.webp"
width="1200"
height="675"
loading="lazy"
alt="Inline article screenshot shown later in the article."
>
The practical rule:
Above the fold: load normally.
Likely LCP image: consider fetchpriority="high".
Below the fold: lazy-load.
Do not use lazy loading everywhere just because it sounds like a performance feature.
Use fetchpriority carefully
The Fetch Priority API lets us signal that a resource is more or less important to the browser. web.dev explains that fetchpriority="high" can help improve loading for important resources, especially LCP images. web.dev Fetch Priority
For example:
<img
src="/images/featured-image-1600.webp"
width="1600"
height="900"
fetchpriority="high"
alt="Featured image loaded with high fetch priority because it is likely the LCP image."
>
But this should not be added randomly to every image.
Use it when:
- the image appears above the fold
- the image is likely the LCP element
- the image is important to the first view
- the browser may otherwise discover it too late
Do not use it for:
- every thumbnail
- every inline image
- below-the-fold images
- decorative images
- images hidden until interaction
Priority only helps when we prioritize the right thing.
Set width and height
Always set image dimensions.
This helps the browser reserve space before the image loads, reducing layout shifts.
Good:
<img
src="/images/image-seo-guide.webp"
width="1600"
height="900"
alt="Image SEO diagram showing metadata, filenames, and structured data."
>
Weak:
<img
src="/images/image-seo-guide.webp"
alt="Image SEO diagram showing metadata, filenames, and structured data."
>
The browser can do a better job when it knows the image dimensions early.
In WordPress, this is usually handled when images are inserted through normal media functions, but custom theme output should still be checked.
Avoid serving full-size images in cards
Article archive cards and related-post cards do not need full hero images.
If a card displays an image at 360 px wide, serving a 1600 px-wide file is wasteful.
A good system should use different image sizes for different contexts:
| Context | Example displayed width | Better source |
|---|---|---|
| Article hero desktop | 900–1200 px | 1200–1600 px source |
| Article hero mobile | 360–430 px | 800 px source often enough |
| Archive card | 300–500 px | 600–800 px source |
| Related post card | 250–400 px | 500–800 px source |
| Social preview | Platform-controlled | Dedicated OG image |
This is where WordPress image sizes and responsive markup matter.
The theme should not use the full original image everywhere.
Avoid double-loading hero images
A common mistake is loading the same visual twice:
- once as a CSS background
- once as an
<img> - once as a preload
- once again through JavaScript
- once as a hidden mobile/desktop duplicate
This can happen when themes use separate hero implementations for desktop and mobile.
Better:
- use one image element when the image is content
- use
pictureif we need different art direction - avoid hidden duplicate images
- avoid preloading an image that is not actually used
- check the Network panel after publishing
If the browser downloads two large hero images but only one is visible, performance suffers for no benefit.
Use picture for art direction when needed
Sometimes responsive images are not enough because the crop itself needs to change.
For example:
- desktop hero: wide browser frame
- mobile hero: tighter crop around the main subject
- desktop image: full diagram
- mobile image: simplified vertical crop
In that case, use the picture element:
<picture>
<source
media="(max-width: 700px)"
srcset="/images/article-image-mobile.webp"
>
<img
src="/images/article-image-desktop.webp"
width="1600"
height="900"
alt="Article image adapted for desktop and mobile crops."
>
</picture>
MDN documents the picture element as a way to provide alternative image sources for different display or device scenarios. MDN picture element
Use this when the composition needs to change, not just when the file size needs to change.
For normal size switching, srcset and sizes are usually enough.
Keep image design performance-friendly
Some images compress better than others.
Performance-friendly featured images often have:
- clear focal point
- limited visual noise
- controlled gradients
- simple background
- sharp subject
- limited tiny text
- no unnecessary texture everywhere
Performance-hostile images often have:
- heavy noise
- dense texture
- tiny text
- too many small objects
- busy screenshots
- full-page desktop captures
- complex overlays
- unnecessary transparency
This does not mean all images should look flat or boring. It means we should avoid accidental complexity.
A clean image is usually better for both readers and file size.
Build a simple file-size budget
A file-size budget prevents every article image from becoming a one-off decision.
A practical starting budget:
| Image type | Target |
|---|---|
| Main featured image 1600 × 900 | Often under 250 KB if possible |
| Main featured image 1280 × 720 | Often under 180 KB if possible |
| Archive/card image | Often under 100 KB |
| Inline screenshot | Depends on detail, but should be optimized |
| SVG diagram/icon | Usually very small, but clean the SVG |
These are not hard laws. Some images need more. Some can be much smaller.
The point is to make image weight visible.
If a simple featured image is 900 KB, something is probably wrong.
Test on the real page
Do not judge image performance only from the media library.
Test the published page.
Check:
- which image file is downloaded
- whether the browser picked the expected
srcsetcandidate - whether the image is lazy-loaded
- whether the image is likely the LCP element
- whether there are duplicate image downloads
- whether the image dimensions are set
- whether mobile downloads a smaller image
- whether the image is much larger than the rendered size
Useful tools:
- browser DevTools Network panel
- browser DevTools Performance panel
- Lighthouse
- PageSpeed Insights
- WebPageTest
- Google Search Console Core Web Vitals reports
The final rendered page matters more than the intended setup.
WordPress checklist for featured image performance
For a WordPress article, check:
Was a reasonable original image uploaded?
Did WordPress generate responsive image sizes?
Does the theme output `srcset` and `sizes`?
Is the main featured image above the fold?
If yes, is it not lazy-loaded?
If it is likely LCP, should it use `fetchpriority="high"`?
Are width and height present?
Are archive cards using smaller image sizes?
Are related posts using smaller image sizes?
Is the image compressed?
Is the file format appropriate?
Is the same image downloaded twice?
Does mobile get a smaller file?
This is where small theme decisions matter.
A good content image can still perform badly if the theme outputs it badly.
Common mistakes
Uploading huge originals directly
A 6000 px-wide export is usually not a web-ready featured image.
Keep source files separately. Upload optimized web exports.
Lazy-loading the hero image
Lazy loading is useful below the fold. It can hurt the main image above the fold.
Using full-size images in cards
Cards and thumbnails should not download the full article hero image.
Ignoring sizes
If sizes does not match the layout, the browser may download a larger image than needed.
Compressing until the image looks bad
Fast but ugly is not the goal. Compress to a good visual result.
Using PNG for everything
PNG can be useful, but it is often too heavy for article hero images.
Forgetting mobile
A desktop image strategy is not enough. Mobile readers need smaller files too.
Loading the same image twice
Check for duplicate downloads caused by CSS backgrounds, hidden images, preloads, or JavaScript.
Official references
For more detail, these are the main resources worth reading:
- web.dev LCP optimization
- web.dev browser-level lazy loading
- web.dev Fetch Priority
- web.dev responsive images
- MDN responsive images
- MDN picture element
- WordPress responsive images documentation
Final thought
Article image performance is not about removing images.
It is about publishing images properly.
A good featured image should be:
Large enough to look good.
Small enough to load fast.
Served in responsive sizes.
Loaded early when it is above the fold.
Lazy-loaded when it is below the fold.
Compressed without visible damage.
Used once, not duplicated.
Tested on the real page.
That is the balance we want.
Not tiny images. Not huge images. Not lazy-loading everything. Not uploading one massive file and hoping WordPress fixes it.
Just a clean image workflow that makes articles look good and load fast.
More from BadGames
Read the latest game development articles.
Browse practical notes on browser libraries, production choices, game business, careers, and the decisions behind playable work.
WebGPU Reaches Mainstream Runtimes, but Discovery Remains the Real Bottleneck
The BadGames Report looks at Phaser 4.3 WebGPU, Godot 4.8 texture streaming, Steam demo algorithm updates, instant web…
Read article
AI Can Build a Tiny MMO, but It Cannot Maintain an Engine
The BadGames Report looks at PointlessQuest, Godot's AI contribution problem, engine maintenance updates, browser-game tooling and indie platform…
Read article
What Is On-Page SEO and How Do You Do It?
Learn how to optimize your web pages for better search visibility. Discover the essential elements of on-page SEO,…
Read article