ascii-banner docs and examples
A practical guide to rendering text as FIGlet banners, choosing fonts, adding color and borders, formatting comments, exporting SVG, playing terminal animations, and producing GIF, WebP, MP4, and WebM assets for the web.
Animation Gallery #
Every supported animation effect is rendered twice: LLM-WIKI in green and Bitcoin in orange. Each card shows the exact command used to produce the GIF.
--seed 21-f Slant uses the Slant FIGlet font.
--duration 1.6 --fps 8 keeps each preview short and small.
--seed 21 makes randomized effects reproducible.
--intensity 0.35 uses moderate effect strength where supported.
--cell-width 7 --cell-height 14 controls the exported character cell.
--bg black renders against a black media background.
LLM-WIKI in green
Bitcoin in orange
Other export formats
GIF gallery asset
ascii-banner -f Slant -c green --animate matrix --duration 3 --fps 15 --seed 21 --loop 0 --export matrix.gif "LLM-WIKI"Animated WebP asset
ascii-banner -f Slant -c green --animate matrix --duration 3 --fps 15 --seed 21 --loop 0 --export matrix.webp "LLM-WIKI"MP4 video asset
ascii-banner -f Slant -c green --animate matrix --duration 3 --fps 15 --seed 21 --loop 0 --export matrix.mp4 "LLM-WIKI"Multi-format export
ascii-banner -f Slant -c green --animate reveal --loop 0 --export reveal.mp4 --export reveal.webm "LLM-WIKI"Static Examples #
Static examples show normal terminal output variations: font choices, color styling, borders, layout, and comment formatting. Each card includes the exact command that produced the output.
All Fonts #
All 328 bundled FIGlet fonts are shown with a small Aa1 preview, size bucket, legibility rating, tags, and the command to use that font.
Loading fonts...
Guide Contents #
Install #
# Homebrew
brew install nvk/tap/ascii-banner
# pip
pip install ascii-banner
# Optional media export support for GIF and WebP
pip install "ascii-banner[media]"
# MP4 and WebM also require ffmpeg
brew install ffmpeg
Mental Model #
1. Choose text
Pass text as arguments or pipe stdin into the command. Multiple positional words are joined with spaces.
2. Choose a font
Use the default standard font, a bundled font with -f, a custom .flf file with -F, or browse categories.
3. Style output
Add color, justification, width, borders, comment wrappers, SVG rendering, animation, or media export.
4. Send it somewhere
Print to the terminal, redirect to a file, embed in source, save SVG, or export animated web media.
Quick Start #
Default font
Render a banner with the bundled default font.
ascii-banner "Hello"Pick a font
Use -f for a specific bundled FIGlet font.
ascii-banner -f Doom "Hello"Pipe input
Read text from stdin when no positional text is supplied.
printf "Hello" | ascii-banner -f BigColor and border
Combine color with a border style in one command.
ascii-banner -f Slant -c red --border rounded "Deploy"Center in width
Use -w with -j center to align within a fixed width.
ascii-banner -f Big -w 80 -j center "Ship"Save text output
Redirect normal terminal text into a file.
ascii-banner -f Standard "Release" > banner.txtInput Modes #
Positional text
ascii-banner "LLM WIKI"Multiple words
ascii-banner LLM WIKIPipe stdin
printf "LLM WIKI" | ascii-bannerScript silence
ascii-banner -q "hidden"
NO_BANNER=1 ascii-banner "hidden"Fonts #
Fonts are bundled FIGlet .flf files. The font picker supports fuzzy matching, so small typos usually resolve to a nearby font.
List names
Show bundled fonts and metadata without rendering your text.
ascii-banner listList a tag
Filter the font list by category tag.
ascii-banner list blockList a size bucket
Filter the font list by approximate rendered height.
ascii-banner list smPreview all fonts
Render each font name in its own style.
ascii-banner list --previewNamed font
Render once with one bundled font.
ascii-banner -f Slant "Test"Fuzzy font name
Small typos resolve to the closest bundled font.
ascii-banner -f slnt "Test"All fonts
Render your text in every bundled font.
ascii-banner --all "Test"Tag render
Render your text in fonts with a specific tag.
ascii-banner -t gothic "Test"Size render
Render your text in a size bucket. This is multi-font output.
ascii-banner -s xl "Test"Sorted subset
Combine filters and sort by readability.
ascii-banner -t block -s md --sort legibility "Test"Custom font file
Use a local FIGlet .flf file path.
ascii-banner -F /path/to/my-font.flf "Custom"| Tag | Use it when you want |
|---|---|
3d | Depth, perspective, and dimensional effects. |
block | Heavy shapes, dense characters, and strong terminal presence. |
bubble | Rounded and playful letterforms. |
classic | Traditional FIGlet output with broad readability. |
cursive | Script and handwriting styles. |
decorative | Ornamental or elaborate banners. |
digital | LED, LCD, dot matrix, and pixel styles. |
gothic | Blackletter and medieval looks. |
graffiti | Street-art inspired styles. |
lean | Thin, lightweight output. |
mini | Compact banners for small terminals and comments. |
mono | Fixed-width terminal-friendly letterforms. |
sans | Cleaner sans-serif styles. |
serif | Serif styles. |
shadow | Drop-shadow and depth effects. |
slant | Italic or oblique banners. |
tech | Futuristic, sci-fi, and cyber styles. |
weird | Experimental output where style matters more than readability. |
| Size | Height | Good for |
|---|---|---|
xs | 1-3 lines | Compact logs, shell prompts, narrow terminals. |
sm | 4-5 lines | Readable banners without much vertical space. |
md | 6-8 lines | Default documentation and terminal headers. |
lg | 9-12 lines | Hero banners and big terminal moments. |
xl | 13+ lines | Posters, screenshots, and very large outputs. |
Color #
Color uses ANSI escape codes for terminal output. Media export resolves the same color choices into pixels.
# Named colors
ascii-banner -c green "OK"
ascii-banner -c orange "Bitcoin"
# Hex colors
ascii-banner -c "#ff6600" "Fire"
# Rainbow per character
ascii-banner -c rainbow "Party"
# Two-color gradient
ascii-banner -c gradient:red:blue "Fade"
ascii-banner -c gradient:#ff0000:#00ff00 "Xmas"
# Smooth full-spectrum gradient
ascii-banner -c gradient:rainbow "Spectrum"
Success green
ascii-banner -f Slant -c green "OK"Bitcoin orange
ascii-banner -f Slant -c orange "Bitcoin"Terminal cyan
ascii-banner -f Standard -c cyan "Docs"Hot magenta
ascii-banner -f Doom -c magenta "Launch"Exact hex green
ascii-banner -f Small -c "#39ff88" "Prompt"Exact hex orange
ascii-banner -f Small -c "#ff8000" "Sats"Rainbow letters
ascii-banner -f Big -c rainbow "Party"Warm gradient
ascii-banner -f Slant -c gradient:red:yellow "Fire"Cool gradient
ascii-banner -f Slant -c gradient:blue:cyan "Ocean"Hex gradient
ascii-banner -f "ANSI Shadow" -c gradient:#39ff88:#00d5ff "Agent"Rainbow gradient
ascii-banner -f Standard -c gradient:rainbow "Spectrum"Color with border
ascii-banner -f Slant -c orange --border heavy "Signal"Terminal note: redirecting ANSI-colored output to a file preserves escape codes. Use SVG or media export if you need a clean visual asset instead of terminal text.
Layout #
Width
-w controls the maximum output width. Use it when centering, right-aligning, or constraining large fonts.
ascii-banner -w 100 "Wide"Justify
-j left, -j center, and -j right align the rendered banner within the chosen width.
ascii-banner -w 80 -j center "Center"Font fit
If a font is too wide for the terminal, choose a compact font, shorter text, or a wider layout.
ascii-banner -f Small "Compact"Left aligned
ascii-banner -f Standard -w 72 -j left "Left"Centered release
ascii-banner -f Slant -w 100 -j center "Release"Right aligned
ascii-banner -f Small -w 80 -j right "Done"Bordered width
ascii-banner -f Small -w 72 -j center --border single "Build"Narrow font choice
Layout control is most predictable when paired with one explicit font.
ascii-banner -f Small -w 52 -j center "Narrow"Borders #
Borders wrap the final rendered banner. They combine with fonts, color, width, justification, and comments.
ascii-banner --border single "Hi"
ascii-banner --border double "Hi"
ascii-banner --border rounded "Hi"
ascii-banner --border heavy "Hi"
ascii-banner --border ascii "Hi"
# Styled border example
ascii-banner -f Slant -c cyan --border rounded "Deploy"
Single
ascii-banner --border single "Status"Double
ascii-banner --border double "Archive"Rounded
ascii-banner --border rounded "Deploy"Heavy
ascii-banner --border heavy "Warning"ASCII safe
ascii-banner --border ascii "Portable"Centered box
ascii-banner -f Small -w 80 -j center --border double "CI"| Style | Use case |
|---|---|
single | Clean terminal box drawing. |
double | Heavier framed output. |
rounded | Softer terminal framing. |
heavy | High-emphasis headers. |
ascii | Portable output for limited terminals or plain files. |
Comment Formatting #
Use --comment to paste banners into source files without manually prefixing each line.
# Hash comments
ascii-banner --comment python "api"
ascii-banner --comment bash "deploy"
# Slash comments
ascii-banner --comment js "api"
ascii-banner --comment rust "core"
# Block comments
ascii-banner --comment c "api"
ascii-banner --comment css "theme"
# Markup comments
ascii-banner --comment html "banner"
ascii-banner --comment xml "banner"
# SQL-style comments
ascii-banner --comment sql "schema"
Python module
ascii-banner -f Small --comment python "api client"Shell script
ascii-banner -f Small --comment bash "deploy"JavaScript header
ascii-banner -f Small --comment js "router"Rust source
ascii-banner -f Small --comment rust "core"CSS block
ascii-banner -f Small --comment css "theme"HTML marker
ascii-banner -f Small --comment html "layout"SQL migration
ascii-banner -f Small --comment sql "schema"Bordered comment
ascii-banner -f Small --border ascii --comment python "settings"Supported names include bash, c, cpp, css, go, haskell, hs, html, java, javascript, js, lua, perl, python, ruby, rust, sh, shell, sql, ts, typescript, and xml.
SVG Output #
SVG output creates pure-vector files for supported block and double-line fonts. It is useful for web pages, stickers, plotters, and resolution-independent assets.
# Write SVG to a file
ascii-banner -f "ANSI Shadow" --svg out.svg "LLM WIKI"
# Write SVG to stdout
ascii-banner -f "ANSI Shadow" --svg - "LLM WIKI" > out.svg
# Pick the block rendering mode
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode extend "LLM WIKI"
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode default "LLM WIKI"
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode inset "LLM WIKI"
# Tune double-line geometry and merge adjacent rectangles
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-stroke 15 --svg-gap 20 --svg-merge "LLM WIKI"
File output
ascii-banner -f "ANSI Shadow" --svg hero.svg "LLM WIKI"Stdout pipeline
ascii-banner -f "ANSI Shadow" --svg - "Logo" > logo.svgDefault mode
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode default "A"Inset mode
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode inset "A"Extended blocks
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-mode extend "A"Smaller SVG
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-merge "LLM"Double-line tuning
ascii-banner -f "ANSI Shadow" --svg out.svg --svg-stroke 12 --svg-gap 18 "Box"README asset
ascii-banner -f "ANSI Shadow" --svg docs/hero.svg --svg-merge "Project"Compatibility note: SVG export intentionally fails on unsupported glyphs so you know when a FIGlet font cannot be represented by the rectangle renderer.
Animations #
Animations can play in an interactive terminal or be exported to media files. In non-interactive output without --export, the command prints the final static frame.
# Play in a terminal
ascii-banner --animate reveal "Deploy"
ascii-banner -f "ANSI Shadow" -c gradient:green:cyan --animate matrix "LLM WIKI"
# Deterministic randomized animation
ascii-banner --animate decrypt --charset hex --seed 7 "Secure"
# Direction and reveal unit modifiers
ascii-banner --animate wipe --direction right "Deploy"
ascii-banner --animate print --by line "Release"
# Color and palette modifiers
ascii-banner --animate colorshift --palette rainbow "Party"
ascii-banner --animate glitch --intensity 0.2 "Incident"
Reveal by character
ascii-banner --animate reveal --by char "Deploy"Reveal by line
ascii-banner --animate print --by line "Release"Wipe from right
ascii-banner --animate wipe --direction right "Deploy"Slide upward
ascii-banner --animate slide --direction up "Launch"Middle out rows
ascii-banner --animate middleout --axis rows "Build"Slice columns
ascii-banner --animate slice --axis cols "Split"Hex decrypt
ascii-banner --animate decrypt --charset hex --seed 7 "Secure"Binary matrix
ascii-banner --animate matrix --charset binary --seed 21 "Node"Low glitch
ascii-banner --animate glitch --intensity 0.15 "Incident"High sparkle
ascii-banner --animate sparkle --intensity 0.75 "Shiny"Rainbow palette
ascii-banner --animate colorshift --palette rainbow "Party"Fire palette
ascii-banner --animate colorshift --palette fire "Heat"Ocean palette
ascii-banner --animate waves --palette ocean "Tide"Seeded random
ascii-banner --animate random --seed 42 "Stable"Timing control
ascii-banner --animate unfurl --fps 18 --duration 2.5 "Slow"Laser line scan
ascii-banner -c orange --animate laser --seed 21 "Bitcoin"Compatibility rules
| Rule | Reason |
|---|---|
--export requires --animate | Exports are built from animation frames. |
--animate cannot be combined with --svg | SVG output is a static vector renderer; animation export uses raster frames. |
--animate and --export cannot be combined with --all, --tag, or --size | Animation operates on one resolved banner at a time. |
Default FPS is 12, or 24 when exporting video | Terminal/GIF previews stay small, while video gets smoother motion by default. |
| Effect group | Effects | Useful modifiers |
|---|---|---|
| Reveal | reveal, unfurl, print, random, wipe, middleout, slice, slide | --direction, --by, --axis, --seed |
| Terminal noise | matrix, decrypt, glitch, vhs, errorcorrect | --charset, --seed, --intensity |
| Color and light | scan, colorshift, sparkle, fireworks, laser, thunderstorm | --palette, --intensity, --seed |
| Motion and atmosphere | waves, rain, pour, burn, smoke, pipes, starfield, bubbles, swarm, blackhole, synthgrid | --axis, --palette, --intensity, --seed |
Media Export #
Use --export with --animate. The output extension chooses the encoder.
# GIF
ascii-banner --animate unfurl --loop 0 --export deploy.gif "Deploy"
# WebP
ascii-banner --animate reveal --loop 0 --export deploy.webp "Deploy"
# MP4 and WebM
ascii-banner --animate matrix --seed 7 --duration 3 --loop 0 --export banner.mp4 "Launch"
ascii-banner --animate matrix --seed 7 --duration 3 --loop 0 --export banner.webm "Launch"
# Export several formats in one run
ascii-banner --animate reveal --loop 0 --export banner.gif --export banner.mp4 --export banner.webm "Launch"
# Control raster cell size and background
ascii-banner -f Slant -c orange --animate scan --loop 0 --cell-width 8 --cell-height 16 --bg black --export bitcoin-scan.gif "Bitcoin"
Looping GIF
ascii-banner --animate laser --loop 0 --export hero.gif "Launch"Animated WebP
ascii-banner --animate waves --loop 0 --export hero.webp "Launch"MP4 video
ascii-banner --animate matrix --duration 3 --export hero.mp4 "Launch"WebM video
ascii-banner --animate matrix --duration 3 --export hero.webm "Launch"Multiple outputs
ascii-banner --animate reveal --export hero.gif --export hero.mp4 "Launch"Pixel cell sizing
ascii-banner --animate scan --cell-width 8 --cell-height 16 --export scan.gif "Grid"Custom background
ascii-banner -c orange --animate burn --bg "#050200" --export burn.gif "Fire"Custom media font
ascii-banner --animate print --media-font ./Mono.ttf --export type.gif "Mono"| Format | Requires | Best for |
|---|---|---|
.gif | ascii-banner[media] | README files, issue comments, simple previews. |
.webp | ascii-banner[media] | Modern web pages with smaller animated assets. |
.mp4 | ascii-banner[media] and ffmpeg | Broad browser video support with H.264. |
.webm | ascii-banner[media] and ffmpeg | Open web video workflows. |
Recipes #
ascii-banner -f Slant -c green --border rounded "Release 1.2.0"ascii-banner -f Standard -c cyan "Tests"
pytestascii-banner -f Small --comment python "api client" > banner.pyascii-banner -f "ANSI Shadow" --svg hero.svg --svg-merge "LLM WIKI"ascii-banner -f Slant -c orange --animate matrix --duration 3 --fps 15 --seed 21 --loop 0 --export bitcoin.gif "Bitcoin"ascii-banner list --preview
ascii-banner -t tech --sort legibility "Agent"Flag Reference #
| Flag | Short | Description |
|---|---|---|
text | Text to render, or pipe stdin. | |
--font NAME | -f | Bundled font name with fuzzy matching. |
--font-file PATH | -F | Load a custom FIGlet .flf font. |
--all | -a | Render text in all available fonts. |
--tag TAG | -t | Filter multi-font output by category tag. |
--size SIZE | -s | Filter by xs, sm, md, lg, or xl. |
--sort KEY | Sort multi-font output by name, size, or legibility. | |
--width N | -w | Maximum output width. |
--color COLOR | -c | Named color, hex, rainbow, gradient pair, or rainbow gradient. |
--justify ALIGN | -j | left, center, or right. |
--border STYLE | single, double, rounded, heavy, or ascii. | |
--comment LANG | Wrap output as a language-specific source comment. | |
--quiet | -q | Suppress output. |
--svg [PATH] | Emit vector SVG. No path or - writes to stdout. | |
--svg-mode MODE | default, inset, or extend. | |
--svg-stroke N | Line thickness for double-line SVG glyphs. | |
--svg-gap N | Gap between parallel SVG double lines. | |
--svg-merge | Merge adjacent aligned rectangles to reduce SVG size. | |
--animate EFFECT | Play or export one animation effect. | |
--export PATH | Export animation to .gif, .webp, .mp4, or .webm. Repeatable. | |
--fps N | Animation frames per second. | |
--duration SECONDS | Animation length. | |
--loop N | Animation loop count. 0 means infinite where supported. | |
--seed N | Deterministic seed for randomized effects. | |
--direction DIR | left, right, up, or down. | |
--by MODE | char, line, row, or column. | |
--axis AXIS | horizontal, vertical, both, rows, or cols. | |
--charset CHARS | ascii, binary, hex, or literal characters. | |
--intensity N | Effect strength from 0 to 1. | |
--palette NAME | accent, rainbow, fire, or ocean. | |
--cell-width N | Media export character cell width in pixels. | |
--cell-height N | Media export character cell height in pixels. | |
--media-font PATH | Optional monospace TTF, OTF, or TTC font for media export. | |
--bg COLOR | Media export background color name or hex color. |
Flag examples
Each option below has a concrete command. Previewable commands show rendered output; export and local-file commands show what the terminal render looks like before writing files.
Text argument
ascii-banner "Text"Font
ascii-banner --font Slant "Font"Font file
ascii-banner --font-file /path/to/my-font.flf "Custom"All fonts
ascii-banner --all "All"Tag filter
ascii-banner --tag tech "AI"Size filter
ascii-banner --size sm "Tiny"Sort order
ascii-banner --tag block --sort legibility "Sort"Width
ascii-banner --width 72 "Width"Color
ascii-banner --color orange "Color"Justify
ascii-banner --width 72 --justify right "Right"Border
ascii-banner --border double "Box"Comment
ascii-banner --comment python "module"Quiet
ascii-banner --quiet "Hidden"SVG stdout
ascii-banner -f "ANSI Shadow" --svg - "SVG"SVG default mode
ascii-banner -f "ANSI Shadow" --svg - --svg-mode default "Mode"SVG inset mode
ascii-banner -f "ANSI Shadow" --svg - --svg-mode inset "Mode"SVG extend mode
ascii-banner -f "ANSI Shadow" --svg - --svg-mode extend "Mode"SVG stroke
ascii-banner -f "ANSI Shadow" --svg - --svg-stroke 12 "Line"SVG gap
ascii-banner -f "ANSI Shadow" --svg - --svg-gap 18 "Gap"SVG merge
ascii-banner -f "ANSI Shadow" --svg - --svg-merge "Merge"Animate
ascii-banner --animate reveal "Motion"Export
ascii-banner --animate reveal --export motion.gif "Motion"FPS
ascii-banner --animate unfurl --fps 18 "FPS"Duration
ascii-banner --animate scan --duration 1.5 "Time"Loop
ascii-banner --animate reveal --loop 0 --export loop.gif "Loop"Seed
ascii-banner --animate decrypt --seed 42 "Seed"Direction
ascii-banner --animate wipe --direction down "Down"Reveal unit
ascii-banner --animate print --by line "Line"Axis
ascii-banner --animate middleout --axis rows "Rows"Charset
ascii-banner --animate matrix --charset hex --seed 21 "Hex"Intensity
ascii-banner --animate sparkle --intensity 0.8 "Glow"Palette
ascii-banner --animate colorshift --palette fire "Fire"Cell size
ascii-banner --animate scan --cell-width 8 --cell-height 16 --export cells.gif "Cells"Media font
ascii-banner --animate print --media-font ./Mono.ttf --export type.gif "Mono"Background
ascii-banner --color orange --animate burn --bg "#050200" --export bg.gif "BG"Subcommands
List fonts
ascii-banner listList by tag
ascii-banner list blockList by size
ascii-banner list smList with previews
ascii-banner list --previewShow tags
ascii-banner tags| Command | Description | Examples |
|---|---|---|
ascii-banner list | List bundled fonts with metadata. | ascii-banner list |
ascii-banner list <tag|size> | List fonts filtered by category tag or size bucket. | ascii-banner list blockascii-banner list sm |
ascii-banner list --preview | List fonts and render each font name in its own style. | ascii-banner list --preview |
ascii-banner tags | Show category tags, size buckets, border styles, and comment formats. | ascii-banner tags |
Environment
| Variable | Behavior | Example |
|---|---|---|
NO_BANNER | Suppresses all output when set to any value except an empty string or 0. | NO_BANNER=1 ascii-banner "hidden" |
Troubleshooting #
Font not found
Use ascii-banner list or ascii-banner list --preview. Fuzzy matching helps, but exact names are safest for scripts.
Colors look wrong
Check terminal ANSI support. For files, prefer SVG or media export instead of redirecting ANSI-colored terminal text.
GIF or WebP export fails
Install Pillow with pip install "ascii-banner[media]".
MP4 or WebM export fails
Install ffmpeg and make sure it is on PATH.
SVG export rejects a font
Use a supported block or double-line font such as ANSI Shadow, or use media export for arbitrary fonts.
Animation differs between runs
Set --seed for randomized effects such as matrix, decrypt, glitch, sparkle, and fireworks.
More by nvk #
Other projects from nvk that pair well with terminal-first tools and LLM-assisted workflows.
llm-wiki.net
LLM Wiki is a research and knowledge-base system for collecting sources, tracking provenance, and compiling LLM-readable project docs.
learntoprompt.org
Learn to Prompt is a practical prompt engineering guide for writing clearer instructions and building better language-model workflows.