Fastfetch: the fast, highly customizable system information tool.
Fastfetch is an open-source command-line tool, written mainly in C, that shows your operating system, hardware and desktop details next to an ASCII or image logo. It is the actively maintained replacement for Neofetch, fast enough to run every time a terminal opens, and configurable down to every line. This guide covers installing it, configuring it and fixing common problems.
Fastfetch is a free, open-source command-line tool that displays information about your system next to a logo. It is written mainly in C, released under the MIT license and maintained by Carter Li and contributors in the fastfetch-cli/fastfetch repository; the project was started by Linus Dierheimer. It works on Linux, macOS, Windows 8.1 and later, Android, FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Haiku and SunOS (illumos, Solaris).
What is Fastfetch used for?
Most people run it as a terminal greeting, use it to get a quick overview of a machine (OS version, CPU, GPU, memory, disks, display, battery, packages), paste its output into bug reports, feed its JSON output to scripts, or style it for desktop screenshots. By default it shows a compact set of modules; 76 modules are available if you want more.
Where Neofetch was a Bash script that called many external programs, Fastfetch reads most values directly from the operating system (for example /proc and /sys on Linux, IOKit on macOS and Win32 APIs on Windows). Optional libraries such as Vulkan or D-Bus are loaded only when a module needs them, and a missing library simply leaves that module empty instead of stopping the program.
MaintainerCarter Li & contributors (fastfetch-cli)
What's new in Fastfetch 2.69.0
Released on 25 September 2026. The changes most users will notice:
Image logos without ImageMagick on Windows, macOS and Android, using each system's own image libraries. Windows Terminal shows sixel logos out of the box.
Animated logos: GIF and APNG images play in terminals that support the Kitty graphics protocol (set logo.animationFrame to 0).
Better Bluetooth detection: Bluetooth Low Energy devices on Windows and macOS, device type and signal quality.
New logo.position: "auto" (--logo-position auto) puts wide logos above the output in narrow terminals.
Renamed option:--logo-recache / logo.recache became --logo-cache / logo.cache (true, false or regen).
Lua format scripting is now stable and can load shared helpers via general.preload.lua; QuickJS scripting is deprecated.
Faster I/O modules: the default waitTime for DiskIO, NetIO and Top dropped from 500 ms to 250 ms.
Upgrading from 2.66 or older? Version 2.67.0 removed --gen-config-force and --gen-config-full (use the interactive --gen-config), removed general.preRun, and changed Battery's {status} to an array. Full details: official changelog.
Key features
Why Developers & Sysadmins Choose Fastfetch
Native code instead of shell pipelines, 76 detection modules, real image logos and a config format your editor understands.
Fast Enough for Every Shell Start
Fastfetch is a compiled C program that reads system information directly from the OS instead of running a script that starts dozens of helper programs. Most modules finish in well under a millisecond each; run fastfetch --stat to see exactly how long every module takes on your machine and drop the slow ones.
76 Built-in Modules
From CPU, GPU, memory, disks and displays to battery, Wi-Fi, Bluetooth, sound devices, TPM, packages, media players and weather. Run fastfetch -c all to try them all.
One Tool on Every OS
Native builds for Linux, macOS, Windows 8.1+, Android (Termux), FreeBSD, OpenBSD, NetBSD, DragonFly BSD, Haiku and SunOS. Windows support uses Win32 APIs directly; no WSL, Cygwin or MSYS2 needed.
ASCII Art or Real Images
540 built-in distro logos, or your own picture through the Kitty graphics protocol, Sixel, iTerm2 or Chafa. Since 2.69.0, GIF and APNG logos can animate in Kitty-compatible terminals.
JSONC Config with an Official JSON Schema
Configuration lives in ~/.config/fastfetch/config.jsonc: plain JSON with comments. Add the official $schema line and VS Code, Neovim or Helix will autocomplete and validate every option. fastfetch --gen-config walks you through creating one interactively, and the official web configurator edits it in your browser.
Themes & Ricing
Fastfetch Themes, Presets & Dotfiles
Four starter configs to copy into ~/.config/fastfetch/config.jsonc. Each one validates against the official JSON schema for 2.69.0. They use ANSI color names, so the final colors come from your terminal theme (Catppuccin, Nord, Tokyo Night and so on).
PastelJSONC Preset
Catppuccin Mocha Dotfiles Theme
Magenta keys, cyan title and a compact Arch logo. Colors are ANSI names, so they render in Catppuccin Mocha tones when your terminal uses the Catppuccin Mocha theme.
Ready-made configs for common jobs. Each one is validated against the official 2.69.0 JSON schema and run with fastfetch 2.69.0. Save one as ~/.config/fastfetch/config.jsonc, or keep several files and switch with fastfetch -c <path>.
Minimalist 5-Line Rice
Speed & Focus
No logo, five lines, aligned keys. A good default for a quiet shell greeting or a tmux pane.
CPU and GPU temperatures, performance/efficiency core counts, process count, external disks and a memory bar that turns yellow above 40% and red above 75%. Temperatures need sensor support on your hardware.
Window manager, terminal and font plus the active music player and the current track (via MPRIS on Linux and the native media APIs on macOS and Windows), followed by the color palette.
Shows a different image from a folder on every run: Fastfetch expands the wildcard and picks one match at random (Linux, macOS, BSD). Change "kitty" to "sixel", "iterm" or "chafa" to match your terminal.
Commands from the official README, checked for v2.69.0. Some distributions ship old versions and upstream only supports the latest release, so check with fastfetch --version after installing. Download buttons always fetch the newest build from GitHub Releases.
Install Fastfetch on Ubuntu or Debian
Ubuntu / Debian / Mint
Debian 13+ and Ubuntu 25.04+ include it: sudo apt install fastfetch. On Ubuntu 22.04 and newer, the maintainer's PPA always has the latest release:
Neofetch was archived on 26 April 2024 and no longer receives fixes. HyFetch is not a direct competitor: it adds pride-flag color schemes and can use Fastfetch itself as its backend. Macchina is a smaller Rust tool that its authors now keep in maintenance mode. If you want an actively developed tool with the most detection modules and native Windows support, Fastfetch is the default choice.
Comparison of Fastfetch, Neofetch, HyFetch and Macchina
Criterion
Fastfetch
Neofetch
HyFetch
Macchina
Written in
C
Bash
Rust (since 2.0; Python before)
Rust
Project status (Oct 2026)
Actively developed
Archived April 2024
Active
Maintenance mode
How it gathers data
Native OS APIs from compiled code
Bash script calling external commands
Runs a backend (Fastfetch or its bundled neowofetch)
Native APIs via the libmacchina library
Windows
✓ Native build (winget, Scoop, Chocolatey)
Needs a Bash environment (Git Bash, Cygwin, MSYS2 or WSL)
Depends on the backend
✓ Supported
Configuration
JSONC with an official JSON schema
Bash script (config.conf)
Interactive setup, saved to a config file
TOML
Modules / readouts
76 modules (v2.69.0)
Fixed set of info functions
Those of its backend
Smaller fixed set of readouts
Best for
Almost everyone
Nothing new: migrate
Pride-flag colored output
A minimal Rust-based fetch
Speed depends heavily on hardware and enabled modules, so this table does not list timings. Upstream publishes Fastfetch benchmark results; measure your own setup with hyperfine.
Is Fastfetch better than Neofetch?
Yes, for nearly every use. Fastfetch is maintained while Neofetch is archived; it is faster because it is compiled C reading values directly from the OS rather than a Bash script spawning helper programs; it has far more modules; it is more precise (Neofetch prints 23 G where Fastfetch prints 22.97 GiB); it handles Wayland, which Neofetch never properly supported; and it runs natively on Windows. Package counts may differ slightly because Neofetch also counted removed-but-configured apt packages.
MIGRATION GUIDE
Switching from Neofetch to Fastfetch
fastfetch -c neofetch
Start here: install Fastfetch, then run fastfetch -c neofetch. The built-in preset reproduces Neofetch's module order and units, so you can compare both side by side before removing Neofetch. When you are happy, save a config with fastfetch --gen-config and edit it. To convert a custom Neofetch ASCII logo, see the official logo migration guide.
Neofetch option → Fastfetch equivalent
Neofetch
Fastfetch
What it does
neofetch
fastfetch
Print the system summary with the default modules.
neofetch (classic look)
fastfetch -c neofetch
Official preset that mimics Neofetch's layout and units.
~/.config/neofetch/config.conf
~/.config/fastfetch/config.jsonc
Bash config becomes JSONC. Create one with fastfetch --gen-config.
neofetch --config FILE
fastfetch -c FILE
Load a specific config file or a bundled preset by name.
neofetch --ascii_distro arch
fastfetch --logo arch
Use another built-in logo. List them with fastfetch --list-logos.
neofetch --ascii FILE
fastfetch --logo FILE --logo-type file
Custom ASCII art. Replace Neofetch's ${c1}–${c9} color placeholders with $1–$9.
neofetch --off
fastfetch --logo none
Hide the logo.
neofetch --source IMG
fastfetch --logo IMG --logo-type kitty
Show an image. Use sixel, iterm or chafa depending on your terminal.
neofetch --stdout
fastfetch --pipe --logo none
Plain text without colors or logo, for piping into other tools.
neofetch --print_config
fastfetch --gen-config -
Print a generated config to standard output instead of writing a file.
print_info() { info ... }
"modules": [ ... ]
Choose and order the lines with the modules array.
Quick Reference
Common Fastfetch CLI Commands
Copy-ready commands, all tested with fastfetch 2.69.0. Run fastfetch --help for the full list or fastfetch -h <option> for details on one option.
Default system summary
Runs with your config, or the built-in defaults if you have none.
fastfetch
Neofetch-style output
Loads the bundled neofetch preset. Others: archey, paleofetch, screenfetch.
fastfetch -c neofetch
Try every module
Prints all 76 modules so you can pick the ones you want.
Colon-separated list of modules for a one-off run.
fastfetch -s title:os:kernel:cpu:gpu:memory
Use another logo
Any built-in name; add _small for a compact variant.
fastfetch --logo arch_small
JSON for scripts
Structured output; combine with -s to limit modules.
fastfetch -s cpu:memory --format json
Find slow modules
Prints how long each module took, in milliseconds.
fastfetch --stat
See format placeholders
Lists every {placeholder} a module supports.
fastfetch -h cpu-format
Plain text output
No colors and no logo, for logs and pipes.
fastfetch --pipe --logo none
List built-in logos
All 540 logo names in your installed version.
fastfetch --list-logos
Show config search paths
Where Fastfetch looks for config.jsonc on this system.
fastfetch --list-config-paths
Workflow
Shell Startup, Prompts & Scripting
How to run Fastfetch when a terminal opens without breaking anything else, and how to use its output in scripts.
Shell Startup Greeting
Add Fastfetch to ~/.bashrc, ~/.zshrc, config.fish or your PowerShell $PROFILE, guarded so it only runs in interactive shells. Ready-made snippets for each shell are below.
Powerlevel10k, Starship & Oh My Posh
Fastfetch works with prompt themes. With Powerlevel10k's instant prompt, run fastfetchabove the instant-prompt block in ~/.zshrc; otherwise the output loses its colors or triggers a p10k warning.
--format json returns an array of {"type", "result"} objects (or "error" when a module fails), ready for jq:
fastfetch -s cpu --format json | jq -r '.[0].result.cpu'
Shell Startup Integration
Universal Shell Greeting Configuration
Each snippet only runs Fastfetch in interactive sessions, so scp, sftp, rsync and scripts keep working.
Important: don't call fastfetch unconditionally in ~/.bashrc. Bash also reads that file for non-interactive SSH sessions, and file transfers such as scp or sftp fail (for example with "Received message too long") when extra text appears on standard output. Guard it with an interactive-shell check:
~/.bashrc
# Only execute Fastfetch for interactive shell sessions
if [[ $- == *i* ]]; then
fastfetch
fi
Add to ~/.zshrc. If you use Powerlevel10k, put it above the instant-prompt block at the top of the file; otherwise anywhere works:
Tip: if the output appears without colors when the shell starts, the cause is almost always Powerlevel10k's instant prompt. Move the line above it, or run fastfetch --pipe false to force colors.
Add inside ~/.config/fish/config.fish using Fish's built-in interactive status function:
~/.config/fish/config.fish
if status is-interactive
fastfetch
end
Open your profile with notepad $PROFILE (create it first with New-Item -Force $PROFILE if it doesn't exist) and add:
Microsoft.PowerShell_profile.ps1
# Execute only in interactive terminal sessions
if ([Console]::IsOutputRedirected -eq $false) {
fastfetch
}
PowerShell Execution Policy: If scripts are disabled, run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser.
Add to your Nushell config file (run $nu.config-path to find it):
config.nu
# Fastfetch greeting for interactive Nushell sessions
if $nu.is-interactive {
fastfetch
}
Interactive Tool
Fastfetch Config Generator
Pick a logo, colors and modules, then copy or download config.jsonc and save it to ~/.config/fastfetch/config.jsonc (Windows: %USERPROFILE%\.config\fastfetch\config.jsonc). Every combination produces a config that validates against the official 2.69.0 schema. Everything runs in your browser; nothing is uploaded.
Short answers to the questions people ask most, checked against fastfetch 2.69.0. For deeper troubleshooting, see the troubleshooting guide.
What is Fastfetch used for?
Fastfetch prints a summary of your operating system, hardware and desktop next to a logo. People use it as a terminal greeting, to get a quick system overview when filing a bug report or checking a new machine or VM, to feed scripts and dashboards through fastfetch --format json, and to show off desktop setups in screenshots.
Is Fastfetch better than Neofetch?
For almost everyone, yes. Neofetch was archived on 26 April 2024 and no longer receives fixes. Fastfetch is actively maintained, is written in C and reads system information through native APIs instead of running a Bash script that calls external tools, ships 76 modules in version 2.69.0, reports values more precisely (for example 22.97 GiB instead of 23 G), supports Wayland properly and runs natively on Windows. Run fastfetch -c neofetch to get a Neofetch-style layout.
How do I install Fastfetch on Linux?
Use your distribution's package manager: sudo pacman -S fastfetch (Arch), sudo dnf install fastfetch (Fedora), sudo apt install fastfetch (Debian 13+ and Ubuntu 25.04+), the ppa:zhangsongcui3371/fastfetch PPA on Ubuntu 22.04+ for the newest release, sudo zypper install fastfetch (openSUSE), apk add --upgrade fastfetch (Alpine), emerge --ask app-misc/fastfetch (Gentoo), xbps-install fastfetch (Void) or nix-shell -p fastfetch (NixOS). If your distribution ships an old version, use the .deb/.rpm from GitHub Releases or brew install fastfetch.
Does Fastfetch work on Windows?
Yes. Fastfetch runs natively on Windows 8.1, 10 and 11 without WSL or Cygwin. Install it with winget install fastfetch, scoop install fastfetch or choco install fastfetch, or download fastfetch-windows-amd64.zip (or the ARM64 build) from GitHub Releases. Since 2.69.0, Windows Terminal can show image logos with the sixel protocol out of the box.
Where is the Fastfetch config file, and how do I create one?
Fastfetch does not create a config file automatically. Run fastfetch --gen-config: since version 2.67.0 it opens an interactive setup in your terminal and saves ~/.config/fastfetch/config.jsonc (on Windows, %USERPROFILE%\.config\fastfetch\config.jsonc). It refuses to overwrite an existing file, so delete or rename the old one first. fastfetch --list-config-paths shows every location Fastfetch searches.
How do I change the Fastfetch logo or display an image?
Use fastfetch --logo arch (any name from fastfetch --list-logos; 540 are built in) or --logo arch_small for a compact variant. For a picture, run fastfetch --logo ~/pic.png --logo-type kitty and pick the protocol your terminal supports: kitty, sixel, iterm or chafa (block characters, works almost everywhere). --logo none hides the logo.
Is it safe to copy someone else's Fastfetch config?
Review it first. The Command module runs arbitrary shell commands, so a config from an untrusted source can harm your system or leak data. Look for "type": "command" entries and command-raw logos before using a downloaded config.
Fastfetch shows my local IP address. Is that a privacy problem?
No. Private addresses such as 192.168.x.x, 10.x.x.x or 172.16–31.x.x only mean something inside your own network. If you share screenshots and prefer to hide it, remove localip from your modules list. Fastfetch only contacts the internet if you add the publicip or weather module.
Why does Fastfetch print without colors when my shell starts?
This usually happens with the Powerlevel10k instant prompt, which must not be followed by output. Put fastfetchbefore the instant-prompt block in ~/.zshrc. You can also force colors with fastfetch --pipe false.
Why does adding Fastfetch to ~/.bashrc break scp, sftp or rsync?
Non-interactive SSH sessions also read ~/.bashrc, and file-transfer protocols fail when unexpected text appears on standard output (scp reports errors such as "Received message too long"). Only run Fastfetch in interactive shells: [[ $- == *i* ]] && fastfetch.
How do I find out why Fastfetch is slow on my machine?
Run fastfetch --stat to print the time each module takes, then remove or reconfigure the slow ones. Typical culprits are network modules (publicip, weather), disks on slow network mounts and GPU detection on some drivers. To measure total run time, use hyperfine 'fastfetch --pipe false'.
My GPU shows up as "Device XXXX" on Debian or Ubuntu. Is that a bug?
Usually your PCI ID database is outdated. Update /usr/share/hwdata/pci.ids from pci-ids.ucw.cz (and amdgpu.ids for AMD cards), or ask the driver for the name with { "type": "gpu", "driverSpecific": true } in your modules list. (Older guides show --gpu-driver-specific; module options can no longer be passed on the command line.)
How do I fix missing icons or empty boxes in Fastfetch output?
Fastfetch's default output uses plain text, but many community configs use Nerd Font icons as keys. If you see boxes or question marks, install a Nerd Font (such as JetBrainsMono Nerd Font) and select it in your terminal settings.
How do I show a random image or sprite every time the terminal opens?
Point the logo at a wildcard path, for example "logo": { "type": "kitty", "source": "~/Pictures/logos/*.png" }; on Linux, macOS and BSD Fastfetch picks one matching file at random on each run. For terminal sprites, use "logo": { "type": "command-raw", "source": "pokeget random --hide-name" } or pokeget random --hide-name | fastfetch --file-raw -.