Feature · Local Backup

Erase the past. Keep the proof.

Save the whole Instagram conversation as a single ZIP before you bulk-delete it. A readable HTML viewer, every photo, every voice note, every video, on your machine. Open it in 2030, it still works.

Built locally inside the extension. Nothing transits through any server we run.

What lands in the ZIP

What's actually inside the backup file?

A single .zip archive that opens like any other ZIP. Inside, you get one HTML file and one media folder. The HTML reads the media folder by relative paths, so the whole thing stays portable. Double-click the HTML, your browser opens, you scroll through the conversation as if you were still on Instagram.

ZIP
Unsay - alex_blackwood_2026-05-30.zip
430 MB · 2,894 items · saved to Downloads/
conversation.html 1.2 MB
media/ 428 MB
photos/ 2,341 files
voice_notes/ 506 files
videos/ 47 files
  • conversation.html, a self-contained viewer. Standalone HTML, CSS and JavaScript embedded inline. No external font, no tracker, no fetch to anywhere. Loads in any browser, online or offline.
  • media/photos/, every image you ever exchanged. Original resolution. Click any thumbnail in the viewer, a full-size lightbox opens. Right-click, save as, you own the file.
  • media/voice_notes/, every audio bubble. The viewer renders them with a waveform and a play button. Same UX as Instagram's own voice messages, except you control the files.
  • media/videos/, every clip and reel. Native HTML5 player, full-screen mode, scrubbing, sound. Shared reels appear as preview cards in the conversation flow.

Free vs Pass

What gets saved on each tier?

The backup feature ships with the free Chrome extension. The free tier saves your half of the conversation, what you sent. A Pass extends it to the entire thread, both sides. Same ZIP format, same viewer, just a fuller dataset.

In the ZIP Free With a Pass
Your text messages All of them All of them
Their text messages Not saved All of them
Photos you sent Included Included
Photos they sent Not saved Included
Voice notes (both sides) Yours only Both sides
Videos (both sides) Yours only Both sides
Shared reels and posts Cards you shared Both sides
HTML viewer Same viewer Same viewer
Group DM support Your messages All participants
Price $0 forever $15 / 7 days · $30 / 30 days

The free backup is enough if you want a personal archive of what you said. The full backup matters when the conversation itself is the artifact.

Why people do it

Three reasons people back up before deleting.

Almost everyone who bulk-deletes an Instagram conversation has thought about saving it first. They split into three archetypes. The Local Backup feature was designed to cover all three without forcing them to compromise.

A

The archivist: you want to remember

Years of voice notes from a friend who moved away. The reels you tagged each other in. The 2 AM text threads from college. Deleting them on Instagram doesn't mean you want to lose them, it means you don't want them on Meta's servers anymore. The ZIP gives you a personal archive that nobody can take down.

B

The defender: you might need proof

A messy breakup, a roommate dispute, a freelance client who's gone quiet, a stalker. You want the conversation off your account, but you need the evidence of what was actually said in case it matters later. The HTML viewer renders timestamps, sender names, and original media, which is exactly what you'd want to show a lawyer, HR, or law enforcement.

C

The closer: you want clean closure, but not naked closure

You're done with the chapter. You want it gone from the app you open every day. But unsending forever, without keeping anything, feels like erasing a part of yourself. The backup is the middle path. The thread leaves Instagram. The memory stays with you, in a file you control.

Three reasons. Same feature. No judgement on which one is yours.

What makes this different

Why does no other extension actually back up the conversation?

Most "Instagram delete" tools claim to back up messages, but in practice they save a text dump or a list of URLs that expire within days. Real local backup, with the media baked in and a viewer that survives, requires solving a stack of technical problems that are easy to skip.

01

Instagram's media URLs expire

Photos and videos in DMs are served by Meta's CDNs through signed URLs that go stale within hours, sometimes minutes. A backup that stores URLs instead of files is a backup that breaks the same day. Unsay downloads every media file at backup time and embeds the binary inside the ZIP.

02

Voice notes live on a separate CDN

