Post

Essential Homebrew Packages: My Favorite Terminal Tools for macOS

A curated collection of essential Homebrew packages for macOS power users. From terminal file managers to video processing tools, these are the packages I install on every new system.

Essential Homebrew Packages: My Favorite Terminal Tools for macOS

Every developer has their go-to list of tools they install on a fresh system. These are mine—the Homebrew packages I reach for immediately after setting up a new Mac. They range from practical utilities to fun terminal toys, but each one earns its place.

Terminal Enhancements

btop

The best system monitor for the terminal. btop provides a gorgeous, interactive view of CPU, memory, disk, and network usage. It’s like Activity Monitor but actually useful.

1
brew install btop

btop features color-coded graphs, process management, and responsive controls. Press m to cycle memory display modes, n for network, or just enjoy watching your system resources in real-time.

lsd

A modern replacement for ls with color-coded file types, icons (with Nerd Font support), and git status integration. Once you use lsd, plain ls feels broken.

1
brew install lsd

Add an alias to your shell config: alias ls='lsd'. You’ll get tree views (lsd --tree), human-readable sizes, and instant visual recognition of file types.

bat

cat with syntax highlighting, line numbers, and git diff integration. bat makes reading code in the terminal actually pleasant.

1
brew install bat

bat automatically detects file types and applies appropriate syntax highlighting. It also integrates with less for paging and shows git modifications in the margin.

tree

Displays directory structures as ASCII trees. Essential for understanding project layouts at a glance.

1
brew install tree

Use tree -L 2 to limit depth, or tree -I node_modules to ignore specific directories.

glow

A markdown renderer for the terminal. Perfect for reading README files without leaving the command line.

1
brew install glow

Run glow README.md or just glow in any directory to browse markdown files interactively.

tmux

The terminal multiplexer. tmux lets you create multiple terminal sessions, split panes, and detach/reattach sessions. Essential for remote work and complex workflows.

1
brew install tmux

Start with tmux, create panes with Ctrl-b % (vertical) or Ctrl-b " (horizontal), and detach with Ctrl-b d. Your sessions persist even if your terminal closes.

highlight

Syntax highlighting for code output. Pairs well with other tools for colorized code display.

1
brew install highlight

File Managers

yazi

A blazing-fast terminal file manager written in Rust. yazi supports image previews, tabs, and extensive customization.

1
brew install yazi

yazi is the modern answer to terminal file management. It handles archives, previews images (in supported terminals), and navigates with vim-style bindings.

ranger

The classic terminal file manager with vi-style keybindings and file previews. If you know vim, you already know ranger.

1
brew install ranger

ranger’s three-column layout shows the parent directory, current directory, and preview of the selected file. Use hjkl to navigate, yy to copy, dd to cut, pp to paste.

Video and Media

ffmpeg

The Swiss Army knife of video and audio processing. ffmpeg can convert, compress, stream, and manipulate virtually any media format.

1
brew install ffmpeg

Some common uses:

  • Convert video: ffmpeg -i input.mov output.mp4
  • Extract audio: ffmpeg -i video.mp4 -vn audio.mp3
  • Compress: ffmpeg -i input.mp4 -crf 28 output.mp4
  • Create GIF: ffmpeg -i video.mp4 -vf "fps=10,scale=320:-1" output.gif

mpv

A minimalist, keyboard-driven media player. mpv is lightweight, scriptable, and plays everything.

1
brew install mpv

mpv respects your terminal workflow. No flashy UI—just mpv video.mp4 and keyboard controls. It handles YouTube URLs directly if you have yt-dlp installed.

yt-dlp

The actively maintained fork of youtube-dl. Downloads videos from YouTube and hundreds of other sites.

1
brew install yt-dlp

Download a video: yt-dlp https://youtube.com/watch?v=... Extract audio only: yt-dlp -x --audio-format mp3 URL Download entire playlists, choose quality, embed subtitles—yt-dlp does it all.

youtube-dl

The original video downloader. Still works but yt-dlp is more actively maintained.

1
brew install youtube-dl

Terminal Recording

asciinema

Records terminal sessions and uploads them for sharing. Perfect for tutorials and documentation.

1
brew install asciinema

Run asciinema rec to start recording, exit or Ctrl-D to stop. Recordings are text-based and can be embedded on websites with full playback controls.

agg

Converts asciinema recordings to GIF files. When you need a GIF instead of an embedded player, agg delivers.

1
brew install agg

Usage: agg recording.cast output.gif

Archive Tools

7-zip

The open-source archive utility supporting 7z, zip, tar, gzip, and many more formats.

