The file extension is just the box. Inside are a video codec and an audio codec, and each device only opens some combinations. Pick the kind of file you have to see what's inside, where it plays, and the one tool that fixes it.
Drop in an MP4, MOV, MKV, WebM or AVI. Your browser reads the container's own structure: MP4 boxes, Matroska elements or AVI chunks. From that it gets the exact codecs, where the index sits, and the codecs string a player asks about. It then asks this browser three separate questions about playback. Everything happens on your device. Or record a short clip with one of your browser's own encoders and inspect that.
Newer codecs squeeze the same picture into fewer megabytes, but older devices can't decode them. Each dot is a common format for one minute of 1080p video. Click one for the details and the converters that go to and from it.
Tools that cut, shrink, or pull something out of a video, with a typical result for each.
To hit a size limit, a compressor has to work backwards: limit ÷ length gives the total bitrate, and the audio takes its share first. What's left, spread over every pixel of every frame, decides how good the video can look. You can then record a few seconds at that bitrate with this browser's own encoder and see how close it lands.
# two-pass H.264ffmpeg -y -i input.mov -vf scale=-2:1080,fps=30 -c:v libx264 -preset slow -b:v 426k -pass 1 -an -f null /dev/nullffmpeg -i input.mov -vf scale=-2:1080,fps=30 -c:v libx264 -preset slow -b:v 426k -pass 2 -c:a aac -b:a 96k -movflags +faststart out.mp4
The last three columns are asked live. canPlayType answers “probably”, “maybe” or nothing. Media Source support is what streaming players need. Recording uses MediaRecorder. Efficiency is the rough bitrate needed for the same quality as H.264, and varies a lot with content and encoder.
The other toolboxes, with a typical job for each.