MP3 to MP4 Video Converter

Pair an MP3, WAV, M4A, OGG or FLAC track with one still image or a solid color and get a 720p or 1080p MP4, built entirely on your own device.

🌐 Español

Drop your files here (.mp3, .wav, .m4a, .ogg, .flac, .jpg, .jpeg, .png, .webp)

🔒 Private by design: your files are processed locally in your browser and never uploaded to any server.

The audio is required, the picture is optional

Most tools that combine two files hand you two upload boxes. This one has a single box that accepts both lists at once, the audio formats .mp3, .wav, .m4a, .ogg and .flac alongside the picture formats .jpg, .jpeg, .png and .webp, and works out which is which from the extension rather than from the order you added them.

The rule is asymmetric on purpose. Exactly one audio file is required and the run stops without it. At most one image is allowed and zero is perfectly valid, because there is a whole second code path for the no-picture case. So you can drop a song and a cover together, drop the song and add the cover a moment later, or drop the song on its own and pick a color instead.

  1. Drop your track on the box, or click Choose files. The accepted extensions are printed inside the drop zone.
  2. For a background picture, add one image too, either in the same drop or afterwards. The file list under the box should end up holding one audio file and at most one picture.
  3. Pick a Video resolution, either 720p (1280x720) or 1080p (1920x1080).
  4. With a picture, set Image fit (only used if you upload a background image) to Fit whole image (letterboxed with black bars) or Fill the frame (crops the image). Without one, choose a Background color (only used if you don’t upload an image) from Black, White, Navy blue, Red or Green.
  5. Click MP3 to MP4 Video Converter and let the percentage run.
  6. Download the MP4 from the link, with the before and after sizes printed just above it.

The two options you did not use are simply ignored. Picking a background color while an image is loaded changes nothing, and neither does setting a fit mode with no picture present.

A probe pass runs before a single frame is encoded

The tool reads your audio’s duration before it encodes anything, by running FFmpeg once with no output and parsing the duration line out of the log. That number then becomes an explicit duration limit on the real run. If the duration cannot be read, which happens with a truncated or corrupt file, the run stops there rather than guessing.

The obvious alternative would be to tell FFmpeg to stop when the shortest input ends, which is the standard way to pair a looping image with a soundtrack. The comment sitting above that argument builder in the source explains why it is not used here, and it is a nice example of a plausible approach that measurement killed: against the exact WebAssembly build this site loads, pairing a looped image with that flag produced output about 1.7 seconds longer than the audio every single time, at 1, 2, 2.5 and 5 second test inputs, so a fixed overshoot rather than a proportional one. Clamping to the probed duration gave the expected length every time, within the normal few milliseconds of AAC frame rounding. The probe pass exists to pay for that.

Letterboxing against cropping your cover art

With a picture loaded, the choice between the two fit modes is a choice about what you are willing to lose. Cover art is square, video frames are not, and something has to give.

Fit whole image scales the picture until it fits entirely inside the frame and then pads the leftover space with black, centred. Nothing is cropped and nothing is stretched, and for a square image in a 16 by 9 frame you get bars down both sides. Fill the frame scales the other way, until the picture covers the frame completely, and then crops off whatever hangs over the edge. Nothing is bordered and nothing is stretched, but a square image loses its top and bottom. Both graphs finish by forcing square pixels, so no player can decide to stretch the result on its own.

Neither mode ever refuses to enlarge, which is the trap. A 500 pixel avatar is scaled up to 720 or to 1080 and comes out soft, because scaling adds pixels rather than detail. If the only artwork you have is small, 720p treats it more kindly than 1080p does.

The solid color path builds its video out of nothing

Skip the image and the tool does not write a picture into FFmpeg’s virtual filesystem at all. Instead it generates a video source on the fly, a flat field of your chosen color at the chosen resolution and 25 frames per second, and pairs that with your audio. The five colors in the dropdown are real color names the filter understands, passed straight through, and anything the tool does not recognise falls back to black.

This is the path to use for a podcast episode, a lecture recording or a soundboard clip, where a still photo would add nothing. It also encodes fast: a single unchanging color is about the least demanding thing you can hand a video encoder, so almost all of the work is the audio.

Picking 720p or 1080p for wherever this is going

A still image does not benefit from more pixels the way real footage does, so the resolution choice is mostly about what the destination expects rather than about how it looks. 720p is the default and is plenty for a static frame; 1080p is worth choosing when the platform is going to re-encode anyway and you would rather it start from more data, or when your artwork is genuinely large.

Either way, the video stream ends up costing very little, because an encoder handed a frame identical to the one before it has almost nothing to store. On a normal-length track, most of the finished file is the AAC audio at 192 kbps rather than the picture.

What a still image MP4 will not do for you

This is a packaging tool, not a video editor. There is no waveform, no motion, no text and no cut. If what you actually want is something that moves in time with the sound, the audio visualizer takes the same set of audio and image inputs but draws an animated waveform or a scrolling spectrum over the top, with a color theme to pick from. If you already have real footage and only want to change its soundtrack, add audio to video replaces or blends a track into an existing clip instead of inventing a picture for it.

Going in the other direction, MP4 to MP3 pulls the audio back out of a finished video, though note it accepts .mp4 only, so a WEBM would need converting first. The rest of the video tools here handle the trimming, merging and compression that come after this step.

Frequently asked questions

I dropped two songs in and the run failed straight away. Why not just take the first one?

Because guessing would be worse than stopping. Your files are sorted by extension into an audio role and an optional picture role, and the sort insists on exactly one audio file and no more than one image. Two of either ends the run before FFmpeg is ever started, and what you see is the shared upload panel's single generic failure line rather than a note about which role was ambiguous. Look at the file list above the button, which stays on screen after a failure.

Can I set the frame rate, or add a fade, a title card or a second image?

None of those. The page exposes a resolution, a fit mode and a background color, and nothing else. One picture holds for the whole running time, and in the solid color path the synthetic video source is generated at 25 frames per second. Anything with a cut in it is a video editing job rather than a container job, and this tool is deliberately the second of those.

My album art is 600 by 600 and the result looks soft. What happened to it?

It was enlarged. Both fit modes scale your picture until it meets the frame, in either direction, so a 600 pixel square becomes a 720 pixel square before the black bars are added on the sides. Nothing is being sharpened or invented, so a small source simply arrives on screen bigger and blurrier. Start from the largest copy of the artwork you have, and prefer 720p over 1080p when that copy is small.

Does a FLAC or WAV upload keep its quality inside the MP4?

No, and this is worth knowing before you use it as an archive. The audio is always re-encoded to AAC at 192 kbps regardless of what you brought in, so a lossless source becomes lossy at that point. That is a sensible rate for something destined for a video platform, which will re-encode it again on their side anyway, but keep your original file if it is the master.

Why does the progress bar sit at zero for a while before it starts moving?

There are two FFmpeg runs, and only the second one reports progress. The first is a short pass that reads the file and parses the duration out of the log, and it attaches no progress handler, so the bar has nothing to show until the encode itself begins. On the very first conversion in a tab there is also the one-off download of the WebAssembly build in front of both of them.

What is the finished file called, and does it match the picture I used?

It takes the audio file's name with the extension swapped for mp4, so a track called interview.wav comes out as interview.mp4. The image name never appears, which is usually what you want since the picture is the packaging rather than the content. Rename it after downloading if you are exporting several episodes and want them ordered.

Related tools