A browser extension for downloading media from Instagram and Threads. It adds download controls to posts, reels, stories, highlights, avatars, and profile pages, with configurable filenames and ZIP output.
Source: fajarmf10/instagram-download-browser-extension
- Download images and videos from Instagram posts, reels, stories, highlights, and profile grids.
- Download profile avatars using the best available HD profile picture URL.
- Download all visible profile posts in one flow from the profile page.
- Choose whether profile batch downloads include images, videos, or both.
- Include reels in profile batch downloads when they are shown on the profile.
- Save profile batches as one ZIP per profile, with an option to place each post in its own folder.
- Batch download available profile highlights into one ZIP.
- Pause, resume, stop, and throttle profile batch downloads.
- Abort on failed profile batch downloads and show an error instead of silently skipping failures.
- Add browser video controls where supported.
- Add optional open-in-new-tab and ZIP buttons.
- Support Threads media downloads.
- Store recently discovered media details locally so repeated downloads can resolve faster.
- Configure the extension from a full-page settings screen.
On an Instagram profile page, the extension adds a Download All Posts button below the Follow/Message action row and above highlights.
When clicked, it scans the profile grid, opens a confirmation dialog, and lets you choose:
- Which posts or reels to include.
- Images only, videos only, or both.
- ZIP output or direct file downloads.
- One folder per post inside the profile ZIP.
Tagged posts are not included unless they appear as regular posts or reels on the profile itself.
The extension adds a Download Highlights button below the profile highlights row. Highlight details must be available before the batch ZIP can be created. If the extension asks you to open a highlight first, open one highlight on that profile, return to the profile, and try again.
The settings page supports custom filename templates.
Supported tags:
{username}
{id}
{datetime}
{type}
Default filename format:
{username}-{id}-{datetime}
Default datetime format:
YYYYMMDD_HHmmss
This project uses pnpm, TypeScript, esbuild, and Vitest.
Install dependencies:
pnpm installRun unit tests:
pnpm testBuild for Chrome:
pnpm run build:chromeBuild for Firefox:
pnpm run build:ffWatch Chrome build during development:
pnpm run watch:chromeWatch Firefox build during development:
pnpm run watch:ff- Run
pnpm run build:chrome. - Open
chrome://extensions. - Enable
Developer mode. - Click
Load unpacked. - Select
dist/chrome. - After each rebuild, click the extension reload button in
chrome://extensions. - Refresh any open Instagram or Threads tabs so the new content script is loaded.
- Run
pnpm run build:ff. - Open
about:debugging#/runtime/this-firefox. - Click
Load Temporary Add-on. - Select a file inside
dist/firefox, such asmanifest.json. - Reload the temporary add-on after rebuilding.
- Refresh any open Instagram or Threads tabs.
- Original project: TheKonka/instagram-download-browser-extension
- Inspired by: Instagram_Download_Button
The source code is licensed under MIT. See LICENSE.