# LAME MP3 encoder in SubForge **Approved by the owner on 2026-11-03** ("Yes, allow LAME"). Used for the MP3 downloads of text to speech, the voicemail greeting generator and the vocal remover. ## What ships, and where `/lame/mediabunny-mp3-encoder.mjs` on captions.moxisynclabs.com is `@mediabunny/mp3-encoder` 1.65.0's prebuilt ES module (`dist/bundles/mediabunny-mp3-encoder.min.mjs` from npm): - Mediabunny's encoder glue (MPL-2.0, copyright Vanilagy and contributors), and - **LAME 3.100, unmodified, compiled to WebAssembly** with Emscripten 4.0.21 and inlined by the package author (WASM SHA-256 `a680e507e9d91f1a4dcd6f846b9b94ff1fec7e19ff44e803358c218ddbe446a6`). LAME is LGPL-2.0-or-later. It is a **separate file, loaded dynamically**: the site's own JavaScript never contains it. The page imports it with `import()` only when someone presses an MP3 button (`src/core/mp3.ts`), and LAME then runs in its own Web Worker. The only change made to the file (`scripts/copy-lame.mjs`) is its import line: `import {…} from "mediabunny"` becomes a read of `globalThis.__subforgeMediabunny`, because a bare package name cannot resolve in a browser. The page puts its copy of Mediabunny there before loading the file. Next to it in `/lame/`: `LAME-COPYING.txt` (the GNU LGPL text), `LAME-LICENSE.txt`, `MPL-2.0-mediabunny-mp3-encoder.txt`, `manifest.json` (version and SHA-256 of the served file) and this note as `SOURCE.txt`. ## Where to get the source - LAME 3.100: https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz (SHA-256 `ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e`). - The bridge and build steps: https://github.com/Vanilagy/mediabunny/tree/main/packages/mp3-encoder (`src/lame-bridge.c` and the emcc command in its README); npm package `@mediabunny/mp3-encoder@1.65.0`. - On request we send a copy of the exact sources: hello@moxisync.com. ## How to replace it with your own build The encoder is only ever loaded from `/lame/mediabunny-mp3-encoder.mjs`, so it can be swapped: 1. Rebuild LAME (modified or not) with the package's emcc command, then build `@mediabunny/mp3-encoder` (its README). 2. Run `node scripts/copy-lame.mjs` with that build in `node_modules/@mediabunny/mp3-encoder`, or put any ES module at that path that reads Mediabunny from `globalThis.__subforgeMediabunny` and exports `registerMp3Encoder()`. 3. Without rebuilding the site: override that one file in your browser (Chrome DevTools, Sources, Overrides) or with any proxy. Nothing checks its hash.