1
brew install 7-zip

The command is 7zz on macOS. Extract with 7zz x archive.7z, create with 7zz a archive.7z folder/.

unar

Universal archive extractor. Handles zip, rar, 7z, tar, and obscure formats automatically.

1
brew install unar

Just run unar archive.zip and it figures out the format.

unrar

Dedicated RAR extraction tool for those pesky .rar files.

1
brew install unrar

Docker Tools

lazydocker

A terminal UI for Docker. View containers, images, logs, and stats without remembering docker commands.

1
brew install lazydocker

lazydocker provides an interactive dashboard for your Docker environment. Navigate with arrow keys, view logs with enter, and manage containers visually.

oxker

Another terminal UI for Docker, written in Rust. Lightweight and fast.

1
brew install oxker

Cloud and Network

doctl

DigitalOcean’s official CLI tool. Manage droplets, databases, Kubernetes clusters, and more from the terminal.

1
brew install doctl

After authenticating with doctl auth init, you can create droplets, manage DNS, and access all DigitalOcean services.

speedtest-cli

Run internet speed tests from the terminal. Quick way to check your connection.

1
brew install speedtest-cli

Just run speedtest-cli for download/upload speeds and ping.

speedtest

The official Speedtest CLI from Ookla. More accurate than speedtest-cli with server selection.

1
brew install speedtest

Development

node

Node.js JavaScript runtime. Essential for modern web development.

1
brew install node

Installs both node and npm. Consider using a version manager like nvm for project-specific versions.

uv

An extremely fast Python package installer and resolver, written in Rust. uv is a drop-in replacement for pip that’s 10-100x faster.

1
brew install uv

Use uv pip install package or uv venv to create virtual environments. The speed difference is immediately noticeable on large dependency trees.

rich

Python library for beautiful terminal output. Installs as a CLI tool too.

1
brew install rich

The rich command can pretty-print JSON, markdown, and syntax-highlighted code directly.

tldr

Simplified, community-driven man pages. When you need quick examples instead of comprehensive documentation.

1
brew install tldr

Run tldr tar instead of man tar and get practical examples immediately.

System Information

neofetch

Displays system information with ASCII art of your OS logo. Essential for screenshots and flexing your setup.

1
brew install neofetch

Shows OS, kernel, uptime, packages, shell, resolution, CPU, GPU, and memory at a glance.

ncdu

NCurses Disk Usage analyzer. Interactive tool for finding what’s eating your disk space.

1
brew install ncdu

Run ncdu / to analyze your entire system, or ncdu . for the current directory. Navigate and delete files interactively.

Fonts

font-hack-nerd-font

Hack font patched with Nerd Font icons. Required for proper icon display in lsd, yazi, and many terminal tools.

1
brew install font-hack-nerd-font

After installing, set your terminal’s font to “Hack Nerd Font” to see file type icons and special characters.

Fun Stuff

figlet

Creates large ASCII art text banners. Great for scripts and terminal greetings.

1
brew install figlet

Run figlet "Hello World" for instant ASCII art. Use -f to specify fonts: figlet -f slant "Cool".

lolcat

Adds rainbow colors to text output. Pipe anything through lolcat for instant joy.

1
brew install lolcat

Try figlet "Rainbow" | lolcat or neofetch | lolcat for maximum terminal aesthetics.

sl

Steam Locomotive. Run sl instead of ls (by accident) and watch a train cross your terminal.

1
brew install sl

A classic Unix joke that teaches you to type carefully. The train can’t be stopped with Ctrl-C.

irssi

The legendary terminal IRC client. Old-school chat that still works.

1
brew install irssi

Connect to IRC networks, join channels, and chat—all from your terminal.

mame

Multiple Arcade Machine Emulator. Play classic arcade games.

1
brew install mame

MAME requires ROM files to play games. It’s the most accurate arcade emulator available.


Quick Install

To install all these packages at once:

1
2
3
4
5
brew install 7-zip agg asciinema btop doctl ffmpeg figlet \
  font-hack-nerd-font glow highlight bat irssi lazydocker \
  lolcat lsd mame mpv ncdu neofetch node oxker ranger rich \
  sl speedtest speedtest-cli tldr tmux tree unar unrar uv \
  yazi youtube-dl yt-dlp

My Aliases

Here are some aliases I use with these tools:

1
2
3
4
5
alias ls='lsd'
alias cat='bat'
alias top='btop'
alias tree='lsd --tree'
alias vi='nvim'

Last updated: January 2026

This post is licensed under CC BY 4.0 by the author.