Bloat Libvpx May 2026

If you are just decoding video (not encoding), consider dav1d for AV1 or ffmpeg with --enable-libvpx --disable-everything . But that is a story for another day.

But in recent years, a quiet grumble has emerged from embedded systems engineers, Linux distribution maintainers, and build-from-source enthusiasts. That grumble has a name: What is "Bloat libvpx"? To the uninitiated, "bloat" might sound like an insult. In this context, it’s a technical observation. "Bloat libvpx" refers to the phenomenon where the standard compilation of the library produces a binary that is significantly larger, slower to compile, or more resource-hungry than necessary for a given use case.

--disable-vp8-encoder --disable-vp9-decoder When cross-compiling, specify exactly the architecture: bloat libvpx

./configure --disable-runtime-cpu-detect --enable-static This tells the compiler: "Don't write the dispatcher. Just write the code for the CPU I am sitting on." This can cut binary size by 30-40%. Don't need VP8? (You probably don't; you want VP9). Or vice versa? You can't fully disable one easily, but you can reduce features:

From the perspective of a desktop Linux user: libvpx is lean, fast, and necessary. The "bloat" is actually future-proofing . If you are just decoding video (not encoding),

From the perspective of an IoT developer with 32 MB of total flash storage: The default libvpx is a nightmare of redundant symbol tables and CPU dispatchers that will never fire on their hardware.

We aren't talking about malware. We are talking about feature creep . That grumble has a name: What is "Bloat libvpx"

The problem isn't Google's code. The problem is that the open-source ecosystem has standardized on a as the default. We need better documentation for "embedded" or "minimal" profiles.