Vanilagy
banner
vanilagy.bsky.social
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/
A sneak peak at the upcoming @mediabunny/server extension 👀

This code transcodes an H.264 .mp4 to a VP9 .webm in Node.js, fully utilizing hardware-accelerated codecs! Takes around 400 ms for a 4-second video.
December 30, 2025 at 5:37 PM
There are still plenty of niche bugs in the WebCodecs API. Mediabunny uses WebCodecs and ships with dozens of workarounds for these bugs to ensure consistent behavior across browsers. Here's one example that I just added today!
December 30, 2025 at 3:19 PM
Love the Chrome DevTools profiler. Made me find out about this one line that was unexpectedly making my function way slower than expected. After changing it, now it's 10x faster, and the fix took like 2 minutes. Picking these low-hanging perf fruits is usually just worth it!
December 27, 2025 at 7:51 PM
Here's my talk from Demuxed two months ago! I go into the backstory of how Mediabunny came to be, and talk about the design decisions that shaped its API.

This is also my first ever conference talk, and I'm very proud to have made it here😊

youtu.be/7aiUODXMuaQ
David Payr - Performant and accessible client-side media processing with Mediabunny
YouTube video by Demuxed
youtu.be
December 20, 2025 at 9:53 AM
A lil sneak peak at the upcoming SampleCursor API in Mediabunny v2! It's quite the beast.

It offers a single, unified API for decoding video and audio data, optimized for real-world use cases: creating video players and editors, thumbnail extraction, etc.
December 18, 2025 at 8:03 PM
You know your code is god tier when ESLint pulls this (the file is syntactically valid)
December 18, 2025 at 6:54 PM
My docs generator got lazy
December 17, 2025 at 3:30 PM
API design can be hard, almost paralyzing at times. Any feature I add to Mediabunny now I think hard about because I won't be able to change the API anymore until v2. Maybe a more practical approach would be to label the feature as "beta" first, still allowing myself to break it.
December 17, 2025 at 11:03 AM
Hit half a million monthly downloads for Mediabunny. Woah
December 17, 2025 at 8:32 AM
It's a shame TypeScript's type system does not model exception types at all. Makes it super hard to predict all the ways a system could fail - you're forced to "just know" and keep it as mental state.

Maybe I should explore going all "errors as values".
December 14, 2025 at 10:54 AM
I'm trying to get the "Used by" section to appear for Mediabunny, but no luck. Any steps I'm missing? GitHub says I need to enable the "Dependency graph" for the repo, which I just did. Maybe need to wait a lil?
December 11, 2025 at 7:27 AM
ProRes Log video file playing in Chromium with Mediabunny 👀 Spent the day playing around with this!
December 10, 2025 at 5:14 PM
400k monthly Mediabunny downloads, nuts! (and 67 online Discord members)
December 9, 2025 at 3:37 PM
I need to know; am I crazy for naming my tests like this??

I personally find the usual pattern

"it should be able to encode aac in adts format"

to be such unnecessary fluff and I don't see a good reason for naming my tests that way. Change my mind I guess?
December 5, 2025 at 7:45 AM
I created a new library which polyfills the WebCodecs API in server-side environments such as Node and Bun.

Full bidirectional encoding and decoding support for all codecs in the API, automatically hardware-accelerated, and super fast! Check it out! 🚀

github.com/Vanilagy/web...
GitHub - Vanilagy/webcodecs-polyfill: A polyfill for the WebCodecs API for use in server-side JavaScript environments such as Node, Deno, and Bun.
A polyfill for the WebCodecs API for use in server-side JavaScript environments such as Node, Deno, and Bun. - Vanilagy/webcodecs-polyfill
github.com
December 4, 2025 at 1:39 PM
The ability to inspect Node.js processes from Chrome is one of the coolest things, it's super low-friction too
December 1, 2025 at 2:27 PM
Can't believe I started writing JavaScript with "var" statements and now I'm writing "for await using" loops, wtf

Surely less than 1000 people in total have written this
November 27, 2025 at 3:17 PM
Mediabunny has surpassed 300k monthly downloads today 😳 You guys are nuts! I always expected it to catch on, but not this quickly.

We'll still need to double that number to overtake my old library mp4-muxer, so let's get to work guys!!
November 27, 2025 at 9:57 AM
Reposted by Vanilagy
Just released Fragment v0.2.10

Among small fixes, I updated the canvas recorder to use mediabunny.dev by @vanilagy.bsky.social so you can now export mp4, mkv or mov files with the codec of your choice!

github.com/raphaelameau...
Release v0.2.10 · raphaelameaume/fragment
fix: remove cursor on disabled triggerable fields by @raphaelameaume in #202 fix: disabled state of checkbox input by @raphaelameaume in #203 fix: handle sketch.backgroundColor in preview mode by @...
github.com
November 19, 2025 at 8:26 AM
What are good physical implementations of FIFO queues? I'm annoyed with my laundry basket because the clothes I threw in the longest time ago get washed last, so it's LIFO. I guess a "FIFO basket" would need to have two openings for it to work, which sounds awkward.
November 19, 2025 at 8:50 AM
Mediabunny 1.25.0 ships with read/write support for track disposition information! 🚀

This information allows you to inspect which tracks should be preferred by a player, which are meant for hearing- or visually-impaired people, and more.

Niche, but important for some uses.
November 13, 2025 at 7:28 PM
Just filed 3 Chromium bug reports in 30 minutes. Practically half a Chromium dev at this point
November 12, 2025 at 8:25 AM
Probably the funniest error message I've ever seen the browser throw at me.

I apologize for not using 𗜀, 🐀, 𧄀, or 𮸀 as my bitrate
November 12, 2025 at 7:27 AM
Mediabunny's number of Safari-specific workarounds is growing. Super dirty, but someone's gotta do it!
November 10, 2025 at 3:33 PM
Had an absolutely terrific two days at Demuxed in London!

Met tons of great people, and I have proudly lost my "conference speaker virginity" now 👀 Excited to share this talk once the VOD drops!

Huge thanks to the Demuxed organizers for letting me have a 20-min slot. 💘
October 31, 2025 at 11:40 AM