Skip to content

How to Download Instagram and Facebook Messages: Complete Guide

31 July 20268 min readExport

The short answer

To download Instagram or Facebook messages, navigate to Meta Accounts Center, select Your Information and Permissions, click Download Your Information, choose your profiles, select Messages, pick your format (HTML or JSON), and submit the request.

The Meta Download Your Information Tool

Meta centralizes data access requests across Instagram, Facebook, and Messenger through its unified Accounts Center interface. You no longer need to submit independent data requests on each social network. Instead, you configure an export package that extracts direct message threads, media attachments, and account activity across your designated profiles.

Meta offers two export formats:

  • HTML Format: Generates web pages readable in any desktop browser. Messages display in chronological bubbles with embedded image thumbnails and clickable audio links.
  • JSON Format: Generates raw structured text files designed for developers, analytical databases, and automated parsing pipelines.
Configuration ParameterHTML ExportJSON Export
Primary Use CaseHuman reading, legal records, manual auditDatabase ingestion, custom scripts, backups
Viewer RequirementAny web browser (Chrome, Safari, Firefox)Text editor, JSON parser, custom script
File Structuremessage_1.html per conversation foldermessage_1.json per conversation folder
Character EncodingNative UTF-8Escaped Latin-1 / Mojibake encoding
Media LinksRelative paths to local image/video filesRelative JSON string paths to local files

Step-by-Step: Requesting Your Message Archive

Step 1: Access Meta Accounts Center

You can access the Accounts Center via desktop browser or mobile application on either Instagram or Facebook.

  1. On Instagram: Open your profile, tap the hamburger menu (three horizontal lines), tap Accounts Center.
  2. On Facebook: Click your profile avatar in the top-right corner, select Settings & Privacy, click Settings, then click Accounts Center.
  3. In Accounts Center, scroll to the Account settings section and select Your information and permissions.
  4. Click Download your information.

Step 2: Configure Your Message Export Package

  1. Click Request a download.
  2. Choose whether you want an export for a single profile or select multiple linked Instagram and Facebook accounts.
  3. On the next screen, choose Select types of information rather than downloading your entire account history.
  4. Check the box labeled Messages and click Next.
  5. Select Download to device.

Step 3: Choose File Parameters, Quality, and Date Ranges

  1. Date Range: Select All time for a complete historical record, or set a custom window (for example, Last 3 months or Previous year).
  2. Notification Email: Verify the email address where Meta should dispatch your download link once compilation finishes.
  3. Format: Select HTML if you intend to read conversations manually, or JSON for programmatic processing.
  4. Media Quality: Set your media threshold to High, Medium, or Low. High quality preserves original image dimensions and voice memo bitrates.
  5. Click Submit request.

Processing Times and Download Window

Meta compiles your archive asynchronously on its server infrastructure. Depending on the size of your message history and the volume of photos, videos, and voice memos included, processing takes between several hours and five business days.

Once compilation completes, Meta sends an email notification. You then have four business days to download the archive file from Accounts Center before Meta deletes the compiled zip package from its staging servers.

The JSON Mojibake Problem and How to Resolve It

If you choose the JSON format for Instagram or Facebook exports, you will likely encounter an encoding bug commonly known as Mojibake. Meta exports Unicode characters (such as accented characters, non-Latin scripts, and emoji) by reading UTF-8 bytes and writing them out as Latin-1 escaped Unicode strings.

For instance, an emoji or an accented character like é may appear in the raw JSON file as \u00c3\u00a9 rather than its correct representation.

# Python script to correct Meta JSON encoding
import json

def fix_meta_encoding(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        raw_data = json.load(f)
    
    def decode_obj(obj):
        if isinstance(obj, str):
            return obj.encode('latin1').decode('utf-8')
        elif isinstance(obj, list):
            return [decode_obj(item) for item in obj]
        elif isinstance(obj, dict):
            return {key: decode_obj(value) for key, value in obj.items()}
        return obj
    
    corrected_data = decode_obj(raw_data)
    
    with open('fixed_' + file_path, 'w', encoding='utf-8') as f:
        json.dump(corrected_data, f, ensure_ascii=False, indent=2)

fix_meta_encoding('message_1.json')

Running this decoder over your JSON files maps the Latin-1 byte representations back into standard UTF-8 strings, restoring legible text and emoji characters.

Limitations of Manual Meta Downloads

  • Point-in-Time Only: The downloaded archive represents a frozen snapshot. Incoming messages sent after your request are not included.
  • No Cross-Network Correlation: Messages from Instagram and Facebook arrive in separated folder trees without links to a counterparty’s WhatsApp, Signal, or email exchanges.
  • Deleted Message Omissions: Messages and media retracted or deleted prior to generating the download request are excluded from the dataset.

Continuous Operational Message Archiving

For commercial teams and individual operators who require continuous records without submitting manual export requests, CommunicationOS connects to Meta Graph endpoints directly. It maintains a permanent, searchable audit trail across Instagram, Messenger, and seventeen other messaging networks concurrently.

Frequently asked

Why does my Instagram message export show strange scrambled characters for emoji?

Meta exports JSON strings by incorrectly treating UTF-8 bytes as Latin-1 characters. This causes emoji and special symbols to display as escaped byte sequences (such as \u00f0\u009f\u0091\u008d). You can repair these files using a short Python script that re-encodes the strings from Latin-1 back to UTF-8.

Can I download messages from a single specific Instagram conversation?

No. The Meta Download Your Information tool does not permit selecting individual conversations. It generates an export containing all message threads active during your chosen date range.

How long do I have to download the Meta export file once it is ready?

Meta retains compiled download packages on its staging servers for four days after sending the confirmation email. If you do not download the file within four days, you must submit a new request.