Logo with initials
Click me x5 ↓

WebP and AVIF images with Gatsby

Last updated on March 3, 2021

One of my favourite features of Gatsby is that it can process your images. This goes from simple size optimisations to compression. Gatsby even allows you to use the brand-new AVIF image format and the not-so-new WebP format.

With gatsby-plugin-image

Using the plugin, you can access the WebP and AVIF versions of the image that you want by adding them to the formats array.

{
  childImageSharp {
    # Other options include width/height (set both width and height to crop),
    # grayscale, duotone, rotate, etc.
    gatsbyImageData(formats: [AUTO, WEBP, AVIF])
  }
}

No plugin

If you’re not using gatsby-plugin-image, which is my case, you can still take advantage of the WebP conversion by grabbing the WebP source directly.

{
  image {
    id
    childImageSharp {
      # width, height and quality are optional
      fixed(width: 300, quality: 70) {
        srcWebp
        src
      }
    }
  }
}

Then use the <picture> element to serve WebP images to browsers that support it.

<picture>
  <source srcSet={image.srcWebp} type="image/webp" />
  <img src={image.src} alt="Book cover" loading="lazy" />
</picture>

That’s it, enjoy WebP images