How we rank Mac apps
Ranking
The default order is the number of brew install and
brew install --cask requests recorded by Homebrew analytics in the last
30 days. Ties are broken alphabetically. Category pages, the all-apps list, the
open-source list and collection pages all use this order unless the page says
otherwise.
What the install count means
Homebrew analytics are opt-in. The count covers installs performed through Homebrew only, so it undercounts apps that most people download directly. It is a relative popularity signal, not a market-size estimate, and it is never presented as a quality score.
Trending
The trend ratio is the 30-day daily install rate divided by the daily rate over the remaining 335 days of the 365-day window. A value above 1 means recent adoption is higher than the app's own historical average. Apps below 1 are not shown as "growing".
Version variants
When two packages share a display name (for example a stable and an
@latest variant), only the variant with the highest 30-day install count
is kept. The other variant is not published in the catalogue.
Categories
Homebrew does not publish a category taxonomy, so categories are inferred from the name and description with weighted keywords. Short keywords are matched as whole words, and a hand-maintained override list corrects known edge cases. A package can appear in more than one category.
Open-source status
Formulae declare an SPDX licence, so a declared licence is treated as open source. Casks carry no licence field. A cask is marked "Yes" only when a source repository is linked from its homepage, or when a GitHub download repository matches the app name and is not a release mirror; that weaker case is shown as "inferred". Otherwise the page says "Not declared".
Comparisons and alternatives
/vs/ pages and /alternatives/ pages come from a
hand-maintained set of same-purpose apps. They are not generated by keyword
similarity. The "Similar apps" block on an app page is a broader, automatic
same-category list and is labelled as such.
Freshness and citation
Every build re-reads the cached Homebrew JSON and writes the build date into the
page, sitemap and structured data; the deployment pipeline refreshes the cache with
fetch_data.py --force first. When citing a page, use its canonical URL.
For a machine-readable index of every app, see
llms-full.txt.
Last updated 2026-10-26.