ASCII Art for Terminal Banners
Why Terminal Banners Matter
When you open a terminal or run a CLI tool, the first thing you see sets the tone. A well-crafted ASCII art banner immediately tells users what tool they're using, adds personality, and makes your command-line interface feel polished instead of bare.
Terminal banners are everywhere — from neofetch system info screens to custom shell prompts, from Docker container MOTDs to game splash screens. They transform a blank terminal into a branded experience.
Choosing a Font for Terminal Banners
The most common way to generate terminal banners is with FIGlet, a tool that converts plain text into large ASCII letters using font files. Each font has a distinct personality:
| Font Style | Best For | Width | Example Use |
|---|---|---|---|
standard | General purpose | Medium | CLI tool headers |
slant | Modern, dynamic look | Medium | Dev tool splash screens |
banner | Wide, blocky impact | Wide | Server MOTDs |
block | Bold headings | Wide | Documentation headers |
small | Compact terminals | Narrow | Embedded info panels |
thin | Minimalist aesthetic | Narrow | Dotfile configs |
Keep your terminal width in mind. Most terminals default to 80 columns, so measure your banner output. A banner-font title longer than 8 characters will likely wrap on standard terminals.
Font Selection Tips
- Prefer narrow fonts (
small,thin) for long project names - Use wide fonts (
banner,block) only when you control the terminal width - Test your banner at both 80 and 120 columns
- Avoid fonts that rely on extended ASCII — they break on some terminals
Adding Style with Blocks and Borders
A raw FIGlet output works, but borders and decorative elements elevate it. Here are common patterns:
Box drawing with double lines:
╔══════════════════════════════╗
║ _ _ ___ ___ ___ ___ ║
║ | | | / __|| __| _ \/ __| ║
║ | |_| \__ \| _|| /\__ \ ║
║ \___/|___/|___|_|_\|___/ ║
╚══════════════════════════════╝
Single-line box with separator:
┌─────────────────────────────┐
│ MY TOOL v2.0 │
├─────────────────────────────┤
│ A CLI for things │
└─────────────────────────────┘
Hash border:
################################
# __ __ ____ ____ #
# | \/ / ___|| _ \ ___ #
# | |\/| \___ \| |_) / __| #
# | | | |___) | __/\__ \ #
# |_| |_|____/|_| |___/ #
################################
Box Drawing Character Reference
Use Unicode box-drawing characters for clean borders. They render correctly on virtually all modern terminals:
| Character | Code Point | Use |
|---|---|---|
─ | U+2500 | Horizontal line |
│ | U+2502 | Vertical line |
┌ | U+250C | Top-left corner |
┐ | U+2510 | Top-right corner |
└ | U+2514 | Bottom-left corner |
┘ | U+2518 | Bottom-right corner |
Color and ANSI Escape Codes
Monochrome banners work fine, but ANSI color codes add impact. Most modern terminals support 256-color or true-color output:
# Red banner text
printf "\033[31m"
figlet "DEPLOY"
printf "\033[0m"
# Gradient effect using 256-color palette
for i in {196..202}; do
printf "\033[38;5;${i}m█\033[0m"
done
Keep these rules in mind:
- Always reset colors with
\033[0mto avoid bleeding into subsequent output - Detect terminal color support before emitting codes — use
tput colorsor theCOLORTERMenvironment variable - Provide a
--no-colorflag for CI/CD pipelines and log files - Avoid blinking (
\033[5m) — it's widely considered annoying
Practical Integration Patterns
Shell Profile Banners
Add a banner to your .bashrc or .zshrc:
# Only show on interactive shells
if [[ $- == *i* ]]; then
echo ""
figlet -f small "$(whoami)@$(hostname)"
echo " Last login: $(last -1 "$(whoami)" | awk '{print $4, $5, $6}')"
echo ""
fi
Node.js CLI Banners
import figlet from 'figlet'
const banner = figlet.textSync('my-cli', { font: 'slant' })
console.log(`\n${banner}\n Version ${pkg.version}\n`)
Python CLI Banners
from pyfiglet import figlet_format
banner = figlet_format("myapp", font="standard")
print(f"\n{banner} v{__version__}\n")
Performance Considerations
FIGlet font rendering is fast for single outputs, but avoid these pitfalls:
- Don't render banners in tight loops or hot paths
- Cache rendered output if your CLI starts repeatedly (e.g., shell completion)
- Strip ANSI codes when piping to files — check
isatty(stdout)before adding color - For containers, keep MOTD banners short to avoid slowing SSH login
Related Guides
Try It Yourself
Ready to create your own terminal banner? Use our free ASCII art generator to preview fonts, adjust widths, and copy formatted output directly into your project.