SF Mono vs JetBrains Mono vs Monaspace (2026)
·Terminal Candy ·6 min read
Three fonts worth arguing about on a Mac in 2026. One ships with your operating system, one is the community default, one is the interesting new thing that most terminals cannot fully render.
I have used all three for months at a time. Here is what actually separates them.
SF Mono
Apple's monospace, cut to match SF Pro. It has been on every Mac since Sierra, originally hidden inside Terminal.app's resources, now a normal download from Apple.
Where to get it: developer.apple.com/fonts, in the San Francisco family downloads. It arrives as a .dmg with a package installer that drops it in /Library/Fonts. Terminal.app and Xcode already see it without any of that.
Design. Neo-grotesque, tight, quiet. Narrow advance width, so you fit more columns at a given point size than either of the others. The zero is slashed, l has a tail, 1 has a proper base. Ambiguous character pairs are handled properly, which is the actual job of a coding font and something plenty of fonts fail.
Weights. Light through Heavy, with italics. More than you will use in a terminal.
No ligatures. None. Apple did not include them and is not going to.
The license is the problem. Apple's font license is not open. It permits use, it does not permit redistribution or modification-and-redistribution. That means nobody can publish a patched SF Mono Nerd Font. You can patch a copy for yourself on your own machine, which is what people quietly do, but you will not find font-sf-mono-nerd-font in Homebrew and you never will. If you want icons in your prompt with SF Mono, you are running FontForge yourself.
Verdict: the best font here for reading code, and the most annoying one to use with a modern setup.
JetBrains Mono
Free, SIL Open Font License, from JetBrains, and by a distance the most installed coding font of the decade.
Where to get it:
brew install --cask font-jetbrains-mono # plain
brew install --cask font-jetbrains-mono-nerd-font # patched, what you want
No tap needed anymore, the fonts cask tap folded into the main one.
Design. JetBrains raised the x-height deliberately, so lowercase letters occupy more of the available box. The practical effect: at the same point size, JetBrains Mono reads larger than SF Mono. It also runs wider, so you fit fewer columns in the same window.
Do not take that on faith. Set both to 13pt, open the same window, and run:
tput cols
Then switch fonts and run it again. The difference is real and it is the number that decides whether your 80-column diff fits.
Because it reads larger, most people run JetBrains Mono a point smaller than SF Mono, which mostly cancels the width penalty.
Ligatures. Around 140 of them, covering the arrows and comparison operators you would expect. On by default where the terminal supports them. If you hate ligatures, there is a "NL" (no ligatures) build, or just turn the feature off in your terminal rather than installing a second font.
Nerd Font. Officially patched builds, kept current, available everywhere. This is the reason it wins by default. Every prompt theme, every status line, every TUI you install assumes those glyphs exist, and this is the path of least resistance to having them.
Verdict: the correct boring answer. Install it, move on, do useful work.
Monaspace
GitHub's superfamily, released at the end of 2023, and still the most interesting thing to happen to monospace type in a decade.
Where to get it: monaspace.githubnext.com, or:
brew install --cask font-monaspace
brew install --cask font-monaspace-nerd-font
It is five fonts, not one. All metrics-compatible, so you can mix them freely:
- Neon is neo-grotesque, the default, closest to what you expect
- Argon is humanist, warmer, softer terminals
- Xenon is slab serif, and it is wonderful, genuinely different to read
- Radon is handwriting, for comments and nothing else
- Krypton is mechanical, squared off, cold
Metrics-compatible means you can set comments in Radon and code in Neon inside one editor and nothing shifts. In a terminal you get one face, so pick one.
Texture healing is the headline feature. Monospace fonts waste space: i and l swim in a box sized for m. Monaspace uses contextual alternates to quietly redistribute that space between neighboring glyphs while keeping the grid intact. Narrow letters get wider, their wide neighbors give a little back, and the column count never changes.
When it works it is lovely. Here is the caveat nobody puts in the headline: texture healing depends on contextual alternates, and many terminals do not apply them. Ligature support and calt support are related but not identical, and terminal support in 2026 is uneven. You may install Monaspace, see nothing special, and conclude the feature is marketing. It is not, your terminal is just not asking for it. Check whether yours supports contextual alternates before you judge.
Ligatures are opt-in and granular, split across stylistic sets so you can enable arrows without enabling equality operators. That is more control than anyone else offers and more than most people want.
Nerd Font. Patched builds exist under the name Monaspice (Monaspice Ne, Ar, Xe, Rn, Kr). If you are hunting the font menu for "Monaspace Nerd Font" and finding nothing, that spelling is why.
Verdict: the one to use if you care about type. Xenon in a terminal is a real experience. Just verify your terminal honors calt first.
Patching your own Nerd Font
Only necessary for SF Mono, since the other two ship patched builds.
brew install fontforge
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts.git
cd nerd-fonts
fontforge -script font-patcher ~/Downloads/SFMono-Regular.otf --complete --careful
--complete adds every glyph set, which produces a large file. --careful skips glyphs the font already defines instead of overwriting them. Add -s if you want single-width icons that stay on the terminal grid, which in a terminal you usually do. Then double-click the output to install it, and keep the result to yourself.
Verdicts by use case
Claude Code and other agent TUIs: JetBrains Mono Nerd Font. The TUI draws box characters and icons constantly, and you want a patched font that is actively maintained, not one you patched once in March. Setup context in the Claude Code Mac setup guide.
Xcode and Swift: SF Mono. It matches the system, it is dense, Apple's own tooling is tuned for it, and you rarely need Nerd Font glyphs inside Xcode anyway.
Long log reading and prose in the terminal: Monaspace Argon or Xenon. The humanist and slab shapes hold up over hours in a way grotesques do not.
Small screens and split panes: SF Mono, purely on column count. When you are running three panes on a 13-inch laptop, characters per line beats everything else.
Screenshots and demos: Monaspace Xenon. It looks unlike every other terminal screenshot on the internet, which if you are posting your setup is the entire point.
You just want to stop thinking about it: JetBrains Mono Nerd Font at 13pt.
The other half of the look
A font choice changes the text. It does not change the window, and the window is most of what you see.
That is the part Terminal Candy handles. Skins cover the whole thing: frame, texture, title bar, colors, shipped as one click in the built-in gallery rather than as four separate settings you tune by hand. It is a native Mac app, AppKit with SwiftTerm underneath, Apple Silicon only, and it stays out of the way. Set JetBrains Mono Nerd Font, pick a skin, and you are done in two minutes.
Free for 14 days, then $10 once, no subscription and no account. Browse the skins here.
For more on the glyph side of this, see best Nerd Fonts for the terminal in 2026.