VLC Supported Formats: What It Plays vs What It Saves

Sep 24, 2026

VLC's list of formats it can play and its list of formats it can write out are two different lists, and the second one is far shorter. Almost every "VLC supported formats" page reprints only the first list.

That asymmetry is the whole story behind "why won't VLC convert to the format I want." Below are both lists, from VideoLAN's own pages, plus why no definitive output table exists.

The two lists, at a glance

The input side comes from VideoLAN's features page — the site's own maintained page, carrying no staleness warning. Its Input Formats section, verbatim:

"MPEG (ES,PS,TS,PVA,MP3), AVI, ASF / WMV / WMA, MP4 / MOV / 3GP, OGG / OGM / Annodex, Matroska (MKV), Real, WAV (including DTS), Raw Audio: DTS, AAC, AC3/A52, Raw DV, FLAC, FLV (Flash), MXF, Nut, Standard MIDI / SMF, Creative™ Voice."

The video codec list on the same page opens with "MPEG-1/2, DivX® (1/2/3/4/5/6), MPEG-4 ASP, XviD, 3ivX D4, H.261, H.263 / H.263i, H.264 / MPEG-4 AVC" and continues through Cinepak, Theora, Dirac / VC-2, MJPEG, the WMV family, DV, On2 VP3/VP5/VP6 and Real Video.

Now the output side. VLC writes files through its stream output's mux option, and the official documentation page for that option enumerates exactly eight muxers:

muxWhat the docs call itVideo codecs listedAudio codecs listedOutput methods
ts"the MPEG-TS muxer"MPEG 1/2/4, MJPEG, H263, H264, I263, WMV 1/2, TheoraMPEG audio, AAC, a52"any access method"
ps"the MPEG-PS muxer"MPEG 1/2, MJPEGMPEG audio, a52file and http
mpeg1"the standard MPEG 1 muxer"MPEG 1MPEG audiofile or HTTP
ogg"the ogg muxer"MPEG 1/2/4, MJPEG, WMV 1/2, Theoravorbis, flac, speex, a52, MPEG audioHTTP and file
asf"the Microsoft ASF muxer"MPEG-4, MJPEG, WMV 1/2MPEG audio, a52file and HTTP
asfhASF variant for MMSHsame as ASFsame as ASFMMSH only
avi"the Microsoft AVI muxer"MPEG 1/2/4, H263, H264, I263MPEG audio, a52file only
mpjpeg"the multipart jpeg muxer"MJPEG onlynone — see belowHTTP only

That is the entire documented list; the page adds that "This option has to be set."

Put the two side by side: VLC will happily open a Matroska file full of H.264 and read it perfectly, and there is no mkv entry anywhere in that output table. That is an absence from the documentation, not a capability statement — undocumented is not the same as unsupported, as the next section explains.

Why playing and writing are different questions

VideoLAN's own explainer separates the two ideas. A codec is "a compression algorithm, used to reduce the size of a stream." A container "contains one or several streams already encoded by codecs." And when VLC opens a file, "VLC first demuxes it. This means that it reads the container format and separates audio, video, and subtitles, if any."

Demuxing is a read operation. Support for reading a container implies nothing about support for writing it.

The second reason the output path is narrow is the most useful sentence in VLC's transcoding documentation: "In VLC, transcoding is exactly the same as streaming across a network, except that the output is sent to a file instead of a network." That is why the Convert/Save dialog looks like a streaming panel, why a "Streaming" entry appears in your playlist mid-conversion, and why every knob is named --sout-something. Two muxers in the table are described in exactly those terms: ts is "the standard muxer used to stream MPEG-2," and asf is "the standard muxer used for streaming by Microsoft applications."

The page carrying that quote opens with its own warning, verbatim: "This page is outdated and information might be incorrect."

Why no definitive output table exists

The muxer list above is not the whole truth, and VLC's documentation says so twice.

First, the transcode module's documentation states: "Since supported codecs are dynamically assigned by the running program, sout-transcode-venc, sout-transcode-aenc and sout-transcode-senc have been left blank." Which encoders exist depends on what your build was compiled with and what it finds at runtime.

