A short looping video of a peacock rendered entirely in ASCII characters — every frame is text, no pixels of the bird, just monospace glyphs. The tail fan opens and closes on a 2-second loop, with the eye-spots punched out as negative space.
Watch it inline below. It is a 2-second, 720×360 MP4 (≈110 KB) and loops automatically; click to pause.
How it was made
- Draw a peacock each frame with PIL: a fan of rotated ellipses for the tail (spread animated by a sine), a solid body, neck, head, beak, crest, and legs.
- Downsample each frame to an 80×30 character grid by averaging brightness per cell, then map darkness to a ramp of glyphs
.:-=+*#%@. - Render the glyph grid back to an image with a monospace font (Consolas) on a dark background, tinted teal.
- Encode the 60 frames with ffmpeg (libx264, yuv420p, faststart) into a looping MP4.
The static ASCII peacock
One frame, frozen, as plain text — copy it anywhere:
-%* *%-
#%: %-*++*-% :%#
-- -#-%+%+%%%%+%+%-#- --
:%*#+%+%@@@@@@@@@@%+%+#*%:
-+--#:#@@@@@@@@@@@@@@@@@@#:#--+-
#*=%@@@@@@@@@@@@@@@@@@@@@@@@%=*#
.-:+#+@@@@@@@@@@@@@@@@@@@@@@@@@@+#+:-.
##+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+##
-#=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=#-
.%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%%.
#=-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-=#
:++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++:
*#.#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#.#*
*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*
=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=
.*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*.
.+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+.
=%@@@@@@@@@@@@@@@@@@@@@@@@@@%=
:+%@@@@@@@@@@@@@@@@@@@@%+:
:=#%@@@@@@@@@@@@%#=:
#@@@@@@@@@@@@%
*@@@@@@@@@@@@#
*@@@@@@@@@@*.
.=*%@@%#+:
. .
.: ..
Reuse the pipeline
The same five-step pipeline works for any subject: render it as geometry, ASCII-ify it, tint it, encode it. Swap the drawing routine for a logo, a mascot, or a product shot and you get a lightweight looping hero video that weighs less than a single photograph.