Is it possible to and how do I get a list of all the packages installed on my Mac using Homebrew? I am not interested in packages installed outside of Homebrew.


brew list and brew list --cask

Running brew list will show a list of all your installed Homebrew packages.

In addition, brew list --cask will provide the items installed using Homebrew Cask.

brew list

  • 3
    If you had this list in a txt file. How would you go about installing all of them? brew install < list.txt doesn't seem to work.
    – Jonathan
    Nov 4 '14 at 14:19
  • 48
    @Jonathan xargs brew install < list.txt Feel free to ask a separate question for more details or clarification.
    – grg
    Nov 4 '14 at 19:33
  • 3
    @grgarside - love ur terminal prompt. would you be willing to share your config files for getting my prompt to look like that? Dec 9 '14 at 20:21
  • 2
    @Kaushik I've finally written a blog post about my terminal/shell setup—feel free to ask any questions there.
    – grg
    Dec 14 '14 at 12:56
  • also added the --versions flag at the end to get the list with the versions installed
    – H A
    Mar 3 at 0:22

brew leaves shows you all top-level packages. That is packages that are not dependencies. This should be the most interesting if you are using the list to re-install packages.

In order to include the descriptions, use

brew leaves | xargs -n1 brew desc
  • 3
    Only list leaves that were manually installed: brew leaves --installed-on-request | xargs -n1 brew desc Oct 26 at 3:08

brew bundle may also be interesting if you are asking because you want to manage your brew installation. This includes casks, which brew list does not. It is aimed at having reproducible Homebrew setups.

# creates Brewfile in the current directory from currently-installed packages
brew bundle dump
# edit Brewfile
# install everything from the Brewfile
brew bundle

You can use the --global flag to operate on your ~/.Brewfile and -f/--force to force overwriting of your existing file (for installation, this will force uninstallation of not-listed packages).

  • 7
    A recent dump of mine suggests that bundle now excludes dependencies. There are some other changes like quote style and ordering that are making it harder to understand the diff, but overall it looks like at least some libraries are missing from Brewfile but installed. May 16 '17 at 5:04
  • • My desired effect is to have the same brew based software at my disposal on machine B like I now have at machine A. But to freshly configure the individual apps there to have a save fresh start and get rid of any cruft I may accumulated over the years on machine A. • Is "brew bundle dump" on machine A, moving ~/Brewfile to machine B and there running "brew bundle" the right command sequence for this purpose? • After installation on the new machine B will brew there install the correct architecture (i.e. Apple Silicon instead of Intel x64) and install all necessary dependencies?
    – porg
    Oct 24 at 10:46
  • You can check brew bundle --help for specifics and examine the Brewfile. I believe this answer is more complete and idiomatic way to do it than the accepted answer - for example, it includes taps and casks. It is architecture-independent and will install dependencies. If you want machine B to also uninstall packages which are not in the Brewfile, you'll need to provide --cleanup or do a separate brew bundle cleanup. Oct 24 at 11:05

Executing brew list command shows a simple, alphabetically sorted list of all the installed packages.

However, various required packages (dependencies) get automatically installed when installing a package using Homebrew. It is possible to view the list of all the installed packages as a nicely formatted dependency tree. To view it, execute the following command:

brew deps --tree --installed

An example output is as shown below:



├── gdbm
├── openssl
├── readline
├── sqlite
│   └── readline
└── xz


└── readline


The independently listed packages (e.g. gdbm and openssl in the example output above) have no dependencies. The packages depicted as part of a tree structure have their dependency listed at immediate lower level (e.g. package sqlite requires that the package readline to be installed). The packages listed at leaf nodes in the tree structures have no dependencies.

Dependencies visualised in a tree structure can help in easily getting rid of the unnecessary packages.


You may use brew list | grep 'package-name' or if are looking for specific package.
brew list 'package-name' also works and provides additional information.


To see brew packages :

brew list

To see cask packages :

brew list --cask

To see upgradable brew packages :

brew outdated

To see upgradable cask packages

brew outdated --cask

Others have mentioned brew leaves, which lists things that aren't dependencies; and brew deps --tree --installed which lists the dependency tree for all installed packages.

I find the most useful output of any answers yet is the combination of these.

brew deps --tree $(brew leaves)

This will list the complete tree of your brew install.


You can use this snippet to list all installed packages and sort them by their size.

brew list --formula | \
    xargs -n1 -P8 -I {} \
    sh -c "
        brew info {} | \
        egrep '[0-9]* files, ' | \
        sed 's/^.*[0-9]* files, \(.*\)).*$/{} \1/'
    " | \
    sort -h -r -k2 - | \
    column -t
  • Cool but it seems to hammer my CPU and disk. I wonder when it will finish.
    – sorin
    Oct 28 at 10:13
  • Yes, getting the size requires an info query for each package. It takes around a minute for 120 packages. Oct 29 at 11:48

You must log in to answer this question.

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