FASTFETCH / CUSTOM LOGO GUIDE
How to Add a Custom ASCII Logo to Fastfetch
A Fastfetch text logo is just a text file plus a small logo object in config.jsonc. This guide keeps the first test isolated, explains file versus file-raw and gives each operating system an explicit path.
Generate a plain-ASCII logo first
Start with printable keyboard ASCII before adding color placeholders. A plain file is easier to inspect, works across more terminal fonts and gives you a reliable fallback if color rendering changes.
Use the generator to check the widest line against 40, 60 or 80 terminal columns. The check measures text columns, not browser pixels.
- 40 columns for split panes and narrow terminals
- 60 columns for a portable default
- 80 columns for a full-width terminal header
Put the logo beside your Fastfetch config
Fastfetch normally reads config.jsonc from its configuration directory. Keeping logo.txt in the same directory makes the setup portable and easy to back up with the rest of your dotfiles.
On Windows, the explicit %USERPROFILE% form works across Fastfetch versions. Tilde expansion is also supported on newer versions, but an explicit environment variable is clearer when sharing instructions.
Linux and macOS
~/.config/fastfetch/config.jsonc
~/.config/fastfetch/logo.txt
Windows
%USERPROFILE%\.config\fastfetch\config.jsonc
%USERPROFILE%\.config\fastfetch\logo.txtChoose file or file-raw deliberately
Use file when the text contains Fastfetch color placeholders such as $1 through $9. Fastfetch replaces those placeholders using the matching logo.color value.
Use file-raw for literal plain text. It performs no color-placeholder replacement, so dollar signs and other characters stay exactly as written.
- file: reads a text file and replaces $1–$9 color placeholders
- file-raw: reads the file without placeholder replacement
- If the file cannot be read, Fastfetch may fall back to its detected built-in logo
Test with an isolated JSONC file
Do not replace your main configuration during the first test. Save this as fastfetch-logo-test.jsonc in the Fastfetch directory, adjust the source for your operating system and run it explicitly.
The plain setup below uses file-raw. Change the type to file only after you intentionally add color placeholders.
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "file-raw",
"source": "~/.config/fastfetch/logo.txt",
"padding": { "right": 3 }
}
}Run the test and expose errors
The --config flag proves which file Fastfetch loaded, while --show-errors exposes unreadable paths and invalid settings. If the logo works in the isolated file, copy only the logo object into your existing config.jsonc.
Make a backup before editing the main configuration. The downloaded ASCIIART.PRO pack includes separate selected and plain test configs so you can compare both without overwriting anything.
# Linux or macOS
fastfetch --config ~/.config/fastfetch/fastfetch-logo-test.jsonc --show-errors
# Windows PowerShell
fastfetch --config "$env:USERPROFILE\.config\fastfetch\fastfetch-logo-test.jsonc" --show-errorsVerify the real terminal, not only a preview
Open the result in the terminal, font and pane width you actually use. Check that the information columns remain readable and that no logo line wraps.
If the generated file works but the main config does not, the problem is usually the merge location, a duplicate logo object or a different configuration file being loaded.
- Check the narrowest pane you normally use
- Test both light and dark themes when colors are enabled
- Keep logo-plain.txt as a rollback file
Quick answers
Where is the Fastfetch config file?
The normal location is ~/.config/fastfetch/config.jsonc. On Windows, use %USERPROFILE%\.config\fastfetch\config.jsonc for an explicit user-profile path.
Should I use file or file-raw for an ASCII logo?
Use file-raw for literal plain text. Use file only when you want Fastfetch to replace $1–$9 color placeholders.
Can I test without changing my existing config?
Yes. Save a separate JSONC file and run fastfetch with --config plus --show-errors before merging the logo object.