Why This Happens
Animation-heavy media slowdown often shows up when a WordPress 6 Gutenberg image block is used to deliver animated GIFs or other large image assets that behave like short videos. That is a poor fit for Core Web Vitals. WordPress core treats the Image block as an image workflow, while animated content usually needs a media delivery strategy closer to video.
The technical problem is not just file size. It is a mix of transfer weight, decoding cost, responsive image limitations, and loading priority. WordPress documents that the Image block is built for image content, while the Video block exposes controls such as autoplay, loop, muted, inline playback, preload, and poster image that are better suited to motion media.
If your page feels slow after adding animated hero media, product demos, or looping illustrations, the fastest fix is usually to stop treating that asset like a normal image.
Quick Diagnosis Table
| Symptom | Likely Cause | Best Fix |
|---|---|---|
| Slow Largest Contentful Paint on pages with animated media | Large animated GIF in an Image block | Replace the GIF with MP4 or WebM in a Video block |
| High mobile page weight | Animation file is too heavy for image delivery | Re-encode media and reduce dimensions or frame rate |
| Hero animation loads late | Critical media is being lazy-loaded | Exclude above-the-fold media from lazy loading |
| WordPress serves only one heavy GIF source | Animated GIF handling limits responsive `srcset` behavior | Move animation to video or animated WebP workflow |
| Layout jumps around the media | Missing intrinsic dimensions or unstable media container | Set explicit width and height or reserve aspect ratio space |
The WordPress 6 Image Block Bottleneck
A key WordPress core detail explains why animation-heavy media slowdown gets worse in the Gutenberg image block. In `wp_calculate_image_srcset()`, WordPress notes that it flattens animated GIFs to one frame when generating intermediate sizes. To avoid breaking animation, WordPress does not generate a normal `srcset` for a full-size GIF source.
That matters because responsive image delivery is one of the main ways WordPress keeps image payloads down. When that responsive path is limited, the browser is more likely to download a larger animated file than the viewport really needs. On mobile, that can easily turn one decorative block into the largest performance problem on the page.
Google’s Largest Contentful Paint documentation also notes that animated content can become an LCP candidate, using the first frame presentation time. In practice, a heavy animated image can delay the moment users feel the page is usable.
Fix Animation-Heavy Media Slowdown at the Source
The strongest fix is to replace animated GIF delivery with actual video delivery.
Google’s guidance in Replace animated GIFs with video is blunt: animated GIFs are often dramatically larger than equivalent MP4 or WebM files. Their example shows a 3.7 MB GIF shrinking to 551 KB as MP4 and 341 KB as WebM. That is exactly the kind of reduction that improves LCP and total page weight.
For WordPress, that means:
- Keep still images in the Image block.
- Move looping motion assets into the Video block.
- Export at the smallest practical dimensions.
- Use MP4 as the baseline format, with WebM as an optional secondary source when your workflow supports it.
A useful WordPress-focused reference is this Flux Plugins guide on video file formats for the web and WordPress, which explains why MP4 is usually the safest default and why WebM can help with additional compression in modern browsers.
Recommended Fix Path by Scenario
Above-The-Fold Hero Animation
If the animation is your hero media, do not leave it as a GIF inside the Image block.
Use this approach instead:
- Convert the animation to MP4.
- Add it with the Video block.
- Enable loop and muted if the clip should behave like a silent animation.
- Keep playback inline.
- Use a poster image only when it improves the initial visual state and you have tested the effect on LCP.
- Do not lazy-load that hero media.
WordPress core’s loading optimization attributes make clear that a resource should not be both `loading="lazy"` and `fetchpriority="high"`. That is a good reminder: critical media needs priority, not deferral.
Below-The-Fold Decorative Animation
If the asset is lower on the page and not essential to first paint:
- Consider replacing it with a static image plus click-to-play video.
- If the motion is optional, keep only a poster image on initial load.
- Lazy-load non-critical supporting images, but reserve layout space.
- Reduce resolution before upload.
This keeps the visual effect without forcing the user to pay the network and decode cost during the most sensitive loading window.
Product Demo or UI Walkthrough
For short demo loops inside content:
- Use a Video block instead of an Image block.
- Export a short MP4 first.
- Add captions or text nearby instead of burning text into a giant animation.
- Keep dimensions aligned with the content column, not the original screen recording size.
That workflow is usually both faster and more accessible.
Block-Level Settings That Matter
Even after you move the asset out of the Image block, settings still matter.
Use The Right Block
WordPress separates Image block and Video block behavior for a reason. If the file is motion media, use the motion media block.
Avoid Lazy Loading Critical Media
WordPress automatically adds optimization attributes to images in many contexts. The core function `wp_get_loading_optimization_attributes()` shows that lazy loading and high fetch priority should not be applied together. If the animated asset is central to the page, let it load eagerly.
Preserve Dimensions
WordPress core also expects width and height data when applying loading optimizations. Stable dimensions help prevent layout shift and reduce perceived jank around the media container.
Keep Responsive Images for Still Assets
The Image block is still the right choice for posters, thumbnails, screenshots, and static illustrations. Just do not make it carry heavy looping animation when WordPress’s GIF handling can limit responsive behavior.
A Practical Custom Filter for Edge Cases
If you cannot rebuild the block layout immediately, you can at least tune image output for specific attachments using the `wp_content_img_tag` filter documented by WordPress.
add_filter('wp_content_img_tag', function ($filtered_image, $context, $attachment_id) {
$critical_ids = array(123, 456);
if (in_array($attachment_id, $critical_ids, true)) {
$filtered_image = str_replace('loading="lazy"', 'loading="eager"', $filtered_image);
if (strpos($filtered_image, 'fetchpriority=') === false) {
$filtered_image = str_replace('<img ', '<img fetchpriority="high" ', $filtered_image);
}
}
return $filtered_image;
}, 10, 3);
Use that carefully. It can help a true hero image, but it does not solve the bigger problem if the asset is still a huge animated GIF.
Format And Delivery Recommendations
A simple decision framework works well:
- Use JPEG, WebP, or AVIF for still imagery.
- Use MP4 for the safest cross-browser animated replacement.
- Add WebM only when your pipeline supports it cleanly.
- Avoid animated GIFs for large or prominent motion assets.
For broader context, Flux Plugins’ article on web image performance summarizes a consistent pattern across performance datasets: oversized images, GIF animation, and lazy-loading mistakes are recurring causes of poor Core Web Vitals.
Conclusion
The cleanest fix for animation-heavy media slowdown caused by the WordPress 6 Gutenberg image block is to stop forcing animated content through the image path. WordPress core already signals why this is fragile: animated GIF handling limits normal responsive image behavior, and Core Web Vitals penalize large, late-rendering media.
If the animation matters, move it to the Video block and encode it as MP4, with WebM as an optional enhancement. If it does not matter, replace it with a static image. Then make sure only below-the-fold media is lazy-loaded, keep dimensions explicit, and reserve the Image block for true images. That combination usually delivers the biggest performance win with the least editorial friction.