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/
Mediabunny has exceeded 1 million monthly npm downloads holy shit

Never expected this to happen this fast, but here we are. It's just a number at first, but it's kind of surreal when you picture what it represents. Thank you! ❤️
February 4, 2026 at 5:18 PM
You can tell Claude Code is written in React because it's slow and buggy
January 27, 2026 at 3:11 PM
Mediabunny v1.31.0 ships with ID3 metadata read/write support for ADTS (.aac) files, and has a more resilient MPEG-TS demuxer. 🚀
January 27, 2026 at 1:40 PM
I live in crazy times where I get emails like this
January 27, 2026 at 1:33 PM
When the debug videos are so good you forget you're working on Mediabunny and just start watching them
January 27, 2026 at 9:36 AM
Mediabunny's now at ¾ of a million monthly downloads!!! (almost) 🎉 Time to treat myself to some malatang
January 24, 2026 at 9:00 AM
Finally added this to Mediabunny: a warning if the library is bundled twice. This is almost always unintentional and leads to runtime errors, so it's good if this mistake is surfaced early.

Using a symbol on the global object for the detection.
January 23, 2026 at 12:29 PM
Mediabunny has world-class seeking performance across all file formats.

On the left, VLC *trying* to seek through a .ts file, it just kinda gives up.

On the right is Mediabunny. It just works.
January 20, 2026 at 7:29 PM
I find that LLMs often struggle with writing *confident* code that fully understands all invariants at play.

This code will work, but the highlighted condition is unnecessary (always evaluates to false). I always try to catch these cases to make the code tighter.
January 20, 2026 at 5:17 PM
A huge milestone: Mediabunny v1.29.0 now ships with read & write support for MPEG Transport Streams! 🎉 This format is commonly used in live broadcasting.

Quite proud of the implementation. It supports AVC, HEVC, AAC, MP3, O(log n) seeking, and it's very fast.

HLS is next!
January 19, 2026 at 2:56 PM
Mediabunny reached 5k GitHub stars!
January 19, 2026 at 1:20 PM
Does anybody know if V8 (or other JS JITs) use hidden classes for common tuple types? So let's say I use a lot of [number, string, boolean], will these get optimized to a tight 16-byte struct or will these remain the slow, unoptimized array type?
January 16, 2026 at 10:39 AM
B-frames are truly a mess with how out-of-order they can be; here I need to read ahead by SIX packets just to correctly compute the duration of the packet with timestamp 10.1. Very annoying! I might use the bound given by max_num_reorder_frames in the future.
January 15, 2026 at 8:50 AM
Reposted by Vanilagy
Also thanks to @graham.systems for sharing mediabunny with me — I switched Anisota’s video pipeline over to it and its been so much better than ffmpegwasm so far!

https://mediabunny.dev/
January 15, 2026 at 2:08 AM
Been using Claude Code all day, and it has been the single best antidote against the Claude Code hype.
January 14, 2026 at 6:44 PM
TypeScript is trying to type-check my MPEG Transport Stream videos hahahahaha
January 14, 2026 at 11:03 AM
API learning of the day: You can use TextDecoder.decode with { stream: true } to ingest incomplete UTF-8 data in chunks!
January 14, 2026 at 8:44 AM
They really said "modern" 💀
January 13, 2026 at 4:14 PM
You know your algo crazy when
January 9, 2026 at 5:02 PM
Took a bit after the annual Christmas download dip, but Mediabunny has now reached 600k monthly downloads! Thank you guys 🐰
January 9, 2026 at 10:51 AM
Today's cool pattern: using a variable with a constant value of "undefined" to signal the intentional omission of a function argument.

Instead of simply omitting the end packet argument, this code makes clear that it is intentionally not set and explains why with a comment.
January 6, 2026 at 12:50 PM
Made good progress on adding an MPEG-TS demuxer to Mediabunny today! Track metadata extraction works, which is basically half the battle for this format. The spec is... extremely thicc.

This feature is a requirement for the eventual HLS support in Mediabunny 👀
January 5, 2026 at 4:38 PM
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