Migrating emails from one Gmail account to another can be a daunting task, especially when you need to ensure that no emails are lost, and all tags (labels) are accurately transferred. This guide will walk you through the process, highlighting the common challenges and the tools you can use to make the migration smoother.

Why Backup Your Gmail?

Imagine you’re leaving your job, and a colleague needs an important email from a customer that you no longer have. Or perhaps you need to consolidate multiple email accounts for better management. Backing up and migrating your emails can prevent data loss and ensure continuity in communication.

Challenges in Migrating Gmail Accounts

When I first attempted to migrate my emails using IMAP with Thunderbird, I encountered several issues:

  • Inefficiency: The process was slow and could not detect duplicate emails.
  • Crashes: Thunderbird crashed frequently, and resuming the migration from the last point was not straightforward.
  • Label Issues: Gmail labels are seen as folders in IMAP, but folders are not labels. If an email had multiple Gmail labels, it appeared as multiple emails in different folders in IMAP.

The Solution: Using mnIMAPSync by Marc Nuri

After struggling with Thunderbird, I turned to a tool developed by my colleague, Marc Nuri: mnIMAPSync. This Java-based IMAP Server syncing tool proved to be much more efficient for the task.

Steps to Migrate Gmail Accounts Using mnIMAPSync

  1. Enable IMAP in Both Accounts:
    • In both the source and destination Gmail accounts, go to Settings > See all settings > Forwarding and POP/IMAP and enable IMAP.
  2. Show All Labels in IMAP:
    • Ensure that all labels you want to sync are shown in IMAP. In Settings, navigate to the Labels tab and select “Show in IMAP” for each label, except for “All Mail”.
  3. Enable Sign-In with App Passwords:
  4. Using Docker for mnIMAPSync:
    • If you don’t have the right version of Java to run the tool, use the provided Docker image. Ensure Docker is installed on your machine.
    • Run the following Docker command, replacing the placeholder values with your actual account details:
      docker run marcnuri/mnimapsync \
        --host1 imap.gmail.com --port1 993 --user1 source-email@gmail.com --password1 apppassword1 --ssl1 \
        --host2 imap.gmail.com --port2 993 --user2 destination-email@gmail.com --password2 apppassword2 --ssl2 \
        --threads 9 --delete

Troubleshooting Common Issues

  • Labels with Special Characters:
    • If labels contain special characters (e.g., /), the tool might crash. Rename these labels without special characters and rerun the sync.
  • Syncing Large Labels:
    • Untick “Show in IMAP” for the “All Mail” label to speed up the process. Alternatively, be patient, as syncing large labels can take time.
  • Tool Crashes:
    • If the tool crashes at any point, simply rerun it. The tool is designed to pick up where it left off.


Migrating emails between Gmail accounts can be a complex task, but using the right tools and following a structured approach can significantly simplify the process. mnIMAPSync by Marc Nuri offers a reliable solution for syncing emails, overcoming many of the limitations faced with other methods.

Remember, this is a task you might need to run periodically, especially if you’re dealing with ongoing email migrations. By following this guide, you can ensure a smooth and efficient transition of your emails from one Gmail account to another.