ASCII art has been a staple of developer culture since the early days of computing — from terminal banners and README headers to IRC channel greetings. This guide covers how text-to-ASCII art conversion works, which FIGlet fonts to use for different contexts, and how to generate ASCII art instantly with an online tool.
What Is ASCII Art Text?
ASCII art text uses standard printable characters to render letters, numbers, and symbols as large-format graphical text. Unlike pixel art, ASCII art is entirely made of characters — so it renders anywhere a monospace font is used: terminals, markdown files, source code comments, and plain text emails.
_ _ _ _
| | | | ___| | | ___
| |_| |/ _ \ | |/ _ \
| _ | __/ | | (_) |
|_| |_|\___|_|_|\___/
How FIGlet Fonts Work
FIGlet (Frank, Ian, and Glenn’s Letters) is the standard library for generating ASCII art text. A FIGlet font is a plain text file (.flf) that maps each character to a multi-line ASCII representation. The engine reads your input string, looks up each character, and assembles the rows.
Key parameters that affect output:
- Font — defines the glyph shape (block, script, shadow, 3D, etc.)
- Width — maximum characters per line before wrapping
- Layout — spacing between characters (full, fitted, or smushed)
- Direction — left-to-right or right-to-left
Popular FIGlet Fonts
| Font | Style | Best Use |
|---|---|---|
standard | Clean, readable | General purpose, README headers |
banner | All-caps, bold | Short banners and announcements |
slant | Italic lean | Section dividers in code |
shadow | Double shadow | Terminal greetings |
big | Large, simple | Quick visibility |
block | Chunky 3D | Project logos |
script | Cursive-like | Creative headings |
doom | Space Invaders style | Game projects, retro feel |
speed | Rounded | Modern CLI tools |
3d | Three-dimensional | Logos with depth |
Common Use Cases
README Headers
GitHub and GitLab render ASCII art in README.md code blocks:
```
____ _____ _
/ __ \___ ___ ____ |_ _|__ ___ | |
/ / _` / _ \/ _ `|/ _` || |/ _ \ / _ \| |
\ \__,_\___/\_,_/_/|_/ |_|\___/\___/|_|
\____/
```
Keep width under 80 characters for compatibility with most terminal widths and GitHub’s preview pane.
Terminal Startup Banners
Many developers add ASCII art to their shell’s ~/.bashrc or ~/.zshrc:
# ~/.zshrc
cat << 'EOF'
____ _ ___ __ ___
| _ \ _____ __/ \ / _ \/ _/ __|
| | | / _ \ \ / / _ \ | | | | |___ \
| |_| | __/\ V / ___ \ | |_| | |___) |
|____/ \___| \_/_/ \_\ \___/|_|____/
EOF
Code Section Dividers
Long source files sometimes use ASCII dividers to separate logical sections:
# ============================================================
# ██████╗ █████╗ ████████╗ █████╗ ██████╗ █████╗ ███████╗███████╗
# ██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔════╝
# ██║ ██║███████║ ██║ ███████║██████╔╝███████║███████╗█████╗
# ██║ ██║██╔══██║ ██║ ██╔══██║██╔══██╗██╔══██║╚════██║██╔══╝
# ██████╔╝██║ ██║ ██║ ██║ ██║██████╔╝██║ ██║███████║███████╗
# ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝
# ============================================================
Docker Container Labels and CI Output
CI systems like GitHub Actions display ASCII banners at the start of job steps to make logs scannable:
- name: Build Banner
run: |
echo " ____ _ _ ___ _ ____ "
echo " | __ )| | | |_ _| | | _ \ "
echo " | _ \| | | || || | | | | |"
echo " | |_) | |_| || || |___| |_| |"
echo " |____/ \___/|___|_____|____/ "
Generating ASCII Art Programmatically
Node.js with figlet
npm install figlet
import figlet from 'figlet';
figlet.text('Hello World', { font: 'Standard' }, (err, data) => {
if (err) throw err;
console.log(data);
});
// Promise-based
const result = await figlet.textSync('ZeroTool', { font: 'Slant' });
console.log(result);
Python with pyfiglet
pip install pyfiglet
import pyfiglet
# Default font
result = pyfiglet.figlet_format("Hello World")
print(result)
# Specific font
result = pyfiglet.figlet_format("ZeroTool", font="slant")
print(result)
# List available fonts
fonts = pyfiglet.FigletFont.getFonts()
print(f"{len(fonts)} fonts available")
Go with go-figure
go get github.com/common-nighthawk/go-figure
import figure "github.com/common-nighthawk/go-figure"
func main() {
myFigure := figure.NewFigure("Hello World", "standard", true)
myFigure.Print()
// Colored output
colorFigure := figure.NewColorFigure("ZeroTool", "slant", "green", true)
colorFigure.Print()
}
Width and Wrapping Considerations
ASCII art breaks when the terminal or container is too narrow. Rules of thumb:
- 80 columns: safe for most terminals, classic default
- 120 columns: safe for most IDE terminals and modern displays
- Avoid wrapping entirely for logos — test your target width first
Fonts with shorter character widths (speed, small) fit more text before hitting the column limit. Use the width preview in the generator to check before copying.
Tips for Clean Output
- Avoid lowercase in narrow fonts — many FIGlet fonts are designed for uppercase only; lowercase glyphs can look unbalanced
- Test in a monospace context — ASCII art looks correct only in monospace fonts; proportional fonts will misalign rows
- One-click copy — the online tool copies the raw multi-line string, preserving exact spacing
- Escape for different targets — in JSON strings, newlines must be
\n; in YAML, use block scalars (|) to preserve literal newlines
Using the Online ASCII Art Generator
Try ZeroTool Text to ASCII Art →
Paste any text, pick from 200+ FIGlet fonts with live preview, and copy the output with one click. No installation, no API keys, no rate limits — runs entirely in the browser.
Features:
- Live preview as you type or change fonts
- 200+ FIGlet fonts categorized by style
- One-click copy to clipboard
- Width control to match your target container
- Works offline after first load (PWA-ready)