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.

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.

Effects30 supported animations
TextLLM-WIKI and Bitcoin
FormatGIF for broad README and browser support
DeterminismSeeded with --seed 21
Font

-f Slant uses the Slant FIGlet font.

Timing

--duration 1.6 --fps 8 keeps each preview short and small.

Seed

--seed 21 makes randomized effects reproducible.

Intensity

--intensity 0.35 uses moderate effect strength where supported.

Raster size

--cell-width 7 --cell-height 14 controls the exported character cell.

Background

--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 show normal terminal output variations: font choices, color styling, borders, layout, and comment formatting. Each card includes the exact command that produced the output.

Examples26 static variations
OutputPlain terminal text previews
CommandsFlags shown under every example
GroupsBasics, fonts, colors, borders, layout, comments

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 #

Packageascii-banner
RuntimePython command line tool
Fonts328 bundled FIGlet fonts
Core depsZero required dependencies
# 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 Big

Color 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.txt

Input Modes #

Positional text

ascii-banner "LLM WIKI"

Multiple words

ascii-banner LLM WIKI

Pipe stdin

printf "LLM WIKI" | ascii-banner

Script 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 list

List a tag

Filter the font list by category tag.

ascii-banner list block

List a size bucket

Filter the font list by approximate rendered height.

ascii-banner list sm

Preview all fonts

Render each font name in its own style.

ascii-banner list --preview

Named 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"
TagUse it when you want
3dDepth, perspective, and dimensional effects.
blockHeavy shapes, dense characters, and strong terminal presence.
bubbleRounded and playful letterforms.
classicTraditional FIGlet output with broad readability.
cursiveScript and handwriting styles.
decorativeOrnamental or elaborate banners.
digitalLED, LCD, dot matrix, and pixel styles.
gothicBlackletter and medieval looks.
graffitiStreet-art inspired styles.
leanThin, lightweight output.
miniCompact banners for small terminals and comments.
monoFixed-width terminal-friendly letterforms.
sansCleaner sans-serif styles.
serifSerif styles.
shadowDrop-shadow and depth effects.
slantItalic or oblique banners.
techFuturistic, sci-fi, and cyber styles.
weirdExperimental output where style matters more than readability.
SizeHeightGood for
xs1-3 linesCompact logs, shell prompts, narrow terminals.
sm4-5 linesReadable banners without much vertical space.
md6-8 linesDefault documentation and terminal headers.
lg9-12 linesHero banners and big terminal moments.
xl13+ linesPosters, 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"
StyleUse case
singleClean terminal box drawing.
doubleHeavier framed output.
roundedSofter terminal framing.
heavyHigh-emphasis headers.
asciiPortable 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.svg

Default 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

RuleReason
--export requires --animateExports are built from animation frames.
--animate cannot be combined with --svgSVG output is a static vector renderer; animation export uses raster frames.
--animate and --export cannot be combined with --all, --tag, or --sizeAnimation operates on one resolved banner at a time.
Default FPS is 12, or 24 when exporting videoTerminal/GIF previews stay small, while video gets smoother motion by default.
Effect groupEffectsUseful modifiers
Revealreveal, unfurl, print, random, wipe, middleout, slice, slide--direction, --by, --axis, --seed
Terminal noisematrix, decrypt, glitch, vhs, errorcorrect--charset, --seed, --intensity
Color and lightscan, colorshift, sparkle, fireworks, laser, thunderstorm--palette, --intensity, --seed
Motion and atmospherewaves, 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"
FormatRequiresBest for
.gifascii-banner[media]README files, issue comments, simple previews.
.webpascii-banner[media]Modern web pages with smaller animated assets.
.mp4ascii-banner[media] and ffmpegBroad browser video support with H.264.
.webmascii-banner[media] and ffmpegOpen web video workflows.

Recipes #

Release header
ascii-banner -f Slant -c green --border rounded "Release 1.2.0"
CI logs
ascii-banner -f Standard -c cyan "Tests"
pytest
Python file banner
ascii-banner -f Small --comment python "api client" > banner.py
README image
ascii-banner -f "ANSI Shadow" --svg hero.svg --svg-merge "LLM WIKI"
Animated social preview
ascii-banner -f Slant -c orange --animate matrix --duration 3 --fps 15 --seed 21 --loop 0 --export bitcoin.gif "Bitcoin"
Font discovery
ascii-banner list --preview
ascii-banner -t tech --sort legibility "Agent"

Flag Reference #

FlagShortDescription
textText to render, or pipe stdin.
--font NAME-fBundled font name with fuzzy matching.
--font-file PATH-FLoad a custom FIGlet .flf font.
--all-aRender text in all available fonts.
--tag TAG-tFilter multi-font output by category tag.
--size SIZE-sFilter by xs, sm, md, lg, or xl.
--sort KEYSort multi-font output by name, size, or legibility.
--width N-wMaximum output width.
--color COLOR-cNamed color, hex, rainbow, gradient pair, or rainbow gradient.
--justify ALIGN-jleft, center, or right.
--border STYLEsingle, double, rounded, heavy, or ascii.
--comment LANGWrap output as a language-specific source comment.
--quiet-qSuppress output.
--svg [PATH]Emit vector SVG. No path or - writes to stdout.
--svg-mode MODEdefault, inset, or extend.
--svg-stroke NLine thickness for double-line SVG glyphs.
--svg-gap NGap between parallel SVG double lines.
--svg-mergeMerge adjacent aligned rectangles to reduce SVG size.
--animate EFFECTPlay or export one animation effect.
--export PATHExport animation to .gif, .webp, .mp4, or .webm. Repeatable.
--fps NAnimation frames per second.
--duration SECONDSAnimation length.
--loop NAnimation loop count. 0 means infinite where supported.
--seed NDeterministic seed for randomized effects.
--direction DIRleft, right, up, or down.
--by MODEchar, line, row, or column.
--axis AXIShorizontal, vertical, both, rows, or cols.
--charset CHARSascii, binary, hex, or literal characters.
--intensity NEffect strength from 0 to 1.
--palette NAMEaccent, rainbow, fire, or ocean.
--cell-width NMedia export character cell width in pixels.
--cell-height NMedia export character cell height in pixels.
--media-font PATHOptional monospace TTF, OTF, or TTC font for media export.
--bg COLORMedia 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 list

List by tag

ascii-banner list block

List by size

ascii-banner list sm

List with previews

ascii-banner list --preview

Show tags

ascii-banner tags
CommandDescriptionExamples
ascii-banner listList bundled fonts with metadata.ascii-banner list
ascii-banner list <tag|size>List fonts filtered by category tag or size bucket.ascii-banner list block
ascii-banner list sm
ascii-banner list --previewList fonts and render each font name in its own style.ascii-banner list --preview
ascii-banner tagsShow category tags, size buckets, border styles, and comment formats.ascii-banner tags

Environment

VariableBehaviorExample
NO_BANNERSuppresses 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.