This page provides an overview of all available methods for installing Nerd Fonts patched font families on a system, and guidance on choosing the right method for a given platform and use case. It covers end-user installation only.
For instructions on patching a font yourself, see the Font Patching System (page 2). For configuring terminal emulators and editors to use an installed font, see page 4.3.
Nerd Fonts can be obtained and installed through ten distinct methods. Each method has different trade-offs in terms of automation, platform support, and which fonts are available.
Method Selection Flowchart
Sources: readme.md39-49
| # | Method | Platform | Automation | Fonts Available |
|---|---|---|---|---|
| 1 | Release archive download | All | Manual | All released fonts |
| 2 | Homebrew Cask | macOS / Linux | Package manager | All (via cask names in fonts.json) |
| 3 | Chocolatey / Scoop | Windows | Package manager | Most |
| 4 | Arch Extra / AUR | Arch Linux | Package manager | Most |
| 5 | PowerShell installer | Windows / macOS / Linux | Script | All |
| 6 | Ad hoc curl download | macOS / Linux | Scriptable | Fonts in repo only |
| 7 | install.sh / install.ps1 | macOS / Linux / Windows | Script | Fonts in local clone |
| 8 | Font fallback (SymbolsOnly) | fontconfig systems | Manual | Symbols Only font |
| 9 | Clone the repository | All | Manual | All (local copy) |
| 10 | Patch your own font | All | Manual | Any font you provide |
Sources: readme.md76-90
Font families are published as .tar.xz archives in the GitHub Releases page. Each archive contains all weight/style variants for one font family.
A specific release of a font can be downloaded directly via curl:
After downloading, font files (.ttf or .otf) must be installed manually through the operating system's font manager. The archive name corresponds to the folderName field in bin/scripts/lib/fonts.json
Sources: readme.md212-222
All fonts are published as Homebrew Casks. The cask name for each font is stored in the caskName field in bin/scripts/lib/fonts.json For example:
The cask name pattern is font-<caskName>-nerd-font. On Linux, add --cask after install.
For more detail, see page 4.2.
Sources: readme.md224-234 bin/scripts/lib/fonts.json1-1057
Chocolatey packages follow the pattern nerd-fonts-<name>:
Scoop uses the scoop-nerd-fonts bucket:
For more detail, see page 4.2.
Sources: readme.md236-251
Most fonts are available in the Arch Extra packages group. Some fonts not in Extra are available in the AUR under the nerd-fonts-* namespace.
For more detail, see page 4.2.
Sources: readme.md253-258
Two community-maintained PowerShell tools are available:
PSModule NerdFonts — installs as a PowerShell resource module:
PowerShell Web Installer — interactive script, supports PowerShell 7+ and Windows PowerShell 5.1:
For more detail, see page 4.1.
Sources: readme.md260-298
curl DownloadIndividual font files can be downloaded directly from the repository. This requires knowing the exact file path within patched-fonts/.
Linux:
macOS:
Note: This method only works for fonts that are still stored inside the repository. Newer fonts are distributed only via releases.
Sources: readme.md300-319
install.sh / install.ps1The repository includes shell and PowerShell scripts for automating font installation from a local clone.
install.sh (macOS / Linux) and install.ps1 (Windows) scan the local patched-fonts/ directory and copy or symlink font files to the appropriate system font directory.
install.sh internals:
Target directories resolved by install.sh:
| Platform | User path | System path |
|---|---|---|
| Linux | $HOME/.local/share/fonts/NerdFonts | /usr/local/share/fonts/NerdFonts |
| macOS | $HOME/Library/Fonts/NerdFonts | /Library/Fonts/NerdFonts |
The XDG_DATA_HOME environment variable overrides the user path on Linux.
Key options for install.sh:
| Flag | Effect |
|---|---|
-s / --mono | Install NerdFontMono (single-width glyph) variants |
-p / --use-proportional-glyphs | Install NerdFontPropo variants |
-l / --link | Symlink files instead of copying |
-C / --clean | Remove and recreate the target directory |
--remove | Remove all previously installed Nerd Fonts |
-S / --install-to-system-path | Install for all users (requires root) |
-O / --otf | Prefer OTF files (default) |
-T / --ttf | Prefer TTF files |
A single font or a list of fonts can be specified as positional arguments; without arguments, all fonts are installed.
Note:
install.shrequires a local clone of the repository and will not retrieve fonts that have been removed from the repository tree.
For more detail on OS-specific behavior, see page 4.1.
Sources: install.sh1-266
Most operating systems and font renderers support font fallback: when a glyph is missing from the active font, a secondary font is searched. The NerdFontsSymbolsOnly font family (stored under patched-fonts/NerdFontsSymbolsOnly/) contains only the Nerd Fonts icon glyphs and can serve as a fallback for any text font.
This avoids patching every font individually but produces less consistent glyph scaling.
On fontconfig-based systems (Linux), the file 10-nerd-font-symbols.conf can be installed to configure fallback behavior automatically. For more detail, see page 4.1 and page 4.3.
Sources: readme.md363-374 bin/scripts/lib/fonts.json936-949
A full or partial clone provides direct access to the patched-fonts/ directory. Due to the repository's binary content, a shallow or sparse clone is recommended.
Shallow clone (all directories, recent history only):
Blobless clone (all commits, binaries fetched on demand):
Sparse checkout (single font directory):
Warning: File paths within the repository are not stable across major releases. Always reference a release tag rather than
masterwhen constructing raw file URLs. See page 7 for details on unstable paths.
Sources: readme.md376-401
If a desired font is not among the 67 included families, the font-patcher script can add Nerd Fonts glyphs to any font file. This requires FontForge and Python 3.
For full instructions, see the Font Patching System (page 2) and Using the Font Patcher (page 2.1).
Sources: readme.md403-413
Each patched font family is distributed in three glyph-width variants. The variant is encoded in the file name:
| Variant | File name contains | Glyph width | install.sh flag |
|---|---|---|---|
| Default (Nerd Font) | NerdFont | Double-width | (none) |
| Mono | NerdFontMono | Single-width | -s / --mono |
| Propo | NerdFontPropo | Proportional | -p / --use-proportional-glyphs |
The collect_files function in install.sh160-169 uses find_filter patterns built from these name segments to select which variant to install.
Sources: install.sh150-158 readme.md92-99
Sources: readme.md206-410 install.sh126-148 bin/scripts/lib/fonts.json1-1057
Refresh this wiki
This wiki was recently refreshed. Please wait 3 days to refresh again.