Live Video to ASCII Art Streamer
Convert your live webcam video to real-time ASCII art. Adjust resolution, character set, colors, and font size. Export frames as text or image.
About
Real-time video-to-ASCII conversion maps each block of pixels to a typographic character based on perceptual luminance L = 0.299R + 0.587G + 0.114B. The formula follows ITU-R BT.601 luma coefficients, weighting green heavily because human vision is most sensitive to that band. A wrong character ramp or linear (non-perceptual) grayscale produces muddy, unreadable output. This tool samples your webcam feed at display refresh rate, downscales to a configurable grid, and renders the result as a monospace character matrix in the browser.
Color mode preserves the average RGB of each cell block and applies it as inline text color, producing a chromatic ASCII image. Resolution is governed by cell size in pixels. Smaller cells yield higher detail but demand more characters per frame. The tool approximates cinematic look under typical indoor lighting. Low-contrast or backlit scenes will collapse detail into a narrow character band. Pro tip: face a light source for best tonal separation.
Formulas
Each video frame is divided into a grid of rectangular cells. For each cell, the average color is computed from all pixels within that block.
where L is perceptual luminance (0 - 255), and R, G, B are the averaged red, green, and blue channel values of all pixels in the cell.
where i is the index into the character ramp of length n. When inversion is enabled, the index becomes n β 1 β i, reversing light and dark mapping. The cell dimensions are derived from font metrics.
where cellW is the character width in pixels and cellH = cellW Γ 2 to compensate for the aspect ratio of monospace glyphs (typically ~1:2 width-to-height).
Reference Data
| Character | Approx. Density | Luminance Range | Typical Use |
|---|---|---|---|
| (space) | 0% | 230 - 255 | Highlights, sky, white backgrounds |
| . | 10% | 205 - 230 | Skin highlights, pale surfaces |
| : | 20% | 180 - 205 | Light mid-tones |
| - | 30% | 155 - 180 | Mid-tone transitions |
| = | 40% | 130 - 155 | Clothing, walls |
| + | 50% | 105 - 130 | Mid-shadows |
| * | 60% | 80 - 105 | Shadow regions |
| # | 70% | 55 - 80 | Dark hair, deep shadows |
| % | 85% | 28 - 55 | Very dark areas |
| @ | 100% | 0 - 28 | Black, darkest regions |
| Extended Ramp (70 chars) | |||
| $@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. | 0 - 255 | Maximum tonal resolution across full luminance spectrum | |
| Block Characters (Unicode) | |||
| β | 100% | 0 - 51 | Full block fill |
| β | 75% | 51 - 102 | Dense shade |
| β | 50% | 102 - 153 | Medium shade |
| β | 25% | 153 - 204 | Light shade |
| 0% | 204 - 255 | Empty / white | |
| ITU-R BT.601 vs BT.709 Luma Coefficients | |||
| BT.601 | RΓ0.299 + GΓ0.587 + BΓ0.114 - Standard Definition | ||
| BT.709 | RΓ0.2126 + GΓ0.7152 + BΓ0.0722 - High Definition | ||
| Recommended Settings by Scene | |||
| Well-lit face | 80-120 cols | 10-char ramp | Monochrome or color |
| Low light | 60-80 cols | Extended ramp | Inverted, high contrast |
| Outdoor / bright | 100-160 cols | Block chars | Color mode recommended |
| Text / document | 120+ cols | Binary (space + @) | Monochrome, inverted |