Instagram voice messages are hosted on fbsbx.com (Facebook's static binary exchange), not the regular Instagram CDN. Most extensions don't know to fetch from this host, so voice notes silently vanish from their backups. Unsay declares *.fbsbx.com in its manifest specifically to pull voice notes correctly.

03

Chrome's Manifest V3 forbids the easy path

Service workers in MV3 don't have URL.createObjectURL, the standard browser API for delivering a generated file. Most extensions either get stuck on this or fall back to dumping individual files into Downloads. Unsay routes the ZIP through an offscreen document, the only MV3-compliant way to ship a single archive.

04

Building an HTML reader takes effort

A good viewer must handle photos, voice notes with waveforms, video lightboxes, reel cards, group chats, timestamps, dates, and read receipts. It also has to be self-contained, no external assets, so the ZIP works offline. Unsay's viewer is around 50 KB of inlined HTML, CSS and JavaScript, generated per backup.

It's not glamorous engineering. It's the engineering that makes the backup actually outlive Instagram.

How it runs

How does Unsay build the ZIP, step by step?

The whole backup pipeline runs locally, inside the extension. From the moment you click Back up this conversation to the moment the ZIP lands in your Downloads folder, here is what happens. No server in the middle.

  1. 01

    Scan the thread

    Unsay paginates the conversation through Instagram, oldest to newest, using your already-logged-in browser session. Cookies stay where they are, in Chrome's cookie jar. No password is ever read.

  2. 02

    Collect media URLs

    For each message that contains a photo, video, voice note, or shared reel, the extension extracts the signed CDN URL right then. URLs are deduplicated, sorted by type, and queued for download.

  3. 03

    Fetch the media in parallel

    An offscreen document fetches up to 5 media files at the same time from the relevant CDN hosts (cdninstagram.com, fbcdn.net, fbsbx.com). Each binary lands in memory as a typed array. A small progress counter ticks in the side panel.

  4. 04

    Generate the HTML viewer

    The extension renders conversation.html with the full message log, dates, sender info, and relative paths to the media folder. The viewer's CSS and JavaScript are inlined into the file, so it has zero external dependencies.

  5. 05

    Zip and deliver

    The fflate library streams everything (HTML + binaries) into a single ZIP archive. A programmatic <a download> click hands the archive to Chrome's native download UI. The ZIP lands in your Downloads folder, the offscreen document closes itself a moment later. Done.

Privacy

Where does the ZIP actually go?

Straight from your browser to your Downloads folder. The ZIP never transits through any server. The extension builds it locally, hands it to Chrome's native download mechanism, and forgets it exists. We can't see it, we can't read it, we can't even confirm you made one.

  • Built locally

    The ZIP is assembled inside the extension's memory, in your own browser. No upload, no cloud step, no proxy.

  • Lands in Downloads

    One file in your Downloads folder, named after the conversation handle and a timestamp. You own it from the second it touches your disk.

  • Audited by Google

    The extension is reviewed by the Chrome Web Store before each release. Source code is unminified, readable line by line. No hidden upload, no telemetry.

  • No copy on our side

    We can't keep a copy because no copy ever reaches us. If you lose the ZIP, we can't restore it. That's the trade-off of true local-first.

Pricing

Free is enough for your half. A Pass for the full thread.

The backup feature is part of the free Chrome extension. Free covers your own messages and media. A Pass unlocks the full conversation, both sides, with everything they ever sent you. One payment, no subscription, the Pass expires on its own.

Free

$0

Forever.

  • Backup of your own messages and media
  • Same HTML viewer, same ZIP format
  • 100 unsends per week (separate feature)
Install free

No account. No credit card.

−50% Launch offer

7-day Pass

$30 $15

for 7 days. One payment.

  • Full conversation backup, your messages plus theirs
  • Their photos, videos, voice notes included
  • Unlimited unsends + Stealth Mode
Get the 7-day Pass

Expires on its own. Nothing to cancel.

−50% Launch offer

30-day Pass

$60 $30

for 30 days. One payment.

  • Full conversation backup, your messages plus theirs
  • Their photos, videos, voice notes included
  • Unlimited unsends + Stealth Mode
Get the 30-day Pass

A full month, then back to free.

FAQ

FAQ on Local Backup.

What is in the Unsay backup ZIP?

A single .zip archive that contains conversation.html (a self-contained viewer) and a media/ folder split into photos/, voice_notes/, and videos/. The HTML reads the media folder by relative paths, so the whole thing stays portable. Double-click the HTML, your browser opens, you scroll the conversation as if you were still on Instagram, minus the algorithm.

Does the free tier let me back up my Instagram DMs?

Yes. The free Chrome extension includes the backup feature. The free tier saves your own messages and the media you sent (your photos, your voice notes, your videos). A Pass extends the backup to the full conversation, both sides included. Same ZIP format, same viewer, just a richer dataset.

Where does the ZIP backup file go?

Straight to your browser's Downloads folder. The filename follows the pattern Unsay - <conversation_handle>_<timestamp>.zip, for example Unsay - alex_blackwood_2026-05-30.zip. Nothing is uploaded to any server. The ZIP is built locally inside the extension's offscreen document and delivered through Chrome's native download mechanism.

Will the photos and voice notes still play in ten years?

Yes. The media is downloaded as real files (jpg, mp4, m4a) at backup time and bundled inside the ZIP. You do not depend on Instagram's CDNs or signed URLs that expire within hours. The viewer is standard HTML5 with native <audio> and <video> tags. As long as you have a browser, the backup keeps working. Offline included.

Can I back up a group chat?

Yes. Group DMs are fully supported. The HTML viewer renders each participant with their own avatar and handle. On the free tier you get your own messages and media from the group. With a Pass you get every participant's messages and every piece of media exchanged in the group.

How big can the backup get?

It depends on the conversation. A text-only thread of 5,000 messages weighs around 2 MB. A typical multi-year DM with hundreds of photos and voice notes lands between 200 MB and 1 GB. A media-heavy creator-to-creator thread can run to several gigabytes. Unsay shows the rough size estimate before starting so you can decide whether to proceed.

Install Unsay

Ready to back up your first conversation?

Install the free Chrome extension. Open any Instagram DM, click the Unsay icon, scan the thread, click Back up this conversation. The ZIP lands in your Downloads folder a few minutes later, depending on how much media is in the thread.

Works in Chrome, Edge, Brave, Opera. Audited by Google. Nothing leaves your machine.

By Unsay

Published 2026-05-30. Last updated 2026-06-02.