fastfetch
A maintained, feature-rich and performance oriented, neofetch like system information tool.
Top Related Projects
🐧 A pretty system information tool written in POSIX sh.
Fetches system/theme information in terminal for Linux desktop screenshots.
A system information frontend with an emphasis on performance.
Quick Overview
Fastfetch is a fast, highly customizable system information tool for Linux, MacOS, and BSD systems. It provides a quick overview of system specs, hardware, and software information in a visually appealing format, similar to Neofetch but with improved performance and flexibility.
Pros
- Extremely fast execution compared to similar tools
- Highly customizable output and appearance
- Supports a wide range of operating systems and hardware configurations
- Written in C, resulting in minimal dependencies and efficient resource usage
Cons
- May require compilation from source on some systems
- Less widespread adoption compared to more established tools like Neofetch
- Some advanced features may require additional configuration
Getting Started
To install Fastfetch on most Linux systems, you can use the following commands:
git clone https://github.com/fastfetch-cli/fastfetch.git
cd fastfetch
mkdir build && cd build
cmake ..
cmake --build . --target fastfetch
sudo cmake --install .
After installation, you can run Fastfetch by simply typing:
fastfetch
To customize the output, you can create a configuration file at ~/.config/fastfetch/config.conf
. Here's a basic example:
--logo auto
--structure Host:OS:Kernel:Uptime:Packages:Shell:Resolution:DE:WM:Terminal:CPU:GPU:Memory:Disk:Battery
--color-keys magenta
--color-title cyan
For more advanced configuration options and usage, refer to the project's documentation on GitHub.
Competitor Comparisons
🐧 A pretty system information tool written in POSIX sh.
Pros of pfetch
- Extremely lightweight and minimal (written in POSIX sh)
- Fast execution time due to simplicity
- Easy to customize and modify
Cons of pfetch
- Limited feature set compared to fastfetch
- Less detailed system information
- No configuration file support
Code Comparison
pfetch:
#!/bin/sh
# Minimal POSIX sh script to fetch system information
get_os() {
os="$(uname -s)"
case "$os" in
Linux*) os="Linux" ;;
Darwin*) os="macOS" ;;
*) os="Unknown" ;;
esac
echo "$os"
}
fastfetch:
// More feature-rich C implementation
#include "fastfetch.h"
const char* FF_GET_OS_NAME(FFinstance* instance) {
#if defined(__APPLE__)
return "macOS";
#elif defined(__linux__)
return "Linux";
#else
return "Unknown";
#endif
}
fastfetch offers a more comprehensive system information tool with extensive customization options, while pfetch provides a minimalist approach focused on speed and simplicity. fastfetch is written in C, allowing for more advanced features and optimizations, whereas pfetch uses POSIX sh for maximum portability and ease of modification. fastfetch includes a configuration system and supports various output formats, while pfetch relies on environment variables for limited customization.
Fetches system/theme information in terminal for Linux desktop screenshots.
Pros of screenFetch
- More established project with a longer history and larger user base
- Supports a wider range of operating systems and distributions
- Written in Bash, making it easier for users to modify and extend
Cons of screenFetch
- Slower execution time compared to fastfetch
- Less actively maintained, with fewer recent updates
- Limited customization options without modifying the source code
Code Comparison
screenFetch (Bash):
#!/usr/bin/env bash
# Detect the operating system
detectos() {
OS=$(uname -s)
case "$OS" in
Linux*) OS=Linux ;;
Darwin*) OS=Mac ;;
*) OS="Unknown" ;;
esac
}
fastfetch (C):
#include <stdlib.h>
#include <string.h>
#include "util/FFgetOSName.h"
const char* FFgetOSName(void) {
#ifdef __APPLE__
return "macOS";
#elif defined(__linux__)
return "Linux";
#else
return "Unknown";
#endif
}
The code snippets demonstrate the different approaches to detecting the operating system. screenFetch uses a Bash script with a case statement, while fastfetch implements the detection in C using preprocessor directives. This illustrates the language difference and potential performance advantages of fastfetch's compiled approach.
A system information frontend with an emphasis on performance.
Pros of Macchina
- Written in Rust, potentially offering better performance and memory safety
- Highly customizable output with themes and custom formats
- Supports a wide range of Unix-like systems, including macOS
Cons of Macchina
- Fewer features compared to Fastfetch
- Less frequent updates and smaller community
- Limited support for non-Unix systems
Code Comparison
Macchina configuration example:
[themes]
custom = "{host} | {os} | {kernel} | {uptime}"
Fastfetch configuration example:
{
"display": ["host", "os", "kernel", "uptime"],
"separator": " | "
}
Both projects aim to provide system information in a fast and customizable manner. Fastfetch, written in C, offers more features and broader system support, while Macchina focuses on Unix-like systems with a Rust implementation. Fastfetch has a larger community and more frequent updates, potentially leading to better long-term support and feature additions. However, Macchina's Rust foundation may provide advantages in terms of memory safety and performance for supported systems. The choice between the two depends on specific needs, preferred language ecosystem, and target operating systems.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Fastfetch
Fastfetch is a neofetch-like tool for fetching system information and displaying it in a visually appealing way. It is written mainly in C, with a focus on performance and customizability. Currently, it supports Linux, macOS, Windows 7+, Android, FreeBSD, OpenBSD, NetBSD, DragonFly, Haiku, and SunOS.







