How to Diff Two Mastodon Export Archives Across Time
🔍 WiseChecker

How to Diff Two Mastodon Export Archives Across Time

You may have downloaded your Mastodon account archive twice — once today and once a month ago — and want to see what changed. Mastodon archives contain separate JSON files for follows, mutes, blocks, domain blocks, bookmarks, and lists. Comparing two archives manually is tedious and error-prone. This article explains how to use a simple command-line diff tool and a spreadsheet method to spot exactly which accounts you followed, muted, or blocked between two export dates.

Key Takeaways: Comparing Mastodon Export Archives with Diff and Spreadsheets

  • diff command on Unix or WSL: The fastest way to compare two archive folders and see added or removed accounts in each JSON file.
  • Import JSON into Excel or Google Sheets: Use Power Query or IMPORTDATA to load the outbox.json file and filter by type and published date to find new follows or blocks.
  • Sort and compare unique identifiers: Extract the actor or object field from each activity to get the exact account URI that changed.

ADVERTISEMENT

Why Compare Two Mastodon Export Archives

Mastodon exports are JSON snapshots of your account activity. Each archive includes an outbox.json file that lists every action you performed — follows, unfollows, boosts, favorites, mutes, blocks, and list changes — in chronological order. The actor.json file contains your profile information. Other files such as lists.json and bookmarks.json store static snapshots of those collections.

When you export your archive today and again in two weeks, the new archive will contain all the old data plus any new activity. Manually scrolling through thousands of lines of JSON is impractical. A diff reveals exactly what changed between the two snapshots without reading every line.

Common reasons to diff archives include:

  • Verifying that a follower migration moved all followers correctly.
  • Checking that you successfully muted or blocked a specific account.
  • Auditing your own activity for data-privacy purposes.
  • Confirming that list memberships were updated after a cleanup.

Prerequisites for Comparing Mastodon Archives

Before starting, you need two Mastodon export archives from different dates. To create an archive:

  1. Log into your Mastodon instance
    Open your Mastodon web interface and go to Preferences > Import and export > Export.
  2. Download the archive
    Click the Download archive button. Mastodon generates a ZIP file containing multiple JSON files and your media uploads.
  3. Repeat after a time interval
    Wait at least one day or perform some actions (follow, unfollow, mute, block). Download a second archive.

You also need a tool to extract ZIP files. On Windows, right-click and choose Extract All. On macOS or Linux, double-click or use the unzip command. For the command-line method, you need a terminal with diff installed — this is built into macOS and Linux, and available on Windows via WSL or Git Bash.

ADVERTISEMENT

Method 1: Command-Line Diff of Archive Folders

This method compares the entire folder structure of two archives and shows which files differ and what lines changed inside each JSON file.

  1. Extract both archives into separate folders
    Name the folders archive_old and archive_new so you can identify them easily.
  2. Open a terminal in the parent directory
    On Windows with WSL, type wsl in the folder path. On macOS or Linux, open Terminal and navigate to the folder containing the two archive folders.
  3. Run the recursive diff command
    Type: diff -r archive_old archive_new
    The -r flag compares subdirectories recursively. The output shows lines that differ between matching files.
  4. Interpret the output
    Lines prefixed with > exist only in the newer archive. Lines prefixed with < exist only in the older archive. For JSON files, the diff shows the exact line numbers and content that changed.
  5. Filter for specific activity types
    If you only want to see new follows, pipe the diff output through grep: diff -r archive_old archive_new | grep "Follow". Replace Follow with Block, Mute, or Undo to focus on specific actions.

The command-line method is fast and works on any file type. However, the output can be long if you have many changes. You can redirect the output to a file with diff -r archive_old archive_new > changes.txt and review it at your own pace.

Method 2: Spreadsheet Comparison of Outbox.json

If you prefer a visual approach, import the outbox.json file from each archive into a spreadsheet and use filters to find additions or deletions.

  1. Extract the outbox.json file
    From each archive ZIP, copy the outbox.json file to a working folder. Rename one to outbox_old.json and the other to outbox_new.json.
  2. Import into Excel using Power Query
    In Excel, go to Data > Get Data > From File > From JSON. Select outbox_old.json. In the Power Query editor, expand the orderedItems list. Load the data to a worksheet. Repeat for outbox_new.json into a separate sheet.
  3. Import into Google Sheets using IMPORTDATA
    In Google Sheets, use the formula =IMPORTDATA("file:///path/to/outbox_old.json"). This works only if the file is hosted on a web server. For local files, upload the JSON to Google Drive and use =IMPORTDATA with the Drive share link.
  4. Add a helper column to identify the source
    In both sheets, add a column named Archive and fill it with Old or New.
  5. Combine both tables and find differences
    Copy all rows from the New sheet and paste below the Old sheet. Select all data and go to Data > Remove Duplicates. Check the column that contains the unique activity identifier — typically the id or object field. Rows that remain after removing duplicates are the activities that exist in only one archive.

This method gives you a clean table of what changed. You can sort by type to see only Follows or Blocks. You can also filter by published date to see activities within a specific time range.

Common Issues When Comparing Mastodon Archives

Diff Shows Changes in Media Files That Are Not Relevant

Mastodon archives include media files such as profile pictures and header images. If you changed your avatar between exports, the diff will flag that file as different. To ignore media files, run the diff with the -x exclude flag: diff -r archive_old archive_new -x "jpg" -x "png" -x "gif". This skips image files and focuses on JSON data.

Outbox.json Contains Duplicate Activities

Mastodon sometimes records the same activity multiple times, especially after a follower migration or a re-follow. When using the spreadsheet method, remove duplicates based on the id field before comparing. In Excel, use Data > Remove Duplicates and select only the id column.

JSON Structure Differs Between Mastodon Versions

Older Mastodon versions (3.x) export a flat orderedItems array. Newer versions (4.x) may include nested objects. If the diff shows entire blocks of added or removed lines, the JSON structure itself changed. In that case, focus on specific fields like type and object rather than comparing the entire file.

Account URIs Do Not Match Due to Instance Migration

If you moved your account to a different instance between exports, the actor field in old activities points to your old instance while new activities point to your new instance. A direct diff will flag every activity as changed. To compare meaningfully, extract only the object field (the target account URI) and compare those separately.

Item Command-Line Diff Spreadsheet Method
Setup time Under 1 minute after extraction 5-10 minutes for JSON import
Requires software Terminal with diff (built into macOS/Linux, WSL on Windows) Excel or Google Sheets
Handles large archives Yes, processes thousands of lines quickly May slow down with over 10,000 rows
Filters by activity type Via grep or awk Via spreadsheet filters
Visual output Text-based, colorized with colordiff Tabular, easy to sort and filter
Handles media files Yes, but can be excluded Not applicable — focuses on JSON only

You now have two reliable methods to compare Mastodon export archives from different dates. Use the command-line diff for a quick scan of all changes, or use the spreadsheet method for a detailed audit of follows, mutes, and blocks. After finding differences, you can verify your account cleanup or migration results. As an advanced tip, automate the diff by writing a shell script that runs diff -r every week and emails you the output — this gives you a continuous change log of your Mastodon activity.

ADVERTISEMENT