Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

To change the font in a Linux text-only virtual console, preview the current glyphs with showconsolefont, then load an installed console font with sudo setfont FONT_NAME. That change is usually temporary and applies to the active TTY. To keep it after reboot, use /etc/vconsole.conf on systemd-based systems or the console-setup tools commonly used on Debian and Ubuntu.

These steps are for a virtual console, such as a text screen reached with Ctrl+Alt+F3. They do not change the font in a desktop terminal app or the terminal you use to connect over SSH.

First, make sure you mean the Linux virtual console

“Console” can refer to several different interfaces. The kernel’s virtual console—often called a TTY—is the text screen you can switch to from a graphical desktop. A terminal emulator is a windowed app such as GNOME Terminal or KDE Konsole. Bash, Zsh, and other shells display text in whichever environment hosts them; they do not choose the font.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Where you see the text Where to change its font
Linux virtual console / TTY setfont, /etc/vconsole.conf, or the distribution’s console-setup configuration
GNOME Terminal or another desktop terminal That terminal’s profile or appearance settings
KDE Konsole The selected Konsole profile’s appearance settings
SSH session in a local terminal app Usually the font setting in the local terminal app

On a TTY, run tty to see which device you are using; output such as /dev/tty3 identifies a virtual console. You can switch between available consoles with the appropriate Ctrl+Alt+function-key combination for your system. A bootloader menu is a separate interface and is not changed by setfont.

Find an installed console font

Console fonts are not ordinary desktop TrueType or OpenType fonts: setfont expects a compatible console-font file or a name recognized by your system’s font package. Font directories vary by distribution, so search the common locations rather than assuming one path:

find /usr/share/kbd/consolefonts 
     /usr/lib/kbd/consolefonts 
     /usr/share/consolefonts 
     -type f 2>/dev/null

To narrow the results to some familiar names or families:

find /usr/share/kbd/consolefonts 
     /usr/lib/kbd/consolefonts 
     /usr/share/consolefonts 
     -type f 2>/dev/null | grep -Ei 'terminus|ter-|lat|sun|drdos|uni'

If the search returns nothing, that does not prove no fonts are installed; your distribution may use another location or may not have its console-font package installed. On Arch, fonts supplied by kbd commonly live in /usr/share/kbd/consolefonts/. RHEL 9 documentation shows files under /usr/lib/kbd/consolefonts/, while Debian-family installations may use /usr/share/consolefonts/. Use the exact filename and capitalization shown on your machine. A font can be supplied to setfont as a recognized short name, a filename, or a path, depending on the installed kbd implementation and packaging.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Test the font before saving it

First, look at the current console’s sample glyphs:

showconsolefont

Then try an installed candidate. For example, if your system has a Terminus variant:

sudo setfont ter-132n

Or point directly at a font file, using its actual path:

sudo setfont /usr/lib/kbd/consolefonts/LatArCyrHeb-16.psfu.gz

Preview again with showconsolefont and inspect ordinary text, punctuation, box-drawing characters, and any non-English characters you need. Names such as ter-132n and ter-132b are examples, not fonts guaranteed to be installed everywhere. A direct setfont invocation normally changes the active console only and is meant for testing; another console or a later boot may still use its configured font. On RHEL-style systems, running setfont without an argument returns to the font configured in /etc/vconsole.conf; behavior can differ on other distributions.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep the change on a systemd-based distribution

For many systemd-based distributions, including Arch and RHEL-family systems, virtual-console settings are read from /etc/vconsole.conf. Confirm the file exists before making a backup, then edit it:

sudo cp -a /etc/vconsole.conf /etc/vconsole.conf.bak
sudoedit /etc/vconsole.conf

Add or change the font line, using a name or value valid for your installation:

FONT=ter-132n

The systemd virtual-console configuration manual also defines FONT_MAP and FONT_UNIMAP for character mapping. Most modern Unicode console-font files include a Unicode mapping, so do not add a separate map automatically. Use mapping settings only when your font and required character set call for them; an unsuitable map can make output incorrect.

Apply the file without waiting for a reboot:

sudo systemctl restart systemd-vconsole-setup.service
showconsolefont

The service sets up virtual consoles; consult the systemd-vconsole-setup manual for its behavior and application details. If you would rather not restart the service, reboot and check the TTY afterward. A service restart can make the configured font available across virtual consoles, whereas an interactive setfont command is ordinarily limited to the console where you ran it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Arch Linux

Arch commonly uses /etc/vconsole.conf and fonts from the kbd package. Its Linux console documentation explains that setfont changes the currently active console. If a configured font is unavailable during early boot, Arch’s initramfs may need to include it using the distribution’s consolefont hook. Do not add or modify initramfs hooks on another distribution based solely on this Arch-specific step.

Fedora, RHEL, and Rocky Linux

On systemd-based systems in this family, begin by checking /etc/vconsole.conf and the installed font directories. RHEL 9’s documentation demonstrates listing .psfu.gz files in /usr/lib/kbd/consolefonts/, testing a font with setfont, and saving the selection in /etc/vconsole.conf. Paths and package details can vary across releases and between RHEL, Fedora, and Rocky; use the files present on your machine.

