Spring Sale! Save 30% on all books w/ code: PLANET24
Web Dev + WordPress + Security

Remove __MACOSX and .DS_Store from ZIP Files on Mac

[ The Cleaner ] Zipping files on Apple/Mac is a chore because of all the hidden files and folders added by macOS. Like .DS_Store and __MACOSX are two of the most common files and folders that are added to zip files when compressed on macOS.

The folder named __MACOSX especially is problematic because it contains duplicates of every file in the zip archive. So for example, if you use Finder to compress 20 files, the resulting zip file will contain the original 20 files, plus an additional 20 files all hidden under the /__MACOSX/ folder.

It’s a real pain and can be confusing to deal with because when you unzip the files on a Mac, the hidden files and folders are not included in the unzipped files. So you won’t be able to view them, even after you enable display of hidden files. The only way to view all the hidden files/folders is to open the zip file on a non-Mac machine, like PC/Windows or Linux.

Hidden Files: To view hidden files on PC/Win, visit View Options in File Explorer. To view hidden files on Mac, the easiest way is to use a free app like Funter.

Hidden Files

Here are some screenshots showing the hidden files and folders that are included for any folder compressed (zipped) on macOS. First screenshot shows the hidden __MACOSX directory, which is visible on PC when you open the zip file.

[ Hidden files in zip folder 1/2 (viewed on PC) ]On PC/Win the hidden files (like __MACOSX) are visible

The next screenshot shows the set of duplicate files and folders that are included in zip files compressed on macOS. Notice the file names, each begin with a dot ., which makes the files hidden by default on most systems.

[ Hidden files in zip folder 2/2 (viewed on PC) ]Mac includes hidden duplicates of every compressed file (viewed on PC)

Now compare those previous screenshots (taken on PC) with the following screenshot (taken on Mac). Even with “show hidden files” enabled, the hidden __MACOSX folder and all the hidden files are not included (i.e., they do not exist hidden or otherwise) in the unzipped archive.

[ Mac *excludes* all hidden macOS files when opening zip archives ]Mac excludes all hidden macOS files when opening zip archives (view hidden files enabled)

So again, all the hidden files/folders added by Mac are included in the unzipped files ONLY when the files are unzipped on non-Mac machines. Thus the confusion: Why on earth are the hidden files added in the first place? They are completely excluded when unzipping on Mac, and never needed for any reason on any other machine. In fact quite the opposite: the hidden files serve NO purpose other than to waste bandwidth, time, energy, resources, etc.

Why does macOS include hidden files in zip archives? It makes absolutely zero sense.

Real Problems

This is a real problem because many people use Mac to zip files to share on the Web. Problem is that not everyone uses a Mac. So anyone downloading your zip files on their Windows, Linux, or other non-Mac is going to see all those hidden files and folders. Which are utterly useless to non-Mac devices and users.

Further, by adding a duplicate set of hidden files to the zip archive, Mac essentially is doubling the size of the download zip file, which of course wastes bandwidth, disk space, and everything else. May not be a huge deal for smaller zip files, but we’re talking about potentially millions or billions of zip files downloaded every day, needlessly bloated with useless data.

Web Devs: The hidden __MACOSX directory and its duplicate set of files can cause problems with things like installing WordPress plugins and other applications. So if you are WordPress/Web developer, use a version-control system to manage and package/zip your files. That way you keep all the hidden junk completely out of the picture. Alternately if you aren’t using version control, you can remove/exclude unwanted hidden files using one of the techniques below.

Real Solutions

Fortunately, all the hidden garbage is not needed on any machine — including Mac — so it’s all 100% totally safe to delete. So regardless of which machine/OS you are using, you can safely delete __MACOSX and .DS_Store from any zip archive. The files literally are useless. Read on to learn some different techniques for removing the __MACOSX and .DS_Store from ZIP Files on macOS.

PC/Win users: The techniques below explain how to remove/delete unwanted hidden files on Mac. If you are using PC/Win, you can simply open the archive and delete any unwanted hidden files.

Use software to exclude hidden files from NEW zip archives

For new files, you can use an app such as YemuZip or any free alternative to zip compress new files without any hidden junk.

I don’t know of any apps that can retroactively remove hidden files/folders from existing zip files. If you know of any, drop a comment or send via contact form.

[ YemuZip App ]Use an app like YemuZip or free alternative to compress/zip without any hidden files

Use command line to exclude hidden files from NEW zip archives

On Mac you can use Terminal to easily remove all of the hidden files/folders from existing zip files. Here are some techniques that I use for my own projects.

When creating new ZIP archives, you can use the zip command to compress/zip files without any hidden files like .DS_Store and __MACOSX. Here are the steps:

  1. Open the Terminal app
  2. Navigate to the folder that contains the files you want to zip
  3. Type or paste the following command into Terminal*:
    zip -r data.zip . -x ".*" -x "__MACOSX"
  4. Press Enter to execute and done.

The resulting zip archive will be named data.zip and located in the same directory as the original uncompressed files. The data.zip archive will not include any __MACOSX or “dot-hidden” files (i.e., file names that begin with a literal dot).

*Important: The above command will remove all dot-hidden files, including files like .htaccess and other common/useful files. So if you want to keep some hidden files and only remove the ones added by macOS, use this command instead:

zip -r data.zip . -x ".DS_Store" -x "__MACOSX"
Tip: Use the cd and ls commands to navigate in Terminal.

Example

To give this a real-world example. Let’s say you have a folder on your desktop called Folder that includes a bunch of files that you want to zip/compress.

First, open terminal and write following commands:

cd ~/Desktop/Folder
zip -r data.zip . -x ".DS_Store" -x "__MACOSX"

Now you have a file called data.zip on your desktop that does not include any __MACOSX or .DS_Store files. I.e., a nice clean zip file with no hidden garbage.

Use command line to remove hidden files from EXISTING zip archives

The above techniques show how to exclude hidden files when creating new zip archives. But what if you want to remove hidden files from an existing zip archive? Easy. In Terminal, navigate to the directory that contains your zip file and enter the following two commands:

zip -d data.zip "__MACOSX/*"
zip -d data.zip "*/.DS_Store"

And/or if you have multiple zip archives in some folder, and want to remove all hidden macOS files from all of them in bulk. Use Terminal to navigate to the folder and enter the following commands:

for f in *.zip; do zip -d "$f" "__MACOSX/*"; done
for f in *.zip; do zip -d "$f" "*/.DS_Store"; done

I use this technique for zip files I serve here at Perishable Press and elsewhere.

Tip

For a “quieter” Terminal experience, you can add the q (quiet) or qq (quieter) parameter to the previous bulk-delete command:

for f in *.zip; do zip -qd "$f" "__MACOSX/*"; done
for f in *.zip; do zip -qd "$f" "*/.DS_Store"; done

Cheers people.

Related

About the Author
Jeff Starr = Designer. Developer. Producer. Writer. Editor. Etc.
The Tao of WordPress: Master the art of WordPress.

13 responses to “Remove __MACOSX and .DS_Store from ZIP Files on Mac”

  1. When I read the title I thought I was going to see an .htaccess example! Maybe you could create another post for this problem. Let’s say these file types are on a website server. How to 1. block external access to them 2. Delete them. The reason I ask this is because I have seen these files in many downloaded github packages! So when you install a vendor package you sometimes see these files and uploaded them to your website. Would be nice to remove and block them.

  2. Michael Kaiser 2020/06/11 1:18 pmReply

    You can use ZipCleaner (https://roger-jolly.nl/software/), it’s a Universal Binary (!) made in 2007. But it still works at least on 32-Bit compatible OS X Systems.
    Or use the Automator: https://stuetzpunkt.wordpress.com/2017/01/02/how-to-create-a-clean-zip-file-in-macos/

  3. The first time i installed a new theme from my cpanel, i saw the MACOSX file and i almost deleted but i was scared the theme might misbeahave. Also is it true that someone can hack a website from this Mds file?

    • Jeff Starr 2020/08/04 9:09 am Reply

      Thanks for the comment Tom, but no it’s not true that you (or anyone) can hack (access) a website using the __MACOSX file. It’s completely harmless, and perfectly safe to delete from any theme or plugin you might find.

  4. Matt Robinson 2020/11/01 9:11 amReply

    There is an Automated action that can be used in a Quick Step and this is the approach I tend to use:

    https://junecloud.com/journal/mac/create-clean-archive-automator-action.html

  5. This saved my a**. Great work, and thanks so much for sharing.

  6. Dimitrios Kalampokis 2021/08/11 8:37 amReply

    Hi there. I have a _MACOSX folder on my PC desktop, which is empty but I can’t totally remove. I have for a few years and I desided to search about it. Any advice for me? THK

  7. Julia Marshall 2021/11/12 12:48 pmReply

    Working on a windows 10 computer. In Windows Explorer evry time I delete a _MACOSX file the Windows Explorer shuts down completely. When I reopen it, the MACOSX file is still there. I there a work around?

  8. Thanks for this. Re: “doubling the size” it’s doubling the number of files, but not necessarily doubling the size of the ZIP file.

Leave a Reply to Jeff Starr Cancel

Name and email required. Email kept private. Basic markup allowed. Please wrap any small/single-line code snippets with <code> tags. Wrap any long/multi-line snippets with <pre><code> tags. For more info, check out the Comment Policy and Privacy Policy.

Subscribe to comments on this post

Welcome
Perishable Press is operated by Jeff Starr, a professional web developer and book author with two decades of experience. Here you will find posts about web development, WordPress, security, and more »
.htaccess made easy: Improve site performance and security.
Thoughts
I live right next door to the absolute loudest car in town. And the owner loves to drive it.
8G Firewall now out of beta testing, ready for use on production sites.
It's all about that ad revenue baby.
Note to self: encrypting 500 GB of data on my iMac takes around 8 hours.
Getting back into things after a bit of a break. Currently 7° F outside. Chillz.
2024 is going to make 2020 look like a vacation. Prepare accordingly.
First snow of the year :)
Newsletter
Get news, updates, deals & tips via email.
Email kept private. Easy unsubscribe anytime.