How to Download Instagram Messages (DMs) and Save as PDF

Instagram has no "export this conversation" button inside a chat — instead, you request a copy of your data through the same privacy tool used for account exports generally. It works, but the result is a raw JSON file that reads newest-message-first and can show up encoded strangely. Here's the exact path to request it and how to turn it into something readable.

Requesting your messages

  1. Open Instagram and go to Accounts Center (accessible from Settings).
  2. Tap Your information and permissions.
  3. Tap Download or transfer information.
  4. Select the Instagram account, then choose Some of your information rather than everything.
  5. Tick just Messages.
  6. Choose a date range for the download.
  7. Set the format to JSON — not HTML. This matters: HTML is meant for opening directly, but JSON is the complete, structured version that a viewer can parse reliably.
  8. Pick a media quality for any attached photos and videos.
  9. Tap Create files.

Waiting for the download

Instagram doesn't hand you the file immediately. It emails you a download link once the export is ready — often within a few hours, but it can take up to roughly 48 hours for a large account. There's no way to speed this up; just check back or wait for the email.

What’s inside the zip

Once downloaded and unzipped, your messages live at a path like:

your_instagram_activity/messages/inbox/<name>_<id>/message_1.json

with any shared photos and videos in folders alongside it. A few things about the format catch people off guard:

  • Messages are stored newest-first — the opposite reading order of a normal conversation. Open the raw file and you're reading the chat backwards.
  • Text is mojibake-encoded. Instagram's JSON export mis-encodes non-ASCII characters (emoji, accented letters, non-Latin scripts), so raw text often shows up as garbled symbol strings instead of the original characters.
  • Long threads split across multiple filesmessage_1.json, message_2.json, and so on, each covering a chunk of the conversation, which you need to combine to see the whole thing in order.

None of this makes the export wrong — it's simply not meant to be read directly. A viewer that understands the format fixes the order and the encoding automatically.

Choosing a date range and media quality

Instagram lets you limit the request to a specific window of time, or choose all time for your complete message history. If you only need a recent dispute or conversation, a shorter range downloads faster and produces a smaller file. The media quality setting (low, medium, or high) controls how large any attached photos and videos come out — high preserves the most detail but takes longer to prepare and download, which matters if the account has years of shared media.

This is the same system behind Instagram’s privacy tools

The "Download or transfer information" flow is Meta's general data-portability tool, built to satisfy data-access rights (like GDPR in the EU or similar rules elsewhere) rather than being a feature designed specifically for chat backups. That's worth knowing because it explains the rough edges — the newest-first order, the encoding issue, the numbered file splits — none of it is a bug specific to messages; it's a byproduct of a generic export system being pointed at conversational data it wasn't originally designed to make readable. Long threads are split into message_1.json, message_2.json, and so on for the same reason: the tool caps how much it writes into a single file, regardless of what kind of data it's exporting.

Turning it into a readable PDF

Drop the message_1.json (and any message_2.json, etc.) along with the media folder into ChatViewer. It reorders the messages chronologically, decodes the mojibake back into normal text, and shows photos inline — all processed in your browser, with nothing uploaded. From there, Export PDF gives you a free copy of the first 500 messages with a small watermark, an Unlimited PDF ($9) with every message and no watermark, or a Court-ready PDF ($19) with page numbering, Bates stamps and a SHA-256 hash if the conversation needs to be presented formally.

Frequently asked questions

Should I choose JSON or HTML when downloading Instagram messages?

Choose JSON. It is the complete, structured export that a viewer can parse reliably. The HTML option is meant for opening directly in a browser but is a worse fit for anything beyond a quick look.

How long does Instagram take to prepare my messages?

Often just a few hours, but it can take up to about 48 hours for a large account. Instagram emails you a download link once it is ready.

Why does my Instagram export show weird symbols instead of emoji or accented letters?

Instagram's JSON export mis-encodes non-ASCII text, a known quirk often called mojibake. The raw file looks garbled, but a viewer built to handle it decodes the text correctly.

Why are the messages in the wrong order?

Instagram's export stores messages newest-first, the reverse of a normal conversation. A viewer reorders them chronologically before displaying the chat.

Can I download just one conversation instead of everything?

Instagram's tool exports by date range rather than by conversation, so you may get multiple threads in one download. A viewer lets you pick the conversation you want once it is open.

What if I never receive the download email?

Check your spam folder first, and confirm the email address on the Instagram account is one you actually check. If it still hasn't arrived after 48 hours, submit the request again — Instagram does not queue or notify you of a stuck request.