Use console-setup on Debian and Ubuntu

Debian and Ubuntu commonly manage virtual-console fonts through the console-setup package rather than relying only on /etc/vconsole.conf. A guided configuration can be opened with:

sudo dpkg-reconfigure console-setup

The available prompts vary by release and installed package. They may let you choose the character set, font face, and font size. Inspect the resulting configuration with:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cat /etc/default/console-setup

Apply the settings with:

sudo setupcon

The Ubuntu console-setup manual describes the configuration, including character-map and active-console settings; Debian also documents the relationship between console-setup and setupcon in its console-setup manual. If your installation uses this mechanism, configure and apply it rather than blindly maintaining both it and /etc/vconsole.conf. Check your distribution’s documentation if the package or commands are absent.

Choose for both readability and the characters you need

  • Size versus screen space: A larger font can make a high-DPI or hard-to-read TTY more comfortable, but it also means fewer rows and columns for tools such as top, vim, tmux, and less. It does not increase the display’s resolution.
  • Character coverage: Check that the font includes your scripts and symbols, not just English letters. Requirements might include accented Latin, Cyrillic, Greek, Hebrew, Arabic, Unicode box drawing, or combining marks.
  • Console rendering limits: The traditional Linux virtual console uses a constrained console-font renderer, not the flexible font shaping and scaling of a desktop. A font may lack complex-script or combining-character support, and replacing a familiar font can affect programs that expect standard VGA-style line-drawing characters. The Arch Linux console documentation notes this compatibility concern.
  • Font family and format: Terminus variants are a common choice for clear, larger TTY text where packaged, but verify the exact installed variant. A regular desktop font will not generally work just because it is installed system-wide; use a compatible console-font file.

RHEL 9 documentation states a virtual-console font-size limit of 32 pixels for its documented environment. Treat that as specific to the RHEL documentation, not a universal limit for every distribution, driver, or console setup. Some setfont versions provide a --double option to enlarge a font, but support and behavior vary; check setfont --help first. Doubling can look coarse and sharply reduce visible text.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting

setfont or showconsolefont is missing

Check whether the command exists and what options your installed version supports:

command -v setfont
setfont --help

The tool may be provided by a distribution package such as kbd, or may be absent from a restricted rescue environment. Install the package that provides the console-font tools for your distribution; there is no single package-manager command that applies to all Linux systems.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Unable to find file”

The font may not be installed, the name may not be recognized, or the path or capitalization may be wrong. Repeat the font search, then use the exact case-sensitive filename or a full path. If a font file has an extension such as .psfu.gz, try the path to that actual file rather than assuming its shortened name is accepted.

The font works until reboot

A temporary setfont test does not itself save a boot-time preference. Confirm that you edited the configuration used by your distribution: /etc/vconsole.conf for the systemd route, or /etc/default/console-setup with setupcon for a console-setup installation. On systemd systems, inspect the service and its boot log:

cat /etc/vconsole.conf
systemctl status systemd-vconsole-setup.service
journalctl -b -u systemd-vconsole-setup.service

Possible causes include a typo, a font unavailable during early boot, an overriding kernel command-line option such as vconsole.font=, or a later framebuffer or graphics-driver initialization that resets the font. The vconsole.conf manual describes kernel command-line overrides; Arch’s console guidance covers font resets associated with graphics initialization. Resolve the cause for your distribution rather than assuming that every reset needs an initramfs change.

Only one TTY changes

That is expected after running setfont directly: it normally affects the active console. To configure virtual consoles for boot, use the system’s persistent configuration mechanism and apply it with systemd-vconsole-setup.service or, on a console-setup installation, setupcon.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Characters are boxes, question marks, or wrong symbols

The font may lack the needed glyphs, the console may be using an unsuitable character map, or the application may emit characters that the font or console cannot render. Try a Unicode-capable console font, and check whether the file includes a Unicode mapping before adding a separate FONT_MAP or FONT_UNIMAP. Font glyph coverage and character mapping are related, but they are not the same setting. For non-Latin scripts or complex shaping, the traditional virtual console may have limitations even when a font contains some relevant glyphs.

The SSH text still looks the same

Changing the server’s local TTY font does not normally change the appearance of an SSH session on your laptop or desktop. The terminal emulator displaying the SSH connection controls the client-side font.

Restore the previous font or recover from an unreadable screen

On systems where this restores the configured virtual-console font, try:

sudo setfont

Otherwise, reload the last known-good font by its full path. If you saved a backup of /etc/vconsole.conf, restore it and reapply the systemd service:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo cp -a /etc/vconsole.conf.bak /etc/vconsole.conf
sudo systemctl restart systemd-vconsole-setup.service

If the current console is difficult to read, switch to another TTY and correct the settings there. If the keyboard still works, commands can also be entered without relying on readable output, though switching to a known-good console or using a saved recovery path is safer.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.