According configuration files for examples are located here.
There are screenshots on different platforms.
Installation
Linux
Some distributions package outdated versions of fastfetch. Older versions receive no support, so please always try to use the latest version.
- Ubuntu:
ppa:zhangsongcui3371/fastfetch
(for Ubuntu 22.04 or newer) - Debian:
apt install fastfetch
(for Debian 13 or newer) - Debian / Ubuntu: Download
fastfetch-linux-<proper architecture>.deb
from Github release page and double-click it (for Ubuntu 20.04 or newer and Debian 11 or newer). - Arch Linux:
pacman -S fastfetch
- Fedora:
dnf install fastfetch
- Gentoo:
emerge --ask app-misc/fastfetch
- Alpine:
apk add --upgrade fastfetch
- NixOS:
nix-shell -p fastfetch
- openSUSE:
zypper install fastfetch
- ALT Linux:
apt-get install fastfetch
- Exherbo:
cave resolve --execute app-misc/fastfetch
- Solus:
eopkg install fastfetch
- Slackware:
sbopkg -i fastfetch
- Void Linux:
xbps-install fastfetch
- Venom Linux:
scratch install fastfetch
You may need sudo
, doas
, or sup
to run these commands.
If fastfetch is not packaged for your distribution or an outdated version is packaged, linuxbrew is a good alternative: brew install fastfetch
macOS
Windows
- scoop:
scoop install fastfetch
- Chocolatey:
choco install fastfetch
- winget:
winget install fastfetch
- MSYS2 MinGW:
pacman -S mingw-w64-<subsystem>-<arch>-fastfetch
You may also download the program directly from the GitHub releases page in the form of an archive file.
BSD systems
- FreeBSD:
pkg install fastfetch
- NetBSD:
pkgin in fastfetch
- OpenBSD:
pkg_add fastfetch
(Snapshots only) - DragonFly BSD:
pkg install fastfetch
(Snapshots only)
Android (Termux)
pkg install fastfetch
Nightly
https://nightly.link/fastfetch-cli/fastfetch/workflows/ci/dev?preview
Build from source
See the Wiki: https://github.com/fastfetch-cli/fastfetch/wiki/Building
Usage
- Run with default configuration:
fastfetch
- Run with all supported modules to find what interests you:
fastfetch -c all.jsonc
- View all data that fastfetch detects:
fastfetch -s <module> --format json
- Display help messages:
fastfetch --help
- Generate a config file based on command line arguments:
fastfetch --arg1 --arg2 --gen-config
Customization
Fastfetch uses JSONC (JSON with comments) for configuration. See the Wiki for details. There are some premade config files in the presets
directory, including those used for the screenshots above. You can load them using -c <filename>
. These files can serve as examples of the configuration syntax.
Logos can also be heavily customized; see the logo documentation for more information.
FAQ
Q: Neofetch is good enough. Why do I need fastfetch?
- Fastfetch is actively maintained.
- Fastfetch is faster, as the name suggests.
- Fastfetch has a greater number of features, though by default it only has a few modules enabled; use
fastfetch -c all
to discover what you want. - Fastfetch is more configurable. You can find more information in the Wiki: https://github.com/fastfetch-cli/fastfetch/wiki/Configuration.
- Fastfetch is more polished. For example, neofetch prints
555 MiB
in the Memory module and23 G
in the Disk module, whereas fastfetch prints555.00 MiB
and22.97 GiB
respectively. - Fastfetch is more accurate. For example, neofetch never actually supports the Wayland protocol.
Q: Fastfetch shows my local IP address. Does it leak my privacy?
A local IP address (10.x.x.x, 172.x.x.x, 192.168.x.x) has nothing to do with privacy. It only has meaning if you are on the same network, for example, if you connect to the same Wi-Fi network.
Actually, the Local IP
module is the most useful module for me personally. I (@CarterLi) have several VMs installed to test fastfetch and often need to SSH into them. With fastfetch running on shell startup, I never need to type ip addr
manually.
If you really don't like it, you can disable the Local IP
module in config.jsonc
.
Q: Where is the config file? I can't find it.
Fastfetch does not generate a config file automatically. You can use fastfetch --gen-config
to generate one. The config file will be saved in ~/.config/fastfetch/config.jsonc
by default. See the Wiki for details.
Q: The configuration is so complex. Where is the documentation?
Fastfetch uses JSON (with comments) for configuration. I suggest using an IDE with JSON schema support (like VSCode) to edit it.
Alternatively, you can refer to the presets in the presets
directory.
The correct way to edit the configuration:
This is an example that changes size prefix from MiB / GiB to MB / GB. Editor used: helix
Q: I WANT THE DOCUMENTATION!
Here is the documentation. It is generated from the JSON schema, but you might not find it very user-friendly.
Q: How can I customize the module output?
Fastfetch uses format
to generate output. For example, to make the GPU
module show only the GPU name (leaving other information undisplayed), you can use:
{
"modules": [
{
"type": "gpu",
"format": "{name}" // See `fastfetch -h gpu-format` for details
}
]
}
...which is equivalent to fastfetch -s gpu --gpu-format '{name}'
See fastfetch -h format
for information on basic usage. For module-specific formatting, see fastfetch -h <module>-format
Q: I have my own ASCII art / image file. How can I show it with fastfetch?
Try fastfetch -l /path/to/logo
. See the logo documentation for details.
If you just want to display the distro name in FIGlet text:
# install pyfiglet and jq first
pyfiglet -s -f small_slant $(fastfetch -s os --format json | jq -r '.[0].result.name') && fastfetch -l none
Q: My image logo behaves strangely. How can I fix it?
See the troubleshooting section: https://github.com/fastfetch-cli/fastfetch/wiki/Logo-options#troubleshooting
Q: Fastfetch runs in black and white on shell startup. Why?
This issue usually occurs when using fastfetch with p10k
. There are known incompatibilities between fastfetch and p10k instant prompt.
The p10k documentation clearly states that you should NOT print anything to stdout after p10k-instant-prompt
is initialized. You should put fastfetch
before the initialization of p10k-instant-prompt
(recommended).
You can always use fastfetch --pipe false
to force fastfetch to run in colorful mode.
Q: Why do fastfetch and neofetch show different memory usage results?
See #1096.
Q: Fastfetch shows fewer dpkg packages than neofetch. Is it a bug?
Neofetch incorrectly counts rc
packages (packages that have been removed but still have configuration files remaining). See bug: https://github.com/dylanaraps/neofetch/issues/2278
Q: I use Debian / Ubuntu / Debian-derived distro. My GPU is detected as XXXX Device XXXX (VGA compatible)
. Is this a bug?
Try upgrading pci.ids
: Download https://pci-ids.ucw.cz/v2.2/pci.ids and overwrite the file /usr/share/hwdata/pci.ids
. For AMD GPUs, you should also upgrade amdgpu.ids
: Download https://gitlab.freedesktop.org/mesa/drm/-/raw/main/data/amdgpu.ids and overwrite the file /usr/share/libdrm/amdgpu.ids
Alternatively, you may try using fastfetch --gpu-driver-specific
, which will make fastfetch attempt to ask the driver for the GPU name if supported.
Q: I get the error Authorization required, but no authorization protocol specified
when running fastfetch as root
Try export XAUTHORITY=$HOME/.Xauthority
Q: Fastfetch cannot detect my awesome 3rd-party macOS window manager!
Try fastfetch --wm-detect-plugin
. See also #984
Q: How can I change the colors of my ASCII logo?
Try fastfetch --logo-color-[1-9] <color>
, where [1-9]
is the index of color placeholders.
For example: fastfetch --logo-color-1 red --logo-color-2 green
.
In JSONC, you can use:
{
"logo": {
"color": {
"1": "red",
"2": "green"
}
}
}
Q: How do I hide a key?
Set the key to a white space.
{
"key": " "
}
Q: How can I display images on Windows?
As of April 2025:
mintty and Wezterm
mintty (used by Bash on Windows and MSYS2) and Wezterm (nightly build only) support the iTerm image protocol on Windows.
In config.jsonc
:
{
"logo": {
"type": "iterm",
"source": "C:/path/to/image.png",
"width": <num-in-chars>
}
}
Windows Terminal
Windows Terminal supports the sixel image protocol only.
- If you installed fastfetch through MSYS2:
- Install imagemagick:
pacman -S mingw-w64-<subsystem>-x86_64-imagemagick
- In
config.jsonc
:
- Install imagemagick:
{
"logo": {
"type": "sixel", // DO NOT USE "auto"
"source": "C:/path/to/image.png", // Do NOT use `~` as fastfetch is a native Windows program and doesn't apply cygwin path conversion
"width": <image-width-in-chars>, // Optional
"height": <image-height-in-chars> // Optional
}
}
- If you installed fastfetch via scoop or downloaded the binary directly from the GitHub Releases page:
- Convert your image manually to sixel format using any online image conversion service
- In
config.jsonc
:
{
"logo": {
"type": "raw", // DO NOT USE "auto"
"source": "C:/path/to/image.sixel",
"width": <image-width-in-chars>, // Required
"height": <image-height-in-chars> // Required
}
}
Q: I want feature A / B / C. Will fastfetch support it?
Fastfetch is a system information tool. We only accept hardware or system-level software feature requests. For most personal uses, I recommend using the Command
module to implement custom functionality, which can be used to grab output from a custom shell script:
// This module shows the default editor
{
"modules": [
{
"type": "command",
"text": "$EDITOR --version | head -1",
"key": "Editor"
}
]
}
Otherwise, please open a feature request in GitHub Issues.
Q: I have questions. Where can I get help?
- For usage questions, please start a discussion in GitHub Discussions.
- For possible bugs, please open an issue in GitHub Issues. Be sure to fill out the bug report template carefully to help developers investigate.
Donate
If you find Fastfetch useful, please consider donating.
- Current maintainer: @CarterLi
- Original author: @LinusDierheimer
Star History
Give us a star to show your support!
Top Related Projects
🐧 A pretty system information tool written in POSIX sh.
Fetches system/theme information in terminal for Linux desktop screenshots.
A system information frontend with an emphasis on performance.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot