Export your private Slack data

The NUI Lab is moving its chat from Slack to our own server, Mattermost. Public-channel history has already been migrated for you. Your private conversations — direct messages, group DMs, and private channels — are only visible to you, so if you want to keep a copy, export them yourself before Slack is shut down. This is optional.

This tool is read-only and only ever sees conversations you're already a member of. It never posts, edits, or deletes anything, and your token is never saved or logged.

1. Get your Slack token (one time, ~3 minutes)

  1. Go to api.slack.com/apps and sign in.
  2. Create New App → From scratch. Name it personal-export and pick the nuilab workspace.
  3. In the left sidebar open OAuth & Permissions. Under Scopes → User Token Scopes (⚠️ User, not Bot) add all of: im:history, im:read, mpim:history, mpim:read, groups:history, groups:read, users:read, files:read.
  4. Scroll up and click Install to Workspace → Allow.
  5. Copy the User OAuth Token (starts with xoxp-). That's your token.

2. Download the tool & run it

Pick the download for your computer:

Mac (Apple Silicon) Mac (Intel) Windows Linux

macOS / Linux (Terminal, from the folder with the download):

export SLACK_USER_TOKEN="xoxp-...paste-your-token..."
chmod +x ./slack-exporter-macos-arm64        # your platform's filename
./slack-exporter-macos-arm64 export

If macOS blocks it ("cannot verify developer"), allow it once: xattr -d com.apple.quarantine ./slack-exporter-macos-arm64

Windows (PowerShell, from the folder with the download):

$env:SLACK_USER_TOKEN = "xoxp-...paste-your-token..."
.\slack-exporter-windows.exe export

3. What to expect

4. Where your data lands

A slack-export/ folder appears next to the tool — one subfolder per conversation, each with messages.json (raw), messages.txt / messages.html (readable), and a files/ folder of attachments. Keep that folder, and hand it back per the migration instructions if you'd like it re-imported.

Notes. Don't share your xoxp- token with anyone — it's tied to your account. A private channel you've left won't export (rejoin it first if you need it). Public channels are handled by the admin export — you don't need to do anything for those. Prefer to build it yourself? The full source is here: slack-exporter-source.zip.