Instagram Highlight Downloader
Save pinned Story highlights — the ones that never expire.
Highlights are Stories that stuck around
Unlike regular 24-hour Stories, Highlights are pinned to a user's profile and persist until the owner removes them. If the URL looks like instagram.com/stories/highlights/<id>/, paste it here to save the underlying media.
How it works
- 1. Open the Highlight reelTap a Highlight circle on a profile → share icon → Copy link.
- 2. Paste aboveURL pattern: instagram.com/stories/highlights/<id>/.
- 3. Download each slideHighlights can have multiple slides (photo + video mix). Each one gets its own Download button.
Features
No 24h pressure
Highlights don't expire, so no rush — save when you have time.
Photo + video
Highlights can contain either type; we handle both in one flow.
Original resolution
No re-encoding on the way through.
Public profiles only
Private-account Highlights are not supported — CLAUDE.md hard rule.
A Highlight is a Story someone decided to keep
Stories expire after 24 hours. That's the deal. But Instagram added an escape hatch in 2017 — the creator can tap "Highlight" on a live Story and pin it to their profile permanently. That's a Highlight.
Mechanically it's still a Story. Same aspect ratio, same slide-by-slide structure, same format (photo or video, 15 seconds per video clip). Only difference: the 24-hour timer is suspended. The slides stay on Instagram's CDN until the creator decides to unpin them or delete the account.
Which is great for downloading. No clock. Paste the URL whenever — an hour from now, a week from now, even next year, usually still there.
Reading a Highlight URL
The URL pattern is distinctive — instagram.com/stories/highlights/17XXXXXXXXXXXXXXX/. That numeric blob after /highlights/ is the Highlight's ID. Starts with a 17 prefix, followed by a long integer, generated once by Instagram when the creator first pins the Highlight. After that, it's locked. Doesn't change.
URL doesn't match that shape? You've got something else on your hands. /stories/USERNAME/STORYID/ is a live Story (24-hour timer running). /p/ or /reel/ is a regular post. Paste any of those here and we steer you over to the right tool.
Short URLs like instagr.am/s/... occasionally show up — Instagram's own URL shortener. Those redirect to the long form. Either works.
Multiple slides, handled one-by-one
A Highlight can contain dozens of slides. The "What I ate in Tokyo" kind of Highlight often has 20+. Each slide is a separate Story the creator pinned, so each one has its own format (photo or video), its own duration, and its own CDN URL.
Our result page lists them all, numbered. You'll see a "Slide 1 of 23" row, then a "Slide 2 of 23" row, right through to the end. Per-slide Download button. Photo slides get the image save, video slides get merged MP4 with audio — identical handling to regular Story videos.
A "Download all" button would be nice for long Highlights. It's on the list. Shipping that means building a ZIP streamer that plays nicely with ffmpeg — not trivial, not urgent enough to block existing work.
When the Highlight URL goes dead
You pasted a Highlight URL last week, it worked. Today it errors. What changed?
Most of the time, the creator unpinned the Highlight. Highlight URLs are tied to the Highlight ID, not to the individual stories nested inside. Unpin the Highlight and the ID is invalid, URL 404s, gone. The individual story slides that made it up may or may not survive — typically they're deleted along with the Highlight container itself.
Less often, the creator switched their account to private. Private Highlights we can't fetch. The error message reads "account is private" in that case.
Rarest — the creator deleted specific slides inside the Highlight, not the whole thing. URL still resolves, returns fewer slides than you remembered. Not a bug in our tool, just the live state of the Highlight on Instagram's side reflecting what's actually there right now.
The little circle cover isn't part of the download
Highlights show up on a creator's profile as circular covers — a small preview image the creator picked to represent the Highlight. They're a UI element, not a slide.
When you download a Highlight, you get the slides inside. You don't get the cover image. The cover lives at a different CDN path (it's technically a thumbnail asset) and isn't addressable through the Highlight URL.
If you specifically want the cover — rare, but happens — you'd have to inspect the profile page's HTML and extract the circular cover's image URL manually. We don't provide a shortcut for this because almost nobody asks.
Privacy considerations for anyone saving Highlights
A Highlight is curated. The creator explicitly chose to pin those specific Stories to their profile as a long-term representation of something — a trip, a product line, a relationship milestone. The intent is public visibility.
Downloading a copy for your own reference is fine under most jurisdictions' personal-use exceptions. Redistributing that copy is a different conversation. Re-uploading someone's Highlight to another platform, or commercial use, typically requires their permission — the fact that it's publicly visible on Instagram doesn't transfer the copyright.
If you're saving Highlights from a creator you'll interact with later (journalist working a story, brand researching a collaboration), a polite heads-up after you've saved is usually good practice. Most people don't mind; most people do mind being surprised.
What we observed
- Mechanism verified on 2026-04-23 against the production /api/parse endpoint with a canonical /stories/highlights/HIGHLIGHT_ID/ URL shape. The parser detects the highlight prefix and routes through yt-dlp's instagram:story extractor, which shares its plumbing with live Stories — the difference is the 24-hour expiry clock (Stories have one; Highlights don't, because the creator pinned them). When we fed it an intentionally invalid highlight ID, the pipeline surfaced a clear yt-dlp error ("instagram:story … This content is unreachable") inside the result card in ~12 seconds rather than hanging or returning a half-written file — same error-first contract we depend on for the Story downloader. We could not cold-test a live public highlight end-to-end on this session (Instagram's profile browse path was returning 429 rate-limits, so we couldn't harvest a fresh highlight URL to paste), but the parser + surface-error layer of the pipeline is working as designed. (2026-04-23)
FAQ
- What's the difference between a Story and a Highlight?
- Stories auto-delete after 24 hours. Highlights are Stories the user chose to pin to their profile permanently (or until they unpin them). The URL pattern differs: /stories/username/... for live Stories vs /stories/highlights/<id>/ for Highlights.
- Can I download a whole Highlight reel at once?
- Today each slide has its own Download button. A 'Download all' feature is on the roadmap.
- Will the owner know I downloaded?
- No. Highlight downloads look like normal viewers to Instagram — no notification is sent.
- The URL keeps returning an error. Why?
- Most common reasons: the Highlight was deleted by the owner, the account is private, or the URL you copied is malformed (missing the /highlights/<id>/ segment). Double-check by opening it in a fresh incognito tab.
- What formats do I get?
- Video Highlights save as MP4 with audio. Photo Highlights save as JPG/WEBP — same format Instagram stores.
More downloaders
Something unclear? The FAQ covers format, quality, privacy, and legality. For a different content type, jump to every downloader we run. Team + contact on About.