28

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?

  • 1
    Are they going to be making their own 64-bit video card? – user209279 Jul 8 '17 at 5:40
  • 2
    What, exactly, do you mean by "64-bit video card", @Physics-Compute? I assume you're referring to the memory bandwidth? That has nothing to do with the bitness of the processor or supported by the operating system. You don't need a 64-bit video card on a 64-bit OS; in fact, 64-bit video cards work fine on 32-bit OSes (which isn't, of course, true of apps). – Cody Gray Jul 8 '17 at 7:17
  • 1
    @CodyGray I would assume it is referring to the number of address bits it supports for DMA operations. It is a problem if you have more memory than can be addressed with 32 bits and you have allocated a buffer for DMA which you need to tell a piece of 32-bit hardware about. – kasperd Jul 8 '17 at 11:37
  • 1
    Sorry, I more precisely meant 64-bit drivers. Aren't the graphics drivers overwhelmingly 32-bit, which necessitate all processes that use them to be 32 bit mode as well? A process that is typically 64bit today needs to use IPC with a 32bit process to talk to the 32bit video card drivers. Not allowing 32bit drivers or processes seems like an issue if video card makers haven't made 64bit drivers, no? – user209279 Jul 8 '17 at 13:53
  • 1
    Video drivers cannot possibly be 32-bit, as a 64-bit kernel cannot load/use 32-bit drivers. Video card manufacturers have been producing 64-bit drivers for some time, and they have to do this for other operating systems, too, so it's not exactly a crazy proposition. And the driver would handle the DMA stuff that kasperd is talking about, so that's a non-issue as well. – Cody Gray Jul 8 '17 at 18:15
27

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:

  1. Click on the Apple Menu
  2. Select About This Mac
  3. In the About This Mac window that pops up, click on the System Report... button at bottom left (if you're using an older OS, you may need to click on the More Info... button near the centre bottom).
  4. This opens up the System Information window (or System Profiler window in older versions of the OS).
  5. In the Sidebar on the left you will see a number of headings and subheadings.
  6. Under the Software heading (it's the 3rd one down) you'll see a subheading labelled Applications. Click on this.
  7. In the main part of the window on the right-hand side you will see a list of apps appear. Be patient as this may take a little while to populate.
  8. Once the list appears, you'll see column headings at the top.
  9. The last column is labelled 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:

enter image description here

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.

  • 1
    It keeps timing out for me with the message "The plug-in did not respond quickly enough while gathering this information." – JBis Apr 19 '18 at 11:38
  • Thanks @Josh for reminding me of this answer. I did become aware late last year that this was a possible issue but forgot I had answered this question! I've just edited my answer with a possible workaround that works for most users. Let me know if you still have problems. – Monomeeth Apr 19 '18 at 21:31
  • Same issue when opening directly from /Applications/Utilities. – JBis May 30 '18 at 15:36
27

In the Finder hit cmdF to get a search window.

  • Choose Search: This Mac
  • Hit the first search criterion and choose "Other..." and here "Executable Architectures" "Is" "i386"
  • Hit the + button and add a second criterion "Executable Architectures" "Is not" "x86_64"

    enter image description here

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')"
  • Strangely for me, this method picks up a few PDF files from years ago, like "Welcome to Leopard". Otherwise seems to be working fine. – Thunderforge Jul 8 '17 at 5:13
  • 3
    @Thunderforge "Welcome to Leopard" is not a .pdf but an app IIRC, when you open it it chooses your language pdf and opens it in Preview. – Manuel Jul 8 '17 at 12:35
  • @Manuel Interesting! I was thrown off by the fact it has a PDF icon. Didn't even occur to me that it was actually an app that picked a PDF for you. – Thunderforge Jul 8 '17 at 13:31
  • I just noticed that this method doesn't find apps in ~/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? – Thunderforge Dec 24 '17 at 1:09
  • 1
    @Thunderforge the terminal version does find Steam games. – Andrea Lazzarotto Feb 4 '18 at 23:24
3

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.

3

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
2

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.

  • 1
    For file /Applications/BitTorrent.app/Contents/MacOS/BitTorrent, I get Mach-O executable i386. What does that mean ? – ankii Nov 15 '19 at 0:06
  • It means that the application is a 32-bit executable; and the implication is that it won't be able to run under Apple's most recent 64-bit-only operating systems. – fyngyrz Nov 16 '19 at 12:33
  • I couldn't find the table where I could find meanings of things like i386 etc.. Could you add such a reference please ? – ankii Nov 16 '19 at 17:10
  • 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 (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. – fyngyrz Nov 16 '19 at 19:34
1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .