Instagram Reels: where the MP4 comes from
A Reel, a feed video and an IGTV clip are all served the same way: Instagram keeps several MP4 renditions per post and the downloader lists the ones that post actually has.
Instagram's links carry a shortcode — the Db3xk2LtQp1 part of a post URL. That code is a base64-shaped encoding of the post's numeric media id, and the resolver decodes it locally before it asks Instagram anything. It is also why a profile link cannot work: there is no post to resolve, only a page full of them.
Reading a public post without an account
The resolver calls Instagram's own mobile media endpoint (i.instagram.com/api/v1/media/<id>/info/) with the app id Instagram's web client uses and a mobile user agent. A redirect to a login page — the standard sign that a post is not public — is treated as private and the resolver stops there.
If that endpoint refuses, two fallbacks follow: the post's public embed page, which still carries the video markup, and an existence probe that can tell a deleted post from a private one. The order matters. A deleted post answers not_found; a private one answers private; neither is retried forever.
Why the quality list names the short edge
Instagram stores a vertical Reel as something like 1080×1920. Labelling that file '1080p' would be technically true and practically confusing, because the 1080 is the width of a portrait video, not its height. The resolver uses the shorter side of the frame for every label, so a 1080×1920 Reel and a 1920×1080 landscape video both read as 1080p.
- Up to four renditions are listed, each at a different pixel size.
- Duplicates and near-duplicates are collapsed, so the list never shows the same frame twice.
- The list is ordered tallest first, so the top row is the best Instagram published for that post.
- File sizes come from a HEAD request, and are left blank when Instagram does not answer it.
Why this one downloads in the page
Instagram's media CDN sends access-control-allow-origin: *, unlike Pinterest's or YouTube's. The browser can therefore read the file, which is what lets the page show a real download with progress. The resolver also appends &dl=1 to every link, so if you copy the URL into a new tab instead, Instagram's CDN still returns it as an attachment rather than trying to play it.
The limits, stated plainly
| Case | Result |
|---|---|
| Public Reel, video or IGTV post | Resolved, up to four qualities. |
| Private account or a post behind a login | private — Instagram redirects anonymous readers to a login. |
| Image-only post or carousel with no video | no_video. |
| Deleted post | not_found. |
| Stories, highlights, profile pages | Not supported: there is no public post to read. |
Instagram is also the stingiest platform here about request volume: its resolver allows twelve lookups per minute per address, compared to thirty or forty elsewhere. That is a deliberate, conservative ceiling — hammering Instagram's endpoints is the quickest way to get them to stop answering.
The short version
- The shortcode is decoded locally; the resolver starts from the post id.
- Only public posts resolve — Instagram's login redirect is treated as private.
- Quality labels name the short edge of the frame, and up to four sizes are listed.
- The file downloads in the page, straight from Instagram's CDN.
- Nothing is stored, re-encoded or re-hosted.
Questions
Why can I not download a Reel in 4K?
Because Instagram only stores the renditions it encoded for that post. The list shows the largest ones Instagram published, which for most Reels means the file the app itself plays.
Does downloading Reels need an Instagram account?
No. Public posts are read through Instagram's own public endpoints without signing in. Private posts, on the other hand, cannot be read at all — Instagram redirects anonymous readers to a login page.
What does the '1080p' label mean on a vertical Reel?
It names the shorter side of the frame. A 1080×1920 Reel and a 1920×1080 landscape video are both labelled 1080p, so the label stays comparable across orientations.