Download a Video from a URL
Paste the address of a page with a video: the tool lists every available resolution (1080p, 720p, 480p…) with its format and file size, then downloads the one you pick as an MP4. Works with direct files and HLS streams.
Our server reads the address to find the video; your browser then downloads the file directly from the original site.
Only download videos you own or whose license allows it. Encrypted and DRM-protected streams are not supported.
How to download a video from its URL
Why use this tool?
On a web page, a video is rarely a single file. It may come in several versions listed in <source> tags, be flagged by the Open Graph og:video tag, be described by a schema.org VideoObject, or be split into segments a few seconds long and listed in an HLS playlist. The tool reads all of these at once and merges them into a single list of resolutions.
The resolution you pick has a big impact on file size. Mux's Big Buck Bunny demo stream advertises about 6.2 Mbps at 1080p and 0.8 Mbps at 480p: for 10 minutes 35 seconds of film, that's roughly 500 MB versus 66 MB. To watch on a phone or play a clip in a classroom, 480p or 720p is often enough and saves storage.
You can't right-click and save an HLS stream: every segment has to be fetched in order and then stitched together. The tool does this in your browser and converts MPEG-TS segments into an MP4 file that plays anywhere, with no software to install and no command line.
Who uses it, and for what?
- Teachers and trainers
- Grab a Creative Commons video, for example from Wikimedia Commons, and play it in class without relying on the school Wi-Fi. Wikimedia Commons usually offers the same video in several resolutions (240p, 360p, 480p, 1080p…) alongside the original file, and the tool lists them all.
- Marketing teams and webmasters
- Lost the source file of a video published on your own site? Find the highest-resolution version still online, with its exact dimensions, duration and size, before a redesign or a hosting migration.
- Video engineers and front-end developers
- Check the bitrate ladder of an HLS stream: resolution, average or peak bitrate, duration, segment format (MPEG-TS or fMP4), separate audio track or encryption. Handy for validating a staging stream's encoding before it goes live.
- Researchers, archivists and journalists
- Keep a working copy of a video published by a public agency or under an open license, along with its source URL, so you can cite or verify it later even if the page changes.
How does it work?
Our server reads the page's HTML (up to 3 MB) and looks for <video> and <source> tags, og:video and twitter:player:stream metadata, JSON-LD VideoObject entries, and any address ending in .mp4, .webm, .mov, .m3u8 or .mpd, including inside a player's JSON configuration. It refuses local-network and hosting-provider addresses and only fetches public websites.
Each candidate is then checked. For an MP4 or MOV file, the server reads only the first 256 KB and looks for the moov box, which holds the width, height and duration; if it sits at the end of the file, the mdat box header tells where to fetch it. For an HLS playlist (RFC 8216), it reads each variant's RESOLUTION and BANDWIDTH attributes, then the length of its segments, which gives a size estimate.
When you click Download, your browser fetches the video from the original site without going through ToolPilot. HLS segments are downloaded six at a time and stitched in order: fMP4 segments are appended after their initialization segment, and MPEG-TS segments are converted to MP4 by the open-source mux.js library. The original site must allow this through a CORS header; if it doesn't, the tool offers to open the file or copy the stream address.
Frequently asked questions
- Why doesn't the tool find any video on some sites?
- Because the page doesn't contain the video. Many sites send an almost empty HTML shell, then their JavaScript asks the site's own API for the video address, often with a short-lived token. Without running that code, no generic tool can know it. The same goes for major platforms like YouTube, whose player fetches its streams through separate requests.
- Is it legal to download a video?
- It depends on who holds the rights. In the US, copying a copyrighted video for personal use is not automatically allowed: fair use (17 U.S.C. § 107) is decided case by case. Bypassing a technological protection measure is prohibited by 17 U.S.C. § 1201, which is why encrypted streams are not supported. Creative Commons videos, public-domain works and your own content are fine; for anything else, check the site's terms of use.
- Why does the downloaded video have no sound?
- Some HLS streams deliver picture and sound in two separate playlists, declared with the EXT-X-MEDIA tag. The tool saves the video variant you chose without the audio track, and warns you beforehand with the "Audio is streamed separately" notice. MPEG-DASH streams almost always work this way, which is why they aren't supported.
- What if the download is refused?
- A browser can only read a file from another site if that site sends the Access-Control-Allow-Origin header (the CORS rule in the Fetch standard). Otherwise, open the video in a new tab and save it with Ctrl+S, or copy the stream address to open it in VLC or save it with the suggested ffmpeg command.
- Why is the size shown with "≈"?
- For an HLS stream, the size isn't written anywhere: it's estimated by multiplying the bitrate advertised in the playlist by the total segment duration. When the playlist only gives the peak bitrate (BANDWIDTH) and not the average (AVERAGE-BANDWIDTH), the actual file is often smaller. For a direct file, the size shown is the exact one reported by the server.
- Does my data go through a server?
- Partly, and there's no way around it: a browser isn't allowed to read another site's page code. So our server reads the page, the playlists and the first bytes of each file to list the resolutions, and keeps nothing. The video itself is downloaded and assembled in your browser, straight from the original site: it never passes through ToolPilot.