Convert WebM to MP3
Turn WebM, the open web-native video format supported by all modern browsers, into MP3, the universally supported compressed audio format. FileChanger runs the video conversion in one call, no local tooling to install.
In the browser
Upload a file and download the result, no pipeline required. Open the converter.
One API call
POST the file with from=webm and to=mp3, get the converted bytes back. Jump to the code.
From an agent
FileChanger ships an MCP server, so agents can run this conversion themselves. See the docs for setup.
Uploading something you care about? How to convert files safely explains what to check before you trust any converter, and Security and data handling describes exactly what we store and for how long.
Convert WebM to MP3 in code
The same call from any language: POST the file to /api/convert, the response body is the converted file.
curl -X POST https://filechanger.io/api/convert \
-H "X-Api-Key: fc_your_api_key_here" \
-F "file=@input.webm" \
-F "from=webm" \
-F "to=mp3" \
-o output.mp3import requests
with open("input.webm", "rb") as f:
response = requests.post(
"https://filechanger.io/api/convert",
headers={"X-Api-Key": "fc_your_api_key_here"},
files={"file": f},
data={"from": "webm", "to": "mp3"},
)
response.raise_for_status()
with open("output.mp3", "wb") as out:
out.write(response.content)const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("from", "webm");
formData.append("to", "mp3");
const response = await fetch("https://filechanger.io/api/convert", {
method: "POST",
headers: { "X-Api-Key": "fc_your_api_key_here" },
body: formData,
});
const output = await response.blob();import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.file.Path;
String boundary = "----FormBoundary" + System.currentTimeMillis();
byte[] fileBytes = java.nio.file.Files.readAllBytes(Path.of("input.webm"));
String body = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"file\"; filename=\"input.webm\"\r\n"
+ "Content-Type: application/octet-stream\r\n\r\n"
+ new String(fileBytes) + "\r\n"
+ "--" + boundary + "\r\nContent-Disposition: form-data; name=\"from\"\r\n\r\nwebm\r\n"
+ "--" + boundary + "\r\nContent-Disposition: form-data; name=\"to\"\r\n\r\nmp3\r\n"
+ "--" + boundary + "--";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://filechanger.io/api/convert"))
.header("X-Api-Key", "fc_your_api_key_here")
.header("Content-Type", "multipart/form-data; boundary=" + boundary)
.POST(BodyPublishers.ofString(body))
.build();
HttpResponse<byte[]> response = client.send(
request, BodyHandlers.ofByteArray());
java.nio.file.Files.write(Path.of("output.mp3"), response.body());import Network.HTTP.Client
import Network.HTTP.Client.MultipartFormData
import qualified Data.ByteString.Lazy as BL
main :: IO ()
main = do
manager <- newManager defaultManagerSettings
initialReq <- parseRequest "POST https://filechanger.io/api/convert"
let req = initialReq
{ requestHeaders = [("X-Api-Key", "fc_your_api_key_here")] }
request <- formDataBody
[ partFileSource "file" "input.webm"
, partBS "from" "webm"
, partBS "to" "mp3"
] req
response <- httpLbs request manager
BL.writeFile "output.mp3" (responseBody response)About WebM
WebM is the open, royalty-free video format Google built for the web: VP9 or VP8 video with Opus or Vorbis audio, in a container derived from Matroska. Every modern browser plays it natively and browsers also produce it, which is why so many WebM files start life as screen recordings, downloads, and camera captures from a web page rather than as camera footage.
About MP3
MP3 (MPEG-1 Audio Layer III) is the format that made digital music portable and remains the most universally playable audio there is. Its psychoacoustic lossy compression throws away the detail the ear cannot hear to shrink files dramatically, and every phone, browser, car stereo, and media player of the last twenty-five years can play the result.
Frequently asked questions
How do I convert WebM to MP3?
Upload your file in the browser converter and pick MP3 as the target, or POST it to /api/convert with from=webm and to=mp3. The response body is the converted file.
Is converting WebM to MP3 free?
Yes. Every account gets 200 MB of conversions free, metered on input size. After that you pay only for what you convert, from $0.10 per GB, with no monthly fee. See pricing for the paid tiers.
Is there an API for WebM to MP3 conversion?
Yes, this whole conversion is one POST to /api/convert (the code examples above show it in five languages), plus an MCP server so AI agents can run it directly.
Does this extract the audio from a WebM video?
Yes, that is exactly what it does. The video track is dropped and the WebM's Opus or Vorbis audio track is re-encoded to MP3, so what comes back is an audio-only file with no video stream attached.
Why convert WebM to MP3?
WebM is a video container, so anything you actually want as audio (a podcast, a lecture recording, a music track pulled out of a screen capture) is easier to live with as MP3: phones, car stereos, and audio editors all take it without carrying a video stream around.
Is the MP3 identical to the original audio?
No. The WebM's Opus or Vorbis audio is already lossy, and MP3 is a second lossy pass, so the result is close to but not bit-identical to the source. For speech and normal listening the difference is inaudible; if you want to avoid the second pass, convert the same file to FLAC or WAV instead.