Make a video smaller, right in the browser
TubePull Video Compressor makes a video file smaller so it fits a chat app, an email or any other upload limit. Pick a quality preset or a target size, optionally a lower resolution, and press Start. The compression runs on your own device in this browser tab, so the video is never sent to a server. You pay nothing and create no account, and the result carries no watermark. Whatever you put in, you get back an MP4, with H.264 for the picture and AAC for the sound, a pairing that phones, computers, TVs and websites all accept. The download carries your file's name with "-compressed" added, so beach.mov is saved as beach-compressed.mp4.
Two ways to compress
The six choices sit in two groups, and exactly one of them is selected at a time. Balanced is chosen when the page opens. | Group | Choice | What you get | |---|---|---| | Quality | Smaller file | The smallest of the three presets, with the most visible loss of detail | | Quality | Balanced | A middle setting, and the default | | Quality | Better quality | The most detail of the three presets, and the largest file | | Target size | 8 MB (Discord) | A file aimed at 8 MB | | Target size | 25 MB (Email) | A file aimed at 25 MB | | Target size | Custom size | Any size from 1 to 1,500 MB, with up to one decimal place | A preset holds the picture quality at a fixed level and lets the file size follow. The three presets are constant-quality settings of the x264 encoder, so a calm talking-head clip shrinks much further than a fast game recording at the same preset. For the same video at the same resolution, Smaller file gives a smaller file than Balanced, and Balanced a smaller one than Better quality. A target size works the other way round: you name the size and the tool works out how much detail fits into it. Use a target when a service sets a hard limit, and a preset when you just want a lighter file. Here 1 MB means 1,000,000 bytes, so the 8 MB choice aims at 8,000,000 bytes. Your choice and your custom size stay selected when you open the next video.
How a target size is reached
For a target, the tool divides the size by the video's length to get a bit rate, the number of bits it may spend on each second. It holds 5% of the size back as a margin and gives the sound a fixed 96 kbps. Everything else goes to the picture. A 2-minute video with sound and a 25 MB target gets about 1.5 Mbit/s for the picture, for example. Encoders rarely land on an exact size. If the first file comes out larger than the target, the tool lowers the bit rate in proportion to the overshoot and encodes again, at most three times in all. During a second or third try the progress area says "Try 2 of 3" or "Try 3 of 3". The first file at or under the target is the one you get. If none of the three fits, the smallest one is offered and the result says the target couldn't be reached. The longer the video, the fewer bits each second gets, so a small target only suits a short clip: | Target, video with sound | Low-quality warning from about | Start switched off from about | |---|---|---| | 8 MB | 4 minutes | 10½ minutes | | 25 MB | 13 minutes | 33 minutes | When the picture would get less than 150 kbps, a warning beside the settings says the quality will be low, and you can still go ahead. While a lower resolution is available, the warning suggests it as well as a larger target. When the 96 kbps of sound alone would fill the target, Start stays off and a message asks for a larger size. A video without sound gives the whole budget to the picture. Trimming the video first with the Video Trimmer also leaves more for each second that stays. The 8 MB and 25 MB buttons are shortcuts. 8 MB was the free Discord upload limit for years, and 25 MB is what personal Gmail accounts allow for all attachments in one email together. Discord has changed its limit several times since then, and every service sets its own, so check the current limit where you're sending the video and enter it under Custom size if it's different.
Lower the resolution
Fewer pixels need fewer bits, so a smaller frame often looks cleaner than a large one squeezed into the same size. The resolution choices are Original, 1080p, 720p and 480p, and each number is the length of the picture's shorter side. A landscape 1920×1080 video at 720p becomes 1280×720, while a phone video held upright at 1080×1920 becomes 720×1280. Only sizes below your video's own shorter side are offered, because the compressor never scales a picture up. A 720p screen recording therefore shows Original and 480p. The shape of the picture is kept, upright phone videos still play upright, and each side is rounded to an even number of pixels, as H.264 requires. Original is the default, and a resolution you pick stays selected for the next video when that video offers it. To give a widescreen clip a new shape instead, such as 9:16 for Shorts, use the Vertical / Square Converter.
What ends up in the MP4
- Picture: the first video track is always re-encoded to H.264, at the frame rate it already had and with every frame kept.
- Sound: the first audio track becomes AAC, at 128 kbps with a quality preset or 96 kbps with a target size. A video with no sound gives an MP4 with no audio track.
- Length: the same as the original to within about one frame, starting at zero.
- Fast start: the index sits at the front of the file, so a website or player can begin playback before the rest has arrived.
- Left out: any further video or audio tracks, subtitles, chapters and cover art.
- Tags: the title and similar tags come along with the original recording date, and today's date isn't added. Location and phone details can come along too. To remove them before you share the file, run the compressed MP4 through the Video Metadata Remover.
Because the picture is encoded again, some detail is lost even with Better quality. Start from the original recording rather than a copy that was compressed before.
Reading the result
When the job finishes, the result gives the original size and the compressed size in MB, then how much smaller the new file is, for example "74% smaller than the original." A compressed file can come out bigger than the original. That happens with videos that were already squeezed hard, such as clips saved from messaging apps or social sites, and with a target larger than the file. In that case the percentage is replaced by a sentence saying compression did not make the file smaller, and you can still download the result. For a target that couldn't be reached, a last line gives the target and the size of the smallest result.
Which files it takes
Phone clips, camera footage, screen captures and old Windows videos all work: the accepted containers are 3GP, AVI, FLV, MKV, MOV, MP4, MPEG-TS, WebM and WMV. The compressor identifies the format from what the file contains, so a misnamed extension does no harm. The tool's own engine decodes H.264, HEVC, VP8, VP9, Windows Media and the Xvid or DivX flavor of MPEG-4, so playback support in your browser makes no difference for those. AV1 video is the exception: it depends on your browser's built-in decoder. When the browser can't decode AV1, a message says the codec can't be processed here, and a browser with AV1 support may manage it. With AV1, the order of the three presets' file sizes isn't guaranteed. An audio-only file, even one with album art, is refused with a no-video message, and Start remains disabled.
Where the work is done
The file is read and compressed in this tab, and the MP4 is handed to you from there. Nothing about the video reaches TubePull: not the footage, not the file name, not the details read from it. The tool itself makes no network request apart from fetching its own scripts and engine files. Presets are encoded by x264 inside the compatibility engine, which is FFmpeg built for WebAssembly (ffmpeg.wasm). Its download weighs roughly 32 MB on first use, and your browser's cache holds on to it for later visits. The page fetches it at Start, or straight after you pick an AVI, FLV or WMV video, since those formats are read by this engine as well. It runs on a single processor thread, so a long or high-resolution video can take a good while. A target size uses the video encoder built into your browser (WebCodecs), driven by the open-source Mediabunny library. When the browser can't handle the file, as with FLV, AVI and WMV, or its encode fails, the compatibility engine does the job instead and starts the tries again from the first. Version numbers, license texts and source-code links for both are collected on the licenses page.
Good to know before you start
- For a preset job, the compatibility engine estimates the output at your file's own size and won't start above about 1.5 GB. For a bigger video, choose a target size instead.
- The memory of your device is the practical ceiling. Phones caution you about any video above 500 MB, though the job is still allowed.
- The compressor works on one video at a time and can't open DRM-protected files.
- There is no codec choice: the output is always H.264 and AAC in MP4. The compressor doesn't cut the video, remove its sound or change its frame rate.
- On an iPhone, Apple suggests exporting a video from iMovie at a lower resolution. This page offers a target size or a quality preset instead, right in the phone's browser.
Start from a video online
The compressor works on files saved on your device. If the clip is still on YouTube, TikTok or elsewhere, fetch it with the TubePull downloader first, then come back and open it here. To drop the sound before compressing to a target, use Mute Video, and to change only the format, try Convert to MP4. Everything else is on the free video tools overview.