Second, the list is demonstrably incomplete. Other official wiki pages give working examples using mux="mp4", which appears nowhere in the muxer documentation. VideoLAN's documentation index carries a blanket note: "Nota Bene: Parts of this documentation are currently outdated or incomplete." And the compatibility matrix the transcoding page points you to ("look at streaming features compatibility matrix") returns an empty page as of September 2026.

So the honest reading is: a format missing from the documented list is not proven unsupported — it is undocumented. Run vlc -H to dump the exhaustive option list, including the encoder enumerations, or vlc -p module --advanced --help-verbose for one module. A published wiki copy exists, but it is labelled "the output of vlc -H of vlc-4.0.0-dev under Windows" — a development build, not a stable release, so read your own.

What to do when VLC will not write your format

Check whether you need to transcode at all. VideoLAN's wiki notes that "If your input streams already matches the encoding that you desire for your output stream, then you don't have to transcode at all," and ties that to the GUI option for keeping the original track — though the original sentence ends with a candid "(I think)," so verify the result.

If you do need a re-encode, and the target container is one VLC's docs never covered, use a tool built around its output list. WebM is the clearest case: nothing in the official muxer documentation covers WebM, and there is no official statement that VLC can produce it.

Try it right here

Runs in your browser. Your file is not uploaded anywhere.

Loading tool…

That runs in this browser tab: the file is read from disk, re-encoded locally, and handed back, with nothing uploaded. The same applies in both directions between MP4 and WebM, and if you only wanted the soundtrack, extract audio from video skips the container question entirely. Narrow container whitelists are not a VLC quirk either — HandBrake's WebM output has the same problem in a dedicated encoder.

When you do transcode with VLC, encode a sample first. The official advice: "Transcoding takes quite a while, so it's advisable to use an option like --stop-time=30 to only encode the first 30 seconds."

Gotchas the docs state outright

  • The AVI muxer is officially buggy. Verbatim, on the same page as the muxer table: "The avi muxer in VLC is known to produce corrupt files."
  • Mismatches fail quietly. The Transcode wiki page — the one that opens with "This page is outdated and information might be incorrect." — says "If you choose an incompatible stream for a given muxer, it may silently fail." The next step it gives is the messages window: "You can look for error messages in the messages window to help you debug the failures."
  • mpjpeg carries no sound at all. "No sound track can be muxed in such streams."
  • Audio whitelists are narrow. ps accepts only MPEG audio and a52; avi the same. That, plus the silent failure described on the outdated Transcode page above, is the structural reason a conversion comes out mute.
  • Sample rate is capped. The transcode module documents samplerate as <integer [0 .. 48000]> with the note "(11250, 22500, 44100 or 48000)", and audio bitrate ab defaults to 96 kbit/s. Check both against your version.

FAQ

Does VLC support every format it can play? No. That page describes input — what VLC can open and decode. Writing files goes through the stream output muxers, a much shorter and separately documented list.

Can VLC convert to MP4? Official wiki examples do use mux="mp4", but MP4 is absent from the documented muxer list, so which codecs it accepts is not documented anywhere official. Check what your build exposes with vlc -H before relying on it.

Can VLC export WebM or a GIF? Neither appears in the official muxer documentation, and GIF is absent from the encoder enumeration in the published vlc -H output — which is labelled as a vlc-4.0.0-dev build under Windows, so check what your own build prints. That means undocumented, not officially ruled out. For WebM, use a tool that documents its output — see all Clapr tools.

Why did my converted file come out with no sound? Most likely a codec the chosen muxer does not accept. VLC's Transcode wiki page — which carries its own "This page is outdated and information might be incorrect." warning — says such a mismatch "may silently fail," so there is no error dialog. Open Tools → Messages and re-run to see what was rejected — the full walkthrough is here.

Can VLC convert my subtitles to another format? The documentation distinguishes soverlay (burning subtitles into the picture) from senc/scodec (encoding them as a subtitle stream) and says of the latter: "The only subtitle encoder we have at this time is dvbsub." No version is attached to "at this time," so confirm with vlc -p on your build.


More on platform and format ceilings in the limits guides. Cited from VideoLAN's features page and official VLC documentation, checked 16 September 2026; several of those wiki pages carry their own outdated-content warnings, so check the official documentation before relying on them.

Clapr team

Clapr team

VLC Supported Formats: What It Plays vs What It Saves | Clapr Blog