I don't trust programmers when they write "MB", I want them to mean 1 million bytes but often they mean 1048576 bytes instead!! GitHub just told me the file size limit is "100 MB", and I have no idea what they mean!! That's why you should always always ALWAYS write MiB!!
Vanilagy
@vanilagy.bsky.social
Author of Mediabunny and Marble Blast Web. I love working on technically challenging projects that bring the best out of the web. https://mediabunny.dev/
Uhhhhhmmm wtf It's only been 2 months since Mediabunny hit 1M/week
Mediabunny is full of workarounds for player-specific bugs. I just added a workaround for a WebKit-specific bug where a <video>'s UI control elements would never hide if an MP4/MOV had a video track with a non-zero "alternate_group" metadata field. Super random bug; reported it!
Mediabunny v1.52.2 now uses bicubic interpolation and mipmaps when resizing video, and as a result, produces way better visual reuslts when downsizing!
This type name sounds so goofy but I swear it makes perfect sense actually
Mediabunny v1.52.0 adds quantizer support for video encoding!! 🚀 What is it? It enables you to encode videos with a *constant quality* throughout. The encoder will automatically spend more bits when it needs to, to maintain quality. Read about it here: mediabunny.dev/blog/quantiz...
Mediabunny v1.52.0 adds quantizer support for video encoding!! 🚀 What is it? It enables you to encode videos with a *constant quality* throughout. The encoder will automatically spend more bits when it needs to, to maintain quality. Read about it here: mediabunny.dev/blog/quantiz...
Quantizer support in Mediabunny v1.52.0 | Mediabunny
Mediabunny v1.52.0 adds quantizer-based video encoding for AVC, HEVC, VP9, and AV1, enabling constant-quality video encoding.
mediabunny.dev
Big feature landing in Mediabunny tomorrow: quantizer support. This enables the user to encode video with a consistent *quality*, not *bitrate*. This is often the more desired behavior! It'll be impl'd in a way where most users will get the improvement automatically w/o changes
The problem with virtualized lists is that they break ctrl+F search, not sure if there's a good workaround My preference is just "you don't need to virtualize your list"
Linear progressive blur with a little bit of custom CSS This is why I will never touch native app development, web is just too powerful
When the blog post is from before 2023 so you can read it in peace knowing it's not slop
Here are the TurboRes x86-64 benchmarks for completion's sake. They're relevant because this is where FFmpeg's hand-written assembly actually kicks in (they don't have assembly for 10-bit IDCT on aarch64, so it falls back to the C impl, which is why I'm much faster on that arch).
me absolutely mogging ffmpeg in performance wasn't on my 2026 bingo card
me absolutely mogging ffmpeg in performance wasn't on my 2026 bingo card
I know nobody cares about this anymore but I have made the switch from tab to space indentation (in my new projects)
Cannot remember the last time I used a state machine pattern. Used it today, and the result is glorious It really helps you reason through complex logic
Google FINALLY has stopped "shadowbanning" Mediabunny for whatever reason. It actually returns proper results now! 🎉 Curiously, this happened almost exactly one year after releasing the site, which is exactly what happened another page of mine. Is this something Google does??
Big news for Wordpress users as client-side media processing will be part of the forthcoming 7.1 release. make.wordpress.org/core/2026/07... A huge round of applause is due to @kleisauke.nl and @vanilagy.bsky.social for all their work creating and maintaining wasm-vips and mediabunny respectively.
Client-Side Media Processing in WordPress 7.1
WordPress 7.1 ships client-side media processing – a capability that handles image compression, resizing, format conversion, rotation, and thumbnail generation directly in the user’s br…
make.wordpress.org
The new WordPress 7.1 uses Mediabunny for client-side GIF->MP4 conversion, holy shit!!
Bluesky wouldn't be complete without posts like these randomly appearing at the top of my feed for no reason
after you cum fuck it deeper. make sure you breed me throughly.
The Mediabunny API documentation pages now have a last-updated date on the page and, more importantly, in the sitemap.xml. It's cursed: the API docs are generated from the source code at build time, and they're never checked into git, so Vitepress has no way of knowing when the API last changed.
Mediabunny v1.51.0 ships with a banger new feature called "composable conversions". A major usecase this enables: combining multiple media files into one. You can take video from one file, audio from another, and merge them both into the same output file.
Mediabunny had a bug where nested encode workers would randomly stop working in Firefox. The solution: (💀)
I want to write up a blog post that goes into detail about how TurboRes is able to decode ProRes so quickly. Where are these writeups best posted? On a personal webpage or on something like Medium?
Mediabunny downloads have dipped slightly in the last weeks 🤔 I wonder how this happens
I'll be attending Local-First Conf in Berlin this weekend!! Lemme know if y'all are there 👀
One thing I really dislike about agentic coding is how learning is disincentivized now; you can achieve good results in a new area you've never done things in. Useful sure, but I also find it kinda sad. If I no longer learn or grow through my work, it feels less meaningful to me.
Just realized: Mediabunny is being used by more than 1k public GitHub projects!!
I don't think I can max it further lol
I added two new optimizations to TurboRes v1.2.0. It's now 8% faster single-threaded, and 15% faster multi-threaded! I'm pretty sure this is now very, very close to the practical limit of the performance that can be achieved on this task with WASM. I think I'm gonna stop here