Welcome to the new design! Please report any bugs or issues, thanks :)
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.

Jeff Starr
About the Author
Jeff Starr = Web Developer. Book Author. Secretly Important.
USP Pro: Unlimited front-end forms for user-submitted posts and more.

Leave a reply

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 »
WP Themes In Depth: Build and sell awesome WordPress themes.
Thoughts
Playing the long game.
They have weaponized the idiots.
Good software never steals focus from the user. Even during startup.
After 10 years running my own business, I still manage schedules and tasks using old school post-it notes, sometimes simple sometimes very elaborate.
You know those sites, where you're trying to just grab a quick bit of information but the page is shifting all over the place as it loads up 3 million advertisements.
Selling two of my top WordPress domains, wp-zen.com & zen-wp.com $300 for both. Aged 9 years. Drop a line if interested.
Never force your users to type out a password (or any long string of characters) by blocking the paste function. Typing long strings leads to MORE errors than simple copy/paste.