On June 28, 2017, Apple announced that
macOS High Sierra will be the last macOS release to support 32-bit apps without compromise.
How can I find out which apps on my Mac are 32-bit so that I can see if I need to upgrade them?
Ask Different is a question and answer site for power users of Apple hardware and software. It only takes a minute to sign up.
Sign up to join this communityOn June 28, 2017, Apple announced that
macOS High Sierra will be the last macOS release to support 32-bit apps without compromise.
How can I find out which apps on my Mac are 32-bit so that I can see if I need to upgrade them?
One way to identify what 32-bit apps you're still using is to use the System Information option under About This Mac. The exact steps differ depending on the version of macOS you're running, but below are the broad steps you should be able to follow to suit your circumstances:
64-Bit (Intel)
Click on this column heading to sort apps by whether or not they're 64-Bit (i.e. they'll have either a Yes or No listed against each app). Refer to the image below as an example:
NOTE: In the above image I've deliberately not sorted the last column so you can see entries with both a Yes and No listed against them. So, in the example above you'll see that iMovie v10.1.6 is a 64-Bit app while iMovie 9.0.9 is not 64-Bit.
Edit - If the above steps result in an error
I have seen reports that a small number of users are getting a "The plug-in did not respond quickly enough while gathering this information" error message while waiting for the list to populate.
If this happens, quit the System Information app (or System Profiler app in older versions of macOS) and start again, but this time skip steps 1 to 4 and go directly to your Applications/Utilities folder and open the System Information app (or System Profiler app) directly from there. Once it opens, follow Steps 5 to 8 above.
In the Finder hit cmdF to get a search window.
Hit the + button and add a second criterion "Executable Architectures" "Is not" "x86_64"
and you will get a list of all i386 only (i.e. 32-bit) apps.
In Terminal this is done with:
mdfind "(kMDItemExecutableArchitectures == 'i386') && (kMDItemExecutableArchitectures != 'x86_64')"
~/Library/Application Support
, such as Steam games. The other solution does. Do you know if there is any way to modify the search to include that?
Dec 24, 2017 at 1:09
The other answers so far, from what I understand, will list 32-bit macOS apps (and maybe some 32-bit binaries) in the metadata index. If you want to list every 32-bit only executable binary on your system give this one-liner a go:
find / -type f -perm +111 -exec file -p {} \; -exec head -c 1 /dev/zero \; | xargs -0 -n 1 sh -c 'echo "$@" | head -n 1' -- | grep -v x86_64 | grep -E Mach-O.+i386
If you have GNU findutils installed this can probably be considerably simplified. Some of the complexity here is to overcome the limitations of the BSD findutils included in macOS.
This one line Terminal command will collect a list of apps into a text file on your Desktop. It grabs the 6 lines before and 2 lines after every occurrence of "(Intel): No" in the query. It does not however dig into the 32 bit supporting binaries or libraries for already compiled 64 bit apps. That list is much more extensive and I cannot find any resource that addresses a deeper level of concern if it's even an issue.
system_profiler SPApplicationsDataType | grep -B 6 -A 2 "(Intel): No" > ~/Desktop/32BitAppList.txt
When you just need to check a single application:
file myapplication
For instance, my ray tracer, rt
:
==> file rt
rt: Mach-O 64-bit executable x86_64
==>
The file
command basically looks at many kinds of files and tries to identify them. For OSX executables, you'll almost always see one or more of these: i386, x86_64, and ppc which respectively are 32-bit intel/amd architectures, 64-bit intel/amd architectures, and power PC architectures (these are quite old now.) So you really only have to be concerned with i386 (32-bit applications) and x86_64 (64-bit applications.)
For packaged applications, one should right click and Show Package Contents. In most apps, under contents → macOS
one will find an executable. Its path should be used as the argument for file
.
file /Applications/BitTorrent.app/Contents/MacOS/BitTorrent
, I get Mach-O executable i386
. What does that mean ?
i386
etc.. Could you add such a reference please ?
file
command basically looks at many kinds of files and tries to identify them. For OSX executables, you'll almost always see one or more of these: i386
, x86_64
, and ppc
which respectively are 32-bit intel/amd architectures, 64-bit intel/amd architectures, and power PC architectures (the latter are quite old now.) So you really only have to be concerned with i386 (32-bit applications) and x86_64 (64-bit applications.) The only reason they matter is because Apple is dropping support for 32-bit applications.
I serially kept having the "The plug-in did not respond quickly enough while gathering this information." issue, and couldn't resolve it using any of the suggested methods.
Turns out there's a command-line tool called system_profiler
that provides the same information.
So I went straight to the source and wrote a little ruby script to compile a list with more information on where the application is located and the source of install (when available).
You can find the script here.