ASCII Art in README Files
Why ASCII Art Belongs in READMEs
A README is the front door to your project. ASCII banners at the top of a README create instant visual identity — they signal what the project is before a visitor reads a single line of prose. Well-known projects like rustfmt, httpie, and starship use ASCII logos to reinforce their brand on GitHub.
But ASCII art in documentation comes with constraints. It must render correctly across devices, stay readable in plain text, and not break layout in markdown viewers. Done right, it adds personality without sacrificing usability.
Choosing the Right Font Size
README banners need to work in two contexts: GitHub's rendered markdown view and raw text in a terminal editor. This dual constraint limits your font choices:
| Font Size | Max Characters | README Fit |
|---|---|---|
| Full (FIGlet standard) | 6–8 char project name | Good for short names |
| Small (FIGlet small) | 10–12 char project name | Best balance |
| Mini (custom/Sublime) | 15+ char project name | Long project names |
| Unicode block | 2–4 char project name | Logo-style, risky |
Rule of thumb: Your banner should not exceed 72 characters wide. GitHub renders READMEs at roughly 80 columns, and some mobile views are narrower. Anything wider causes horizontal scrolling.
Example: Short Project Name
____ _ _
/ ___|| |__ (_)_ __ ___
| | | '_ \| | '_ \ / _ \
| |___| | | | | | | | __/
\____|_| |_|_|_| |_|\___|
Example: Longer Project Name (small font)
_ _____ __ ___ ___ ___ ___
/ \|_ _|/ /_ / _ \|_ _|_ _/ __|
/ _ \ | |/ / __| |_| || | | |\__ \
_/ \_ \|_|\_\\__|\___/|___|___|___/
Formatting Best Practices
Center Alignment
Center your banner in the README using HTML or markdown alignment. Since standard markdown doesn't support centering, use an HTML snippet:
<div align="center">
/ | ___ _ __ ___ _ __ ___
| | _ / _ \ ' ` _ | ' \ / _
| || | / | | | | | |) | /
_|_|| || || ./ _|
||
**MyProject** — A thing that does stuff
</div>
Banner + Tagline Pattern
The most effective README headers pair a banner with a one-line description:
__ __
| \/ | ___ _ __ ___ ___
| |\/| |/ _ \| '_ ` _ \ / _ \
| | | | (_) | | | | | | __/
|_| |_|\___/|_| |_| |_|\___|
Fast, type-safe configuration for Node.js
This pattern works because the banner draws the eye and the tagline delivers the value proposition immediately.
Badges Below the Banner
Place your CI/coverage badges directly under the banner and tagline. This keeps the visual hierarchy clean:
[ASCII BANNER]
Short description of the project
[]() []()
Common Mistakes to Avoid
1. Using Proportional Fonts
ASCII art only works with monospace fonts. GitHub renders code blocks in monospace, but inline text uses proportional fonts. Always wrap your banner in a code block (triple backticks).
2. Ignoring Dark Mode
GitHub supports light and dark themes. Your banner should be readable in both. Avoid relying on specific foreground/background colors — stick to the default code block styling.
3. Overly Complex Art
Elaborate ASCII logos look impressive on a desktop but become illegible on mobile. A simple text banner at a small font size almost always outperforms a detailed ASCII illustration.
4. Non-ASCII Characters
Characters like █, ▓, and ░ may render as tofu (□) on systems without the right font fallbacks. Stick to standard ASCII characters (codes 32–126) for maximum compatibility.
Embedding Inline vs. Code Blocks
You have two options for placing ASCII art in markdown:
| Method | Pros | Cons |
|---|---|---|
| Fenced code block | Monospace guaranteed, syntax highlighting off | Takes full width, has scrollbar on overflow |
| Markdown image | Pixel-perfect control, supports color | Not readable in raw text, accessibility concerns |
HTML <pre> | More layout control | Verbose, may conflict with sanitizers |
Recommendation: Use fenced code blocks for text banners. Use rendered images only when you need color or complex illustrations, and always provide alt text.
Generating Banners for READMEs
The fastest workflow for README banners:
- Type your project name into an ASCII art generator
- Select a narrow font (slant, small, or thin)
- Verify the output is under 72 columns wide
- Copy into a fenced code block in your README
- Check rendering on GitHub, GitLab, and mobile
Don't hand-draw banners — the alignment is almost always off. Generated output from FIGlet-based tools guarantees proper character spacing.
Related Guides
Try It Yourself
Generate a polished ASCII banner for your next README. Pick a font, preview it live, and copy the formatted output ready for markdown.