Introduction
fastfetch is the modern replacement for neofetch, which was archived in 2024. Written in C (neofetch was pure Bash), fastfetch starts in ~30ms vs neofetch's 200–800ms, supports richer configuration via JSONC, and actively adds new modules (GPU, display, sound, weather, battery, etc.).
With over 22,000 GitHub stars, fastfetch is now the default in many distro welcome scripts and the go-to choice for terminal screenshots in /r/unixporn.
What fastfetch Does
fastfetch gathers system information from OS-native APIs (no shell-outs where avoidable), renders a distro logo as ASCII or image (with kitty/iTerm/sixel image protocols), and prints a configurable key/value list. Output is customizable per-module: pick which facts to show, what color, what format.
Architecture Overview
[fastfetch binary (C)]
|
+--------+--------+--------+--------+
| | | | |
OS info CPU/GPU Memory Network Display
(native APIs)
|
[Logo engine]
builtin ASCII distro logos
or PNG/JPEG via image protocol
|
[Render engine]
colored key/value output
left = logo, right = info
|
[Config]
~/.config/fastfetch/config.jsonc
modules, format strings, colorsSelf-Hosting & Configuration
// ~/.config/fastfetch/config.jsonc
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": { "type": "small", "color": { "1": "cyan" } },
"display": { "color": "blue" },
"modules": [
"title",
"separator",
"os",
"kernel",
"uptime",
"packages",
"shell",
"display",
"terminal",
"cpu",
"gpu",
"memory",
"disk",
"localip",
"battery",
"colors"
]
}# Show an image logo (terminal must support kitty/iterm/sixel)
fastfetch --logo path/to/avatar.png --logo-type kitty
# List all modules
fastfetch --list-modules
# Compact output (useful in shell init scripts)
fastfetch --structure "OS:Kernel:CPU:Memory"Key Features
- Startup in ~30ms — C implementation with native OS APIs
- Image logos — kitty/iTerm/sixel protocols for pixel-perfect logos
- 80+ modules — OS, CPU, GPU, memory, disk, battery, weather, sound, DE, WM, more
- JSONC config — comments + schema validation in your config
- Cross-platform — Linux, macOS, Windows, BSD, Android
- Distro-aware — detects Linux distros and shows correct logo
- Script-friendly —
--format jsonfor machine-readable output - Actively maintained — weekly commits, fast issue response
Comparison with Similar Tools
| Feature | fastfetch | neofetch | macchina | pfetch | archey |
|---|---|---|---|---|---|
| Status | Active | Archived (2024) | Active | Active | Legacy |
| Language | C | Bash | Rust | POSIX shell | Python |
| Startup time | ~30ms | 200–800ms | 50ms | 20ms | Slow |
| Image logos | Yes | Limited | No | No | No |
| Module count | 80+ | 60+ | ~30 | Minimal | Minimal |
| Config | JSONC + schema | Bash file | TOML | Shell vars | Python dict |
| Best For | Modern replacement | Legacy installs | Rust fans | Minimal setups | Historical |
FAQ
Q: Why did neofetch shut down? A: The maintainer archived the project in 2024 citing lack of time. fastfetch (and macchina) picked up the mantle. If you have neofetch, migrate — it won't receive updates.
Q: Will my neofetch config work? A: Not directly. fastfetch uses JSONC, neofetch used Bash. Most modules have equivalent names, but you'll need to rewrite the config file.
Q: Can I use my own image as the logo?
A: Yes. fastfetch --logo path.png --logo-type kitty (requires a terminal that supports the kitty image protocol: kitty, WezTerm, Ghostty, tabby, etc.).
Q: How do I run it on every shell startup?
A: Add fastfetch to ~/.zshrc / ~/.bashrc / ~/.config/fish/config.fish. Use a compact structure to avoid slowing shell startup.
Sources
- GitHub: https://github.com/fastfetch-cli/fastfetch
- License: MIT