AVIF Full-Range Marked as Limited: Visual Clipping

When an AVIF encoder incorrectly flags a full-range image as limited-range, the decoder misinterprets the data and expands the color space during display, causing severe visual clipping. Because the decoder assumes the pixel data is restricted to standard studio range (such as 16–235 in 8-bit), it aggressively stretches the values to fit the display's 0–255 range. This mismatch results in immediate shadow crushing, blown-out highlights, artificial contrast spikes, and loss of tonal gradation.

Crushed Shadow Detail (Sub-Black Clipping)

In standard 8-bit color, full-range content assigns luminance and chroma values from 0 to 255, whereas limited-range reserves values below 16 as footroom. When a decoder processes a full-range file marked as limited, it treats 16 as the absolute black point (0 on a standard display).

Any original pixel values between 0 and 15 are discarded or clamped to absolute black. Visually, this produces severe "crushed blacks":

Blown-Out Highlights (Super-White Clipping)

A parallel error occurs at the top end of the tonal scale. Limited-range encoding designates 235 as the reference white point, leaving values from 236 to 255 as headroom.

Because the decoder believes the image is limited-range, it scales code value 235 up to absolute display white (255). Consequently, every code value originally stored between 236 and 255 is clipped to maximum brightness:

Exaggerated Contrast and Color Distortion

Beyond clipping the extreme ends of the spectrum, the decoding process artificially stretches the remaining midtones (values 16 through 235) across the entire 0–255 display canvas.

This unwarranted expansion creates several secondary visual artifacts:

Impact on 10-Bit and 12-Bit AVIF Files

While the problem is most frequently conceptualized in 8-bit numbers, it applies identically to higher bit depths common to AVIF:

Correcting the Artifact

The image data itself contains the full detail; the degradation occurs entirely during the rendering stage due to invalid metadata. Correcting the container or bitstream flag (specifically setting the video full-range flag to 1 or full rather than 0 or limited) restores the intended 0–255 mapping, instantly recovering the clipped shadows and blown-out highlights without requiring recompression of the underlying AV1 stream.