If you have ever pasted an Instagram Reel link into a downloader and been told "this is not a Reel", you have run into the quietest bug in the Instagram downloader world. The link was fine. The tool was wrong.
Instagram does not use one URL shape for Reels. It uses two, and the difference is easy to miss because both open the same video in a browser.
The two URL shapes
A Reel link copied from the Instagram app usually looks like this:
https://www.instagram.com/reel/ABC123xyz/
But you will also encounter this shape, especially from the web version of Instagram, from someone else's shared link, or from an older post:
https://www.instagram.com/reels/ABC123xyz/
The extra "s" is the whole difference. Both are valid, both resolve to the same video, and Instagram itself treats them as the same content.
Why some downloaders fail on one of them
A downloader does not watch the video the way you do. It reads the URL, matches it against a pattern, and decides what kind of content it is looking at. Many tools were written against a single pattern, usually /reel/, because that is what the app hands you most of the time.
When a tool sees /reels/ it fails the match, and instead of saying "I do not recognise this link format" it says "this is not a Reel". That message is misleading, and it sends people looking for a problem that does not exist.
The same thing happens in reverse with post links. A photo post uses /p/, a Reel uses /reel/ or /reels/, and a TV post uses /tv/. A tool that only accepts one of these will reject the others, and the rejection will look like your mistake rather than the tool's limitation.
How to check a Reel link in five seconds
Before you blame the link, look at the path segment right after the domain:
- /reel/ or /reels/ - it is a Reel. Both should work.
- /p/ - it is a feed post. It may be a photo, a carousel, or a video, but it is not filed as a Reel.
- /tv/ - it is a long-form video post.
- /stories/ - it is a Story, which is a different format entirely and expires after 24 hours.
If the path says /reel/ or /reels/ and a tool still refuses it, the problem is the tool, not your link.
Trailing slashes, query strings and share tracking
There are two more things that break naive URL matching:
Share parameters
When you use "Copy link" inside Instagram, the URL sometimes carries extra parameters, for example ?igsh=... or ?utm_source=.... These are tracking values. They do not change the video, and a well-built downloader strips them before matching. A tool that does not strip them can fail even on a perfectly normal link.
Trailing slash and case
/reel/ABC123/ and /reel/ABC123 are the same address. Path matching should be case-insensitive and tolerant of the trailing slash. If a tool is strict about either, you get a false error.
What JazzGhost does with the link
Our parser normalises the URL first: it drops tracking parameters, ignores a trailing slash, lowercases the path segment, and then accepts /reel/, /reels/, /p/, /tv/ and the short instagram.com/share/ form. If the path does not match any known content type, you get a clear message naming the format we received, instead of a generic failure.
You can try it on the Instagram Reels Downloader, or use the Post Downloader for /p/ links and the Story Downloader for /stories/ links.
The short version
- Instagram Reels live at two paths:
/reel/and/reels/. - Both are correct. Neither is a mistake on your part.
- A tool that rejects one of them has an incomplete parser, not a better parser.
- Tracking parameters and trailing slashes are the other two common false-failure causes.
- When a link genuinely is a post rather than a Reel, use the tool built for that format.
Frequently asked
Is a /reels/ link older or lower quality?
No. The path shape does not indicate age or quality. It reflects which surface of Instagram generated the link.
Can I just change /reels/ to /reel/ myself?
Often yes, and the link will still resolve. But you should not have to. A downloader that needs you to hand-edit URLs is doing half the job.
Does the link tell me whether the account is public?
No. You only find out when the fetch runs. If the account is private, the media is not retrievable, and no link format changes that.
Every Instagram URL shape, in one table
If you only take one thing from this page, take this table. It covers the link forms you will meet in practice, and what each one actually is.
- /reel/ID/ - a Reel, the shape the app produces. A Reel downloader should accept it.
- /reels/ID/ - the same Reel, the shape the web app and some share sheets produce. It must also be accepted.
- /p/ID/ - a feed post. Could be one photo, several photos, a carousel, or a video. Not a Reel.
- /tv/ID/ - a long-form video post, the successor to IGTV.
- /stories/HANDLE/ID/ - a Story. Expires after 24 hours.
- /share/ID/ - a short share form that resolves to one of the above.
Notice that only two of the six are Reels. A large share of "this link is not a Reel" errors are simply a /p/ or /tv/ link being pasted into a Reels-only tool.
What a correct error message looks like
There is a real difference between these two responses:
"Error: this is not a Reel."
"We received a post link (/p/). Reels use /reel/ or /reels/. Use the Post Downloader for this link."
The first tells you nothing you can act on and implies you made a mistake. The second tells you what was received, why it was rejected, and where to go instead. When you are evaluating any downloader, the quality of its error messages is one of the fastest signals of how carefully it was built.
