How-to
Carousels: Getting the Videos Out

A carousel holds up to ten items, each independently a photo or a video, and the link addresses the post rather than the slide you were looking at. So a carousel with three videos now returns three rows — Video 1, Video 2, Video 3 — and one with photos only returns a message saying exactly that, because there is no video file to fetch.
Why the slide you were viewing does not travel
This is the behaviour that confuses people most, and it is a property of links rather than of any tool.
When you copy a link while looking at the seventh slide, the address contains no record of that. Which item you were viewing lives in your app's state and is not part of what gets shared. The link says ‘this post’ and nothing more.
Everything downstream follows. A downloader receives the post, sees what is inside, and returns whatever videos it contains — not the one you had on screen, because that information never arrived.

The four kinds of carousel
| Post contains | What you get |
|---|---|
| One video | A single row, as with any post |
| Several videos | One row per video — Video 1, Video 2, and so on |
| Photos only | A message: this post has photos, not a video |
| Photos and videos mixed | Rows for the videos; the photos are not offered |
The last row is worth expecting. A ten-slide post with one video buried among nine photographs returns exactly one row, which can look like the tool missed something. It did not — there was one video.
The numbering follows the post's own order, so Video 2 is the second video in the carousel rather than the second slide. If a post has photos at positions one and two and videos at three and four, the rows are Video 1 and Video 2.
Why photos are not offered
A reasonable question given that the post clearly contains them and something evidently knows they are there.
We download video and nothing else — a deliberate boundary. Images are a solved problem that needs no service: a browser saves one with a right-click or a long press, at full quality, with no server involved and no link sent anywhere.
Video is different in a way that justifies a service existing. It may need two streams fetched and joined, it will not save without a header a page cannot add to someone else's response, and platform CDNs block browsers from fetching it directly. None of that applies to a JPEG — the same reasoning covers profile pictures.
So for a mixed carousel the practical route is both: download the videos here, and save the photographs with a long press directly from the post.
When a carousel link fails
- The account is private. Nothing external reaches those. Check in a logged-out browser window.
- The post was deleted. The address outlives the content.
- You copied a profile link. A person rather than a post — the commonest cause by far.
- The post genuinely has no video. Not a failure; the message says so specifically.
Each of these produces a different message, which is the point of having more than one. A generic failure would send someone hunting for a better tool for a video that does not exist — the full list of causes is here.
Quality, and why there is no menu
Carousel videos come as single finished files rather than as a ladder of resolutions, so there is one option per video and nothing to choose between.
That is the same shape as reels, TikTok and Snapchat Spotlight, and for the same reason: short vertical clips do not benefit from adaptive streaming, so platforms store one version instead of several — the mechanics are here.
The file size is usually not reported either, which is a platform behaviour rather than something we withhold. Carousel clips are short, so it rarely matters — a few megabytes each.
If a video in a carousel looks worse than the same clip elsewhere, that is compounding rather than the download: a clip posted to several platforms is encoded separately by each, and a repost is a generation further from the source.
If you only want one specific slide
There is no way to specify it through the link, so the practical approaches are indirect.
Check whether the creator posted it separately. Many publish the same clip as a reel as well, and a reel link is unambiguous in a way a carousel link cannot be.
Download all the videos and keep the one you wanted. Inelegant, and it works — the numbering follows the post's order, so counting the videos on screen tells you which row to take.
Screen-record as a last resort. Lower quality and it captures exactly what you see, which for a single slide is sometimes enough.
Until today we returned one video and said nothing
This article changed the product while being written, and the change is worth describing because the previous behaviour was the kind of failure that never generates a complaint.
Our code fetched a post, collected the videos inside it, and returned the first one. A carousel with three videos produced a single row. Nothing indicated that two more existed — no message, no count, no hint. Someone would download what was offered, believe they had the post, and be wrong.
That is worse than an error. An error tells you something went wrong and you can act on it. Silently returning less than exists produces a confident, incomplete result, and the person has no way to know they should look further. It is the same class of problem as reporting ‘no playable format’ for content that is perfectly available, which we found on Twitch a day earlier — both invisible from the inside, both discovered by writing down what the product does.
The fix returns one row per video, numbered in the post's order, with the single-video case unchanged so ordinary posts look exactly as before. It is a few lines, and it was a few lines the whole time — the difficulty was never technical, it was noticing.
What we still do not do is offer the photographs, and that is a decision rather than an oversight: your browser saves those better than we could. The distinction we care about is between choosing not to do something and doing it incompletely without saying so. The first is a product boundary you can plan around. The second is a quiet lie, and it had been in this code for as long as carousels were supported.
There is a small design question inside the fix worth mentioning. Numbering the rows as Video 1 and Video 2 tells you how many exist, but not which slides they were — a post can open with three photographs and put its videos at positions four and seven. We considered labelling by slide position instead, and did not: the provider reports the media in order without reliably telling us where each sat in the original post, and a position we inferred would be wrong often enough to mislead. Counting videos is something we know; counting slides is something we would be guessing at.
Frequently asked questions
Can I download all videos from an Instagram carousel?
Yes. A carousel with several videos returns one row per video, numbered in the post's order.
Why does the tool not know which slide I was viewing?
The link addresses the post, not the slide. Which item you had on screen lives in your app and is not part of the shared address.
What about the photos in the carousel?
They are not offered. A browser saves images with a long press at full quality, with no server involved — video is the case where a service is genuinely needed.
Why did a ten-slide post return only one row?
Because it contained one video. The other nine slides were photographs, which are not downloaded here.
Is there a quality choice for carousel videos?
No. They are stored as single finished files rather than a ladder of resolutions, the same as reels and TikTok.
How do I get one specific slide?
Not through the link. Check whether the creator posted it separately as a reel, or download all the videos and keep the one you wanted.
VidKeep runs in your browser — paste a link, pick a quality, keep the file. No account, no app.
Open VidKeepLast updated: 2026-08-01. We revise our guides as the platforms change.

