Is it possible to select multiple email messages, and then download the files in their attachments in one archive file?

The native way to click to open the emails one by one, and click to download their attachments individually is tedious.

  • 2
    Have no rep to answer. But this is what worked for me. Make Google Takeout of your selected emails. Download github.com/eneam/mboxviewer. In mbox-viewer open the folder with exported mbox file. Right click on the file in the list and select "Export All Mail Attachments" Jul 1, 2023 at 10:10

8 Answers 8


Select all emails containing the attachments you wish to download.

Click the three dots at the top menu and go down to "Forward as attachment" then forward all emails to yourself.

You can then download all attachments from that one email to a folder on your hard drive. The attachments will be interspersed with the email files, but you can quickly delete the email files by sorting by type of file, highlighting and deleting. All attachments will be left in the folder and you can combine them into a PDF file or easily print them all using the program of your choosing.

find in menu

  • 2
    Aaannnddd... No longer works if dealing with many large files. Instead, Google spends lots of time 'attaching' and then drops some random files after the first 32 megabytes. Jan 8, 2021 at 6:58
  • I wish this answer were higher up in the search results! I had to figure this out myself. Lovely solution here!
    – Shon
    Feb 26, 2022 at 23:58
  • Worked great for me! I was able to save all attachments that were in 46 selected emails without an issue. Huge time saver! Apr 5, 2023 at 15:52
  • This doesn't work if any of the mail bodies are .eml, as that is now deemed to be a security risk. Bers answer below solves this by never actually sending as an email. May 2, 2023 at 8:01

I tried @EthanStrickler's answer, but it did not apply to my use case as all emails are in a single thread (imagine using scan-to-email for 50 pages, resulting in 50 emails all with the same subject). However, that makes it easier, actually. Here's my solution:

  1. Open the thread in Gmail
  2. Click the three dots at the top (the ones that apply to the whole thread)
  3. Select Forward all
  4. Enter yourself as recipient

Now, you do not even have to send this email!

  1. Click the arrow next to Send
  2. Select Schedule Send
  3. Choose any time in the future
  4. Go to https://mail.google.com/mail/u/0/#scheduled
  5. Select the thread
  6. Scroll to the bottom
  7. Click Download all attachments enter image description here

Don't forget to cancel sending this message to save storage space:

  1. Scroll up
  2. Select Cancel send
  3. Scroll down
  4. Select Discard draft
  • ' solution works only for the situation of emails merged in 1 thread with the attachments in each emails which happens when all the emails under same title. If they are with all different titles so exist all separetely in your inbox, you only can see the option of "forward as an attchment" rather than "forward all". "Forward as an attachment" option would only send all your selected entire emails into attachment which ends up with eml extension and you could do open up the attachment 1 by 1 again to get the attachment from it. You are doing same stupid thing twice.
    – Soo Hwang
    Apr 14, 2021 at 23:36
  • @SooHwang your analysis is correct, which is why I wrote "as all emails are in a single thread" in my answer. Thanks.
    – bers
    Apr 8 at 10:56
  • any workaround if the combined attachment size is "too large"?
    – rrrrr
    Apr 18 at 15:07

It does not really answer your question for existing mail, but going forward it is really convenient to setup a "receipe" on IFTTT. You can create a rule (e.g. based on sender) and have attachments saved to Google Drive automatically.


I wrote an app called Unattach, which allows you to easily download Gmail attachments in bulk, and optionally remove them.

  • Only 30 emails per month on free plan. As of now premium version cost $10 a year.
    – Per G
    Jan 12, 2023 at 11:29

I was also questioning same to myself and then I developed https://github.com/munir131/attachment-downloader small utility to solve this problem.

It allow me to download all attachment in bulk. If you have little knowledge about how to run node application then it will be solve your problem.

  • 1
    Works. my 177 mails attachments got downloaded. U must have node etc and a bit tricky to do the credentials stuff in Google. But could be easy enough if u r a developer.
    – Per G
    Jan 12, 2023 at 13:59

You might try "Mail Attachment Downloader" http://gearmage.com/maildownloader.html

It doesn't work on selected mails, but you can filter by subject, sender, etc.

There are options to select certain labels, but I couldn't get it working.

It did the job for getting emailed snapshots from a security camera into one folder.


It may not be as simple as selecting multiple thread then right-click "Download All attachments" but it does work.

I did this using Outlook but you could do this with any POP/IMAP software. You download all emails without deleting them on Gmail. You can make sure the client does not delete when you setup the account in Gmail.

Then, you have to figure out a way to save all attachments from that application. In Outlook, it's quite simple. You can create a small function or Subroutine in VBA to save all attachments. In other software, you will have to figure it out yourself. Search mAttachmentSaver.bas on Google and you should have all that you need. Here's the copy of DataSolveProblems Gist

Sub Download_Attachments()
    Dim ns As NameSpace
    Dim olFolder_Inbox As Folder
    Dim olMail As MailItem
    Dim olAttachment As Attachment
    Dim fso As Object
    Dim Files_Saved_Folder_Path As String
    Files_Saved_Folder_Path = "<Your folder path>"
    Set ns = GetNamespace("MAPI")
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set olFolder_Inbox = ns.GetDefaultFolder(olFolderInbox)
    For Each olMail In olFolder_Inbox.Items
        If TypeName(olMail) = "MailItem" And olMail.Attachments.Count > 0 Then
           fso.CreateFolder (fso.BuildPath(Files_Saved_Folder_Path, Trim(olMail.Subject)))
           For Each olAttachment In olMail.Attachments
                Select Case UCase(fso.GetExtensionName(olAttachment.FileName))
                    Case "XLSX", "XLSM"
                        olAttachment.SaveAsFile fso.BuildPath(Files_Saved_Folder_Path, Trim(olMail.Subject)) & "\" & olAttachment.FileName
                    Case "JPEG", "PNG", "JPG"
                        'olAttachment.SaveAsFile fso.BuildPath(Files_Saved_Folder_Path, Trim(olMail.Subject)) & "\" & olAttachment.FileName
                    Case Else
                End Select

           Next olAttachment
        End If
    Next olMail
    Set olFolder_Inbox = Nothing
    Set fso = Nothing
    Set ns = Nothing
End Sub

If you don't want to use Outlook, you can use Thunderbird


Works a treat, processes like a beast, with options too https://gearmage.com/maildownloader.html

This works but is limited to 61 messages at a time under a free version: https://workspace.google.com/marketplace/app/save_emails_and_attachments/513239564707

  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Sep 1, 2022 at 17:32
  • It is working. But the limit is 5 emails at a time with free version. At this time premium cost $30+ a month.
    – Per G
    Jan 12, 2023 at 11:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.