Skip to content

Mattermost Archiver Plugin — User Guide

This plugin lets you export messages you can access in Mattermost into a ZIP file.

It supports:

  • Export the current channel (via a channel header button)
  • Export a multi-channel archive (via a picker modal)

No export option?

Export of teams and channels is only activated for team and channel admins. Direct and group messages can be exported by people involved in the conversation.


Privacy Note

Treat exported ZIPs as sensitive data (they may contain confidential messages, files and privacy related information).

1) Export the current channel

Available for team and channel admins. Direct and group messages can be exported by members of the channel.

  1. Open the channel you want to export.
  2. Click Export channel archive in the channel header.
  3. Configure options in the export picker (date range, attachments, HTML view, …).
  4. Click Download.

Screenshot: channel header with “Export channel archive”


2) Export this team

Available for team admins.

  1. Open the Team menu of any of your teams you have access to (top-left).
  2. Click Export this team.
  3. In the picker, select one or more channels.
  4. Choose export options.
  5. Click Download.

Screenshot: main menu item “Export this team”

Screenshot: picker with channel list


3) Export options (what they mean)

Date range

  • From: first day to include (inclusive, UTC)
  • To: last day to include (inclusive, UTC)

Tip: If your export is very large or slow, narrow the date range.

Attachments

  • When enabled, each channel stores uploaded files in its data/.../files/ folder. The same attachment copy is used by HTML, JSON/NDJSON, and JSONL outputs.
  • The system admin can disable attachments entirely, and can enforce a maximum size per file.
  • If some files are skipped due to the size limit, the ZIP includes skipped_attachments.json describing what was omitted.

Human-readable format (HTML)

When enabled, the export includes a human-friendly HTML view you can open locally.

  • Single page: one HTML file per channel (no chunk files). This format might not be ideal for very long channels. But it is suitable for “find in page” search.
  • Paginated: multiple static HTML pages (Newer/Older navigation)
  • Lazy loading: an offline viewer that loads older messages as you scroll. Lazy mode generates a chunks/ folder inside the ZIP (this is expected for lazy mode)

Machine-readable format (JSON)

If the system admin allows it, you may see a checkbox like Machine-readable format (JSON). You can choose between two formats:

  • Multiple channel-specific files (JSON/NDJSON) creates separate channel, post, and thread files for custom processing. Post records retain the source user ID, username, display name, and email without transforming them. Attachments include archive-relative file_paths that point directly to files under data/;
  • One global Mattermost migration file (JSONL) creates mattermost-import.jsonl, structured for loading all selected content into another Mattermost instance. However, we do not guarantee that it can be imported directly into a new Mattermost instance without any additional modifications. It is up to you to continue from this point.

The identity choice below applies only to the global JSONL file. Channel-specific JSON/NDJSON files always retain the original usernames and emails.

For the global JSONL file, choose how user identities are represented:

  • Keep display names but modify emails and usernames creates deterministic archive accounts and avoids conflicts with actual email addresses. This is the default.
  • Keep original usernames and emails preserves those values exactly. Use this only when the destination should match existing accounts or retain the original identities; duplicate usernames or emails on the destination may require import preparation.

Both JSON outputs cover the same selected channels and messages. Only the file structure and intended use differ.

What you’ll see in the ZIP depends on which export you run:

  • Channel-specific files: index.json identifies the exporting user (including username, email, and display name) and contains the exported teams, their channels, and directory paths. Each channel directory under data/ contains channel.json, posts.ndjson, and threads.ndjson, for both single- and multi-channel exports.
  • Each team.json preserves the Mattermost team fields and adds the team-admin profiles once for the team.
  • Each channel.json preserves the Mattermost channel fields and adds a readable channel type, archived status, team metadata, creator profile, channel-admin profiles, and paths to that channel’s HTML, posts, threads, and attachments.
  • Global migration file: root-level mattermost-import.jsonl for both export kinds

4) What’s inside the ZIP

Single-channel export

Typical contents:

  • index.html (when Human-readable format (HTML) is selected; entry point)
  • One channel folder under data/teams/... or data/direct-messages/... containing:
  • index.html (when Human-readable format (HTML) is selected)
  • files/… (optional)
  • channel.json, posts.ndjson, threads.ndjson (when Multiple channel-specific files (JSON/NDJSON) is selected)
  • team.json in the parent team directory (for team channels)
  • skipped_attachments.json (only if a max-size limit is enabled and some files were skipped)
  • index.json (when Multiple channel-specific files (JSON/NDJSON) is selected)
  • mattermost-import.jsonl (when One global Mattermost migration file (JSONL) is selected)

Multi-channel export

Typical contents:

  • index.html (when Human-readable format (HTML) is selected; entry point)
  • One folder per selected channel under data/teams/... or data/direct-messages/... containing:
  • index.html (when Human-readable format (HTML) is selected)
  • files/… (optional)
  • channel.json, posts.ndjson, threads.ndjson (when Multiple channel-specific files (JSON/NDJSON) is selected)
  • One team.json in each exported team directory
  • skipped_attachments.json (only if a max-size limit is enabled and some files were skipped)
  • index.json (when Multiple channel-specific files (JSON/NDJSON) is selected)
  • mattermost-import.jsonl at the ZIP root (when One global Mattermost migration file (JSONL) is selected)

5) Opening the HTML export

  1. Ensure Human-readable format (HTML) was selected, then unzip the archive.
  2. Open the HTML entry point in a browser:

  3. Single- or multi-channel export: open the root index.html

Tip: For lazy-loading HTML exports, keep the entire folder structure (including chunks/) together.


6) Troubleshooting

“Export failed: 401 unauthorized”

You are not logged in (or your session expired). Refresh Mattermost and try again.

“Export disabled” / “forbidden”

Access is restricted to certain roles. Team exports are limited to team admins and channel exports in teams are limited to both channel and team admins. Direct and group messages outside of teams can be archived by members of the conversation.

If your team or channel has no available admin please contact us via support@hifis.net.

The export option isn’t visible

  • The plugin feature may be disabled for your account.
  • In some environments, UI placement can vary by Mattermost version.

The ZIP is huge / slow to download

  • Narrow the date range.
  • Disable attachments.
  • Consider Paginated or Lazy HTML for very large channels.