WebP is a file format based on the RIFF container specification that, like *.heif and *.avif, builds upon a video codec (VP8) to support Lossy and Lossless Image Compression. WebP tends to be largely used for websites, though not all websites support uploading such files. If you self-host you can investigate whether WebP is an improvement over *.jpg or *.png. However, it is not very widely supported by image editors, so if you are doing collaboration with other artists, it may be better to use a different file format.
Krita has supported simple WebP export for a while, but since 5.1 it supports all the export options offered by libwebp.
Instead of making you responsible for the precise settings, the WebP exporter will try out different techniques to compress better. You give a goal (a given quality or a certain file size) to aim for, and it will try its best to reach that goal. To do this, it may actually try to redo a given step of the encoding process several times. In the end, what you will have to choose is whether you want a high quality result at the cost of a slow export, or a quick export at the cost of quality.
WebP offers some presets for a given type of photo. For stylized images, use Line Drawing, for painterly images, use Portrait or Outdoor Photo.
- Lossless Compression:
Use the lossless compression mode, this is a slightly different algorithm, which is heavier but gives better results for sharp contrasts.
Slider for quality.
With Lossless Compression, 0% means the library will use the fewest amount of algorithmic tricks to reduce file size. This means fast saving times, at the expense of larger files. Conversely, 100% means all algorithmic tricks will be used, leading to the smallest file size, but saving will take longer. The first is best for a situation where speed is more important than size, such as files you share via USB. The latter is useful for situations where the file size can become a problem, such as serving it over the Internet.
Without Lossless Compression, image information considered redundant will be removed, rather than compressed. This means that at 0%, the most information will be lost and thus the smallest file size is achieved. This also reduces the overall quality. Conversely, 100% will remove the least amount of image information and thus maintain quality at the expense of a large file size.
- Trade Off
A slider that allows you to select whether saving speed is more important than quality.
This enables dithering, which allows storing fewer colors while still keeping good gradients.
- SNS Strength:
Specifies the strength of the Spatial Noise Shaping algorithm, which tries to see if parts of the image can be better compressed than other parts.
- Filter Strength:
Strength of the deblocking filter. 0% will mean there’s no filtering after decoding, with increasing filter strength the image will appear smoother.
- Filter Sharpness:
Defines the sharpness of the deblocking filter, with 0 being the sharpest and 7 being the least sharp.
- Filter Type:
Type of deblocking filter, options are Strong and Simple.
- Alpha Plane Compression:
Whether to losslessly compress the alpha channel (Lossless) or outright discard it (None). None
- Predictive Filtering for Alpha Plane:
Whether to use predictive filtering for the alpha/transparency. Best will try all potential predictive filter modes before deciding which one to use, making it slower than Fast, which just makes a guess and selects that.
- Alpha Plane Quality:
Compression quality for the alpha channel. 0% means smallest size, 100% means no compression. Only with Alpha Plane Compression set to Lossless.
- Show Compressed:
Tells libwebp to skip the in-loop filtering step. May adversely affect the quality of the end file.
- Multithreaded Encoding:
Use multithreading for encoding if possible.
- Reduce Memory Usage:
Try to reduce memory usage at the cost of speed.
Preserve RGB values in transparent areas instead of defaulting them to transparent black.
- Use Sharp YUV:
Whether to use the slower, but more accurate, RGB to YUV conversion.
The following options only apply if Lossless Compression is off.
- Target Size:
Specify the amount of bytes to aim for.
- Target PSNR:
PSNR means Peak Signal to Noise Ratio <https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio_>, and indicates how much noise the image has. Higher values mean less noise is accepted.
How many segments the VP8 video codec can divide the image into. VP8 accepts between 1 and 4 segments.
Sets how many partitions can the VP8 codec use for storing decompression information. Must be between 0 and 3. Default is 0 to make decoding easier.
- Auto Adjust Filter Strength:
The encoder will spend some time tuning and selecting the best filter options before encoding.
- Entropy Passes:
Number of passes to do for selecting the best option between target size and target PSNR.
- Emulate JPEG Size:
The encoder will try to match the size of a jpeg of similar dimensions.
- Minimum Quality:
Used with ‘entropy passes’, the lowest allowed quality for the image.
- Maximum Quality:
Used with ‘entropy passes’, the highest allowed quality for the image.
- Preprocessing Filter:
Whether or not to add Pseudo Random Dithering to the image before converting RGB to YUV.
The following options only work with Lossless Compression on.
- Partition Limit:
Limit how big a given segment is in bytes. The higher this is, the less possible information is stored per segment.
- Near Lossless:
The encoder is able to minimally adjust pixel-values so they compress better in lossless compression mode. This enables this feature. Automatically triggers Lossless Compression.