How to export your Instagram DMs
Instagram lets you download your direct messages through the Accounts Center — but the request has two catches: it is not instant, and it only produces a readable file if you ask for JSON, not HTML. Here is the whole path, plus what to expect while you wait. Worth knowing before you start: unlike analyzers that promise a single tidy number and a confident verdict, ReadBeneath reads your messages differently — every observation is tied to the exact messages behind it, each ships with a fair alternative reading, and it refuses when the sample is too thin to support a conclusion.
Last updated: July 15, 2026
How do I download my Instagram DMs?
Instagram no longer keeps this option buried in a per-chat menu — it lives in the Accounts Center, the shared Meta hub for your Instagram and Facebook data. The request itself takes a couple of minutes; the file arrives by email a while later.
- 1Open Instagram on your phone or at instagram.com, go to your profile, and open Settings and activity.
- 2Tap Accounts Center — the shared Meta hub that manages the data for your Instagram and Facebook accounts.
- 3Go to Your information and permissions, then Download your information.
- 4Start a new download request and, when asked what to include, narrow it to Messages so the file stays small and arrives sooner.
- 5Set the Format to JSON — not HTML. This single choice decides whether the export can be read at all.
- 6Choose a date range (All time is fine), pick the account, and submit the request.
- 7Wait for the email from Instagram, then open its link and download the ZIP file it points to.
- 8Upload that ZIP — or the messages JSON inside it — to ReadBeneath.
How long does the download take?
Longer than an app export, and the wait is out of your hands. Instagram assembles the file on its servers and sends an email when it is ready — sometimes within minutes, sometimes a day or two later. Requesting only Messages (rather than your entire account) keeps the file small and the wait short. Start the request, then get on with your day; the email is your cue to come back.
Why JSON and not HTML?
The two formats carry the same conversation but in opposite shapes. HTML is a styled page for scrolling through in a browser; machine-readable JSON is a structured record where each message keeps its sender, time, and content as separate fields:
{
"messages": [
{ "sender_name": "Aisha", "timestamp_ms": 1749766867000, "content": "did you see my last message?" },
{ "sender_name": "Ravi", "timestamp_ms": 1749766931000, "content": "just now — replying properly tonight" }
]
}ReadBeneath reads the sender_name, timestamp, and content of every message, and treats shared photos and posts as attachments. Those fields exist only in the JSON export — the HTML version throws them away, which is why the format choice decides everything.
What is inside the download?
The ZIP is organized by conversation. Under your messages folder, each thread has its own subfolder — named for the other person — containing a message_1.json file (long histories continue into message_2.json and beyond). That JSON is the conversation: every message in order, each with a sender name and a timestamp, plus attachment entries for the photos, voice clips, and shared posts that passed through the chat.
Do I have to upload my whole download?
No. You only need the messages JSON for the conversation you actually want to understand. Open the ZIP, find that thread’s folder, and upload its message_1.json — or, if it is easier, upload the whole ZIP and ReadBeneath will locate the conversation inside. Either way, only the thread you point it at is read; the rest of the archive is never touched.
Troubleshooting: why won't my Instagram export upload?
- You requested HTML instead of JSON. An HTML download cannot be parsed. Start a fresh request and set the Format to JSON before submitting — the message_1.json inside the ZIP is the file that works.
- The email has not arrived yet. The file is not ready the moment you submit. Wait for Instagram’s email, or check the Download your information screen for a completed, downloadable request.
- You downloaded your whole account and cannot find the chat. Look under the messages folder; each conversation is a subfolder with its own message_1.json. Requesting only Messages next time makes this far quicker to navigate.
- The download is one-way. An exported JSON cannot be loaded back into Instagram. It is a copy for reading and analysis; your original DMs are untouched.
What ReadBeneath does with your Instagram export
Once the messages JSON is uploaded, ReadBeneath reads it the way it reads every export: it surfaces per-person communication patterns and ties each observation to the specific messages behind it, pairs every one with a fair alternative reading, and refuses to reach a conclusion your sample is too thin to support. There is no single number and no confident verdict at the end — only observations you can trace back to the lines that produced them. The Instagram DM analyzer explains exactly what a read covers.
Quick answers
Why does the download take so long?
Instagram builds the file on its own servers and emails you when it is ready — anywhere from a few minutes to a couple of days, depending on how much you requested. Narrowing the request to Messages and a specific date range keeps it small, so it is usually the fastest path. Start the request early; there is nothing to do but wait for the email.
HTML or JSON — which format do I pick?
JSON, always. The HTML version is styled for reading in a browser and cannot be parsed as data. Only the JSON export keeps each message as a record with its sender, timestamp, and text — the fields ReadBeneath needs. If you already requested HTML, request a fresh JSON copy; the HTML file will not upload.
Do I have to download everything on Instagram?
No, and you should not. On the request screen, choose Messages instead of the full account. The download is smaller, arrives faster, and contains only your conversations rather than your whole history — a more private choice all round.
Which file do I actually upload?
Inside the ZIP, each conversation lives in its own folder with a message_1.json file (longer chats split into message_2.json and so on). You can upload that JSON directly, or hand ReadBeneath the whole ZIP and it will find the conversation inside.
What happens to photos and shared posts in a DM?
They appear in the JSON as attachment entries alongside the text. ReadBeneath recognizes them and counts each as an attachment, so a photo-heavy thread is still described honestly — the timing and per-person patterns come through even when the image itself is not shown.
Can the other person tell I downloaded our messages?
No. The download request is strictly between you and Instagram. No one in the conversation is notified, and nothing about the chat changes — the export is a private copy of your own data.
Download in hand? See what is underneath.
Upload the messages JSON, pick a focus, and get a free descriptive analysis — every finding tied to cited messages, a fair alternative reading included, and a straight answer if the sample is too thin.