You can change how the VS Code integrated terminal looks without editing your shell's configuration files. VS Code controls the font, cursor, colors, and ligatures through its own settings. Your shell prompt stays separate and is configured through your shell's rc file.
If you want to change which shell opens, see /vscode/how-to-change-the-default-terminal-in-vs-code. If you want per-shell profiles with custom appearance, see /vscode/how-to-create-and-configure-terminal-profiles-in-vs-code.
Change the font
The terminal font is independent from the editor font. You can use a different typeface for each.
Open Settings (Ctrl+, / Cmd+,) and search for the setting name, or add these to your settings.json:
{
"terminal.integrated.fontFamily": "'Fira Code', monospace",
"terminal.integrated.fontSize": 14,
"terminal.integrated.lineHeight": 1.2,
"terminal.integrated.letterSpacing": 0,
"terminal.integrated.fontWeight": "normal",
"terminal.integrated.fontWeightBold": "bold"
}| Setting | What it controls |
|---|---|
| terminal.integrated.fontFamily | The font family, with fallbacks. Use quotes around names with spaces. |
| terminal.integrated.fontSize | Font size in pixels. |
| terminal.integrated.lineHeight | Extra line spacing as a multiplier (1.2 adds 20%). |
| terminal.integrated.letterSpacing | Extra horizontal spacing in pixels. |
| terminal.integrated.fontWeight | Weight of regular text. |
| terminal.integrated.fontWeightBold | Weight of bold text. |
Use a Powerline or Nerd Font
Powerline and Nerd Fonts are patched fonts that include extra glyphs for shell prompts and status lines. To use one in the terminal:
- Download and install the patched font on your system.
- Set the font family to the patched name in settings, for example:
{
"terminal.integrated.fontFamily": "'Hack NF'"
}For Powerline fonts, the name typically ends in " for Powerline". For Nerd Fonts, it typically ends in " NF". VS Code renders basic Powerline symbols even without a patched font, but a patched font gives you the full glyph set.
Change the cursor style
The terminal cursor can be a block, a line, or an underline. It can also blink.
{
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.cursorWidth": 2,
"terminal.integrated.cursorBlinking": true,
"terminal.integrated.cursorStyleInactive": "outline"
}| Setting | Options | What it does |
|---|---|---|
| terminal.integrated.cursorStyle | block, line, or underline | Shape of the cursor when the terminal is focused. |
| terminal.integrated.cursorWidth | Number (pixels) | Width of the cursor when style is line. |
| terminal.integrated.cursorBlinking | true or false | Whether the cursor blinks when focused. |
| terminal.integrated.cursorStyleInactive | outline, block, line, underline, or none | Shape of the cursor when the terminal is unfocused. |
Terminal colors
The terminal uses the ANSI colors defined by your active VS Code color theme. If your theme has well-designed terminal colors, you do not need to change anything.
Here is an example that sets a dark background, light foreground, and custom ANSI colors. You only need to include the colors you want to change:
{
"workbench.colorCustomizations": {
"terminal.background": "#1E1E1E",
"terminal.foreground": "#D4D4D4",
"terminal.ansiGreen": "#0DBC79",
"terminal.ansiYellow": "#E5E510"
}
}Each ANSI color slot is independent. The full list includes terminal.ansiBlack through terminal.ansiWhite and their bright variants (terminal.ansiBrightBlack through terminal.ansiBrightWhite).
Minimum contrast ratio
VS Code adjusts terminal text colors to maintain a minimum 4.5:1 contrast ratio as an accessibility feature. This can desaturate colors, especially with dark themes.
If your terminal colors look washed out, disable it by setting terminal.integrated.minimumContrastRatio to 1 in your settings.
Check that text is still readable after disabling it, especially light text on light backgrounds.
Enable ligatures
Ligatures combine character sequences like => and != into a single glyph. If your terminal font supports ligatures, enable terminal.integrated.fontLigatures.enabled in your settings.
If your font has ligatures but VS Code does not parse them correctly, you can manually list fallback ligature sequences:
{
"terminal.integrated.fontLigatures.fallbackLigatures": ["ff", "fi", "fl"]
}You can also use font-feature-settings CSS format with terminal.integrated.fontLigatures.featureSettings for fine-grained OpenType control.
Customize terminal tabs
Terminal tabs appear on the right side of the terminal panel. You can control their visibility and the text they display.
{
"terminal.integrated.tabs.enabled": true,
"terminal.integrated.tabs.hideCondition": "singleTerminal",
"terminal.integrated.tabs.showActiveTerminal": "singleTerminal",
"terminal.integrated.tabs.location": "right",
"terminal.integrated.tabs.title": "${process}",
"terminal.integrated.tabs.description": "${cwd}",
"terminal.integrated.tabs.separator": " - "
}Available variables for tab titles include ${cwd}, ${cwdFolder}, ${workspaceFolder}, ${workspaceFolderName}, ${process}, ${shellType}, ${shellCommand}, ${task}, ${local}, ${sequence}, ${separator} (the separator shows only when surrounded by values).
The terminal.integrated.tabs.showActiveTerminal setting also accepts always, singleTerminalOrNarrow, singleGroup, never in addition to singleTerminal, so you can control tab visibility more precisely than the example above.
Fix rendering problems
If the terminal shows visual glitches like colored triangles, black rectangles, or garbled text, the GPU renderer is having trouble with your hardware or drivers. Set terminal.integrated.gpuAcceleration to off in your settings.
Customize your shell prompt
Your shell prompt (the text before the cursor) is configured outside VS Code, in your shell's rc file. Here are the relevant files for each shell:
| Shell | Config file |
|---|---|
| bash | ~/.bashrc or ~/.bash_profile |
| zsh | ~/.zshrc |
| fish | ~/.config/fish/config.fish |
| PowerShell | $PROFILE (run code $PROFILE to open it) |
For a quick, cross-shell upgrade, tools like Starship and oh-my-posh give you a modern prompt with git status, language versions, and other context without writing scripts yourself. Install the tool, add one line to your shell's rc file, and choose a theme.
Rune AI
Key Insights
- Change font family with terminal.integrated.fontFamily and font size with terminal.integrated.fontSize.
- Pick a cursor style (block, line, or underline) with terminal.integrated.cursorStyle.
- Terminal colors come from your VS Code theme. Customize individual ANSI colors with workbench.colorCustomizations.
- Enable ligatures in the terminal with terminal.integrated.fontLigatures.enabled.
- Disable minimum contrast ratio for original colors, but check readability afterward.
- Turn off GPU acceleration if you see rendering glitches or colored triangles.
Frequently Asked Questions
Why do my terminal colors look different from my standalone terminal app?
How do I use a Nerd Font or Powerline font in the terminal?
Can I make the terminal font different from the editor font?
Conclusion
VS Code gives you full control over how the terminal looks without touching your shell's config files. Change the font, cursor shape, colors, and ligatures from the Settings editor or settings.json. If text looks wrong, check GPU acceleration and the minimum contrast ratio first.
More in this topic
How to Use VS Code with WSL 2 on Windows
Run VS Code connected to Windows Subsystem for Linux so you can develop in a full Linux environment with native tools, terminals, and debugging, all from Windows.
20 Best VS Code Extensions for Web Developers in 2026
Twenty carefully chosen VS Code extensions every web developer should know. Covers formatting, linting, frameworks, debugging, Git, and developer experience.
How to Install, Disable, Update, and Uninstall VS Code Extensions
Learn how to install, disable, update, and uninstall VS Code extensions from the Marketplace and the command line. Step-by-step instructions for every action.