How to convert avi to mp4 on any os
- Step 1Drop the .avi onto the transcoder — Accepts
.aviplus mp4, mov, mkv, webm, m4v, ts. The file loads into the browser tab; nothing is uploaded. Same on Windows, Mac, and Linux. - Step 2Set Container to MP4 — MP4 is the modern, universally playable wrapper. The AVI container itself is what most current devices struggle with.
- Step 3Set Codec to h264 — H.264 (
libx264) is decoded-from-and-re-encoded-to here; it replaces the old DivX/Xvid/MJPEG codec with one every device supports. - Step 4Choose a CRF — For SD archive footage, 20-22 preserves detail without bloating the file. The default 23 is fine for casual viewing.
- Step 5Run the conversion — FFmpeg.wasm decodes the legacy codec and re-encodes to H.264 + AAC 128k. SD AVIs convert quickly; this is CPU-only software encoding.
- Step 6Download the MP4 — Save the result. It plays on modern phones, browsers, and TVs that wouldn't touch the original AVI — and the workflow was the same regardless of your OS.
Codec dropdown — what each option does
These are the five entries in the Codec selector. Every option is a software FFmpeg.wasm encoder running in your tab — there is no hardware/NVENC path in this tool. The CRF box drives quality for the rate-controlled codecs.
| Codec option | FFmpeg encoder | Best for | CRF behaviour |
|---|---|---|---|
| h264 | libx264 | Universal playback — every phone, browser, TV, editor | CRF 0-51, ~18-23 is visually clean; 23 is the default |
| h265 | libx265 | Roughly half the size of H.264 at matched quality; archives | CRF 0-51, ~24-28 matches H.264 CRF 18-23 |
| vp9 | libvpx-vp9 | Open, royalty-free; great for web/<video> playback | CRF 0-51 used as the quality target; slowest of the lot in WASM |
| av1 | libaom-av1 | Smallest files of all; long-term web/archival | CRF 0-51; software AV1 in WASM is very slow — short clips only |
| prores | prores_ks | Hand-off to editors; intra-frame, scrub-friendly | CRF box is ignored — ProRes is not a CRF codec (see the prores spoke) |
Input and output containers
The file picker accepts the input list below; the Container dropdown sets the output wrapper. Output is always a fresh re-encode (the transcoder does not stream-copy), and audio is re-encoded to AAC 128k — or Opus 128k when the output is WebM.
| Container | Accepted as input? | Selectable as output? | Default audio in output |
|---|---|---|---|
MP4 (.mp4, .m4v) | Yes | Yes | AAC 128k |
MOV (.mov) | Yes | Yes | AAC 128k |
MKV (.mkv) | Yes | Yes | AAC 128k |
WebM (.webm) | Yes | Yes | Opus 128k (forced for WebM) |
AVI (.avi) | Yes | Yes | AAC 128k |
MPEG-TS (.ts) | Yes | No (input only) | n/a |
Tier limits for the transcoder (video family)
Limits are per-file size and per-batch file count, not a duration cap — the encode streams to disk so a 90-minute file is bounded by file size, not minutes. The transcoder takes one file at a time (no drag-to-batch in the UI).
| Tier | Max file size | Files per run | Practical note |
|---|---|---|---|
| Free | 1 GB | 1 | Fine for a single phone clip or a short screen recording. A 4K 60fps file fills 1 GB in roughly 2-3 minutes of footage at high bitrate. |
| Pro | 10 GB | 5 | Covers most camera originals and longer recordings; run files one after another. |
| Pro + Media | 100 GB | 50 | Built for raw camera masters and long-form sources. Size, not length, is the gate. |
| Developer | 100 GB | Unlimited | Same 100 GB per-file ceiling, no cap on how many files you process. Pair with the @jadapps/runner for unattended batches. |
Cookbook
Typical AVI-archive conversions and the settings that modernise them on any OS.
Xvid AVI from an old camcorder archive
Standard-definition Xvid AVIs from old camcorders won't play on phones. Re-encoding to H.264 MP4 makes them play everywhere.
Input: holiday2006.avi (Xvid video, MP3 audio, 640x480)
Settings: Container=mp4 Codec=h264 CRF=21
FFmpeg.wasm (conceptually):
-i holiday2006.avi -c:v libx264 -crf 21 -preset medium \
-c:a aac -b:a 128k out.mp4
Result: a phone-playable MP4; MP3 audio becomes AAC.DivX AVI with no sound on a Mac
macOS may play DivX AVI video but no audio if the audio codec is unsupported. Converting to MP4/AAC restores sound.
Input: clip.avi (DivX video, AC-3 audio) Settings: Container=mp4 Codec=h264 CRF=22 The AC-3 track is re-encoded to AAC, which QuickTime plays. Workflow is the same on Windows/Linux — it's a web page.
MJPEG AVI (huge file) shrunk on conversion
MJPEG AVIs are enormous because every frame is a full JPEG. Re-encoding to H.264 cuts the size dramatically.
Input: microscope.avi (MJPEG, very large) Settings: Container=mp4 Codec=h264 CRF=20 H.264's inter-frame compression makes the MP4 a fraction of the MJPEG size at the same visual quality.
Preserve SD archive detail
For archival, keep quality high so the digitised copy is the best it can be.
Input: wedding1999.avi Settings: Container=mp4 Codec=h264 CRF=18 Low CRF keeps maximum detail. If you also want a long-term archival codec at small size, h265 (CRF ~22) is an option for devices that support it.
Batch-modernise an archive folder (Developer)
Hundreds of old AVIs to convert. The UI is one-at-a-time, so script the runner.
Pair @jadapps/runner once. For each .avi POST:
127.0.0.1:9789/v1/tools/video-transcoder/run
{ targetFormat: 'mp4', codec: 'h264', crf: 21 }
GET /api/v1/tools/video-transcoder returns the schema.
The whole archive is processed locally — nothing uploaded.Edge cases and what actually happens
Old MP3/AC-3 audio in the AVI
Converted to AACLegacy audio codecs are re-encoded to AAC 128k, which is exactly what makes the file play (with sound) on modern Macs and phones that rejected the original track.
Workflow differs by OS?
IdenticalIt's a browser page running FFmpeg.wasm, so Windows, macOS, and Linux behave the same — no codec packs, no per-OS app, no admin rights.
MJPEG AVI is very large
Shrinks a lotMJPEG stores each frame as a full JPEG, so files are huge. H.264 re-encoding adds inter-frame compression and typically produces a much smaller MP4 at the same quality.
AVI is already a friendly codec
Re-encoded anywayEven if the AVI happens to contain H.264, the transcoder re-encodes rather than remuxing — there's no stream-copy option. Expect a fresh encode and some time cost.
Interlaced old broadcast AVI
Combing may remainThe transcoder doesn't deinterlace. Old interlaced AVIs may show combing artifacts on progressive screens — run /video-tools/video-deinterlacer first, then transcode.
Non-square pixels (anamorphic SD)
Usually correctedFFmpeg respects the source aspect ratio on re-encode, so 4:3 SD content displays correctly. If it looks stretched, fix the dimensions with /video-tools/video-resizer.
File over the tier cap
RejectedFree caps at 1 GB. A very long MJPEG AVI can exceed it before conversion — trim with /video-tools/lossless-trimmer or upgrade the tier.
Broken-index / partially-recovered AVI
ErrorAVIs with a damaged index can fail to demux. If the run errors out, the source file likely needs repair before it can be transcoded.
Tab closed mid-encode
AbortedAll processing is in the browser tab. Closing or refreshing it cancels the job and discards the partial MP4 — start over.
Frequently asked questions
Why won't my old AVI play on my phone or new laptop?
Most legacy AVIs use DivX, Xvid, or MJPEG video with MP3/AC-3 audio — codecs modern devices have dropped. Converting to MP4 + H.264 + AAC with this tool produces a file every current phone, browser, and TV plays.
Does the workflow change between Windows, Mac, and Linux?
No. It's a browser page running FFmpeg.wasm, so the steps and the result are identical on all three. There's nothing to install and no OS-specific codec pack.
Is my AVI uploaded?
No. The file is decoded and re-encoded locally in your browser tab; nothing is sent to a server beyond an anonymous processed-file counter for signed-in users. Your archives stay on your machine.
My AVI has video but no sound on a Mac — will this fix it?
Usually yes. The audio is re-encoded to AAC 128k, which QuickTime/macOS plays, replacing the old MP3/AC-3 track macOS couldn't decode.
My MJPEG AVI is gigantic — will the MP4 be smaller?
Much smaller. MJPEG stores every frame as a full JPEG with no inter-frame compression; H.264 adds that, so the MP4 is typically a fraction of the size at the same quality.
What CRF should I use for old SD footage?
20-22 preserves SD detail well without bloating the file. Use 18 for archival-grade quality, or the default 23 for casual viewing.
My old AVI looks stretched after conversion — why?
Old SD content often uses non-square pixels. FFmpeg usually preserves the aspect ratio, but if it still looks off, set explicit dimensions with /video-tools/video-resizer.
There's combing/interlacing on my old AVI — can the transcoder fix it?
No, the transcoder doesn't deinterlace. Run /video-tools/video-deinterlacer first to remove the combing, then transcode the result to MP4 here.
How big an AVI can I convert for free?
Up to 1 GB per file on the free tier, one at a time. Pro is 10 GB / 5, Pro + Media 100 GB / 50, Developer 100 GB / unlimited. The limit is file size, not length.
Can I convert a whole folder of old AVIs at once?
The UI converts one file at a time. To batch a folder, Developer tier can drive this transcoder via the local @jadapps/runner — all on your own computer.
Does it just rewrap or re-encode?
It re-encodes the video; there's no stream-copy. For old AVIs that's exactly what you want (the source codec is the problem), but be aware it's a full encode, not an instant rewrap.
Should I ever output H.265 instead of H.264?
Only for long-term archival on devices that support HEVC, where roughly half the file size is worth it. For maximum compatibility — the usual reason to leave AVI behind — stick with H.264.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.