Plugin Sale! Save 15% on pro plugins with discount code: FALL2020
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 . -x ".*" -x "__MACOSX"
  4. Press Enter to execute and done.

The resulting zip archive will be named and located in the same directory as the original uncompressed files. The 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 . -x ".DS_Store" -x "__MACOSX"
Tip: Use the cd and ls commands to navigate in Terminal.


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 . -x ".DS_Store" -x "__MACOSX"

Now you have a file called 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 "__MACOSX/*"
zip -d "*/.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.


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.

Jeff Starr
About the Author
Jeff Starr = Creative thinker. Passionate about free and open Web.
Blackhole Pro: Trap bad bots in a virtual black hole.

4 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 pm

    You can use ZipCleaner (, 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:

  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
      Jeff Starr 2020/08/04 9:09 am

      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.

Comments are closed for this post. Something to add? Let me know.
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 »
Blackhole Pro: Trap bad bots in a virtual black hole.
Air finally clearing here in WA. Feeling grateful to breathe again. #oxygenmatters
Past week here in WA state has been hellish. So much smoke, like living in a chimney.
Now in September, I’m where I wanted to be in March.
Spent some time updating my article on unsafe characters, once again current with latest IETF specification.
Just realized that “Neo” is an anagram for “One”. As in, “he is the One” (The Matrix).
To get VLC app to load all songs (including subfolders), go to Preferences ▸ Show All ▸ Playlist ▸ Subdirectory behavior ▸ Expand.
Switching from PhotoShop to Affinity Photo is one of the most liberating work-related things I've done in 20 years.
Get news, updates, deals & tips via email.
Email kept private. Easy unsubscribe anytime.