User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
Category Media Tools
100
8px
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

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.

ascii art webcam video to text real-time ascii ascii converter live stream pixel art character art

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.

L = 0.299 β‹… R + 0.587 β‹… G + 0.114 β‹… B

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.

i = floor(L255 β‹… (n βˆ’ 1))

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.

cols = floor(WvideocellW) rows = floor(HvideocellH)

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

CharacterApprox. DensityLuminance RangeTypical Use
(space)0%230 - 255Highlights, sky, white backgrounds
.10%205 - 230Skin highlights, pale surfaces
:20%180 - 205Light mid-tones
-30%155 - 180Mid-tone transitions
=40%130 - 155Clothing, walls
+50%105 - 130Mid-shadows
*60%80 - 105Shadow regions
#70%55 - 80Dark hair, deep shadows
%85%28 - 55Very dark areas
@100%0 - 28Black, darkest regions
Extended Ramp (70 chars)
$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. 0 - 255Maximum tonal resolution across full luminance spectrum
Block Characters (Unicode)
β–ˆ100%0 - 51Full block fill
β–“75%51 - 102Dense shade
β–’50%102 - 153Medium shade
β–‘25%153 - 204Light shade
0%204 - 255Empty / white
ITU-R BT.601 vs BT.709 Luma Coefficients
BT.601RΓ—0.299 + GΓ—0.587 + BΓ—0.114 - Standard Definition
BT.709RΓ—0.2126 + GΓ—0.7152 + BΓ—0.0722 - High Definition
Recommended Settings by Scene
Well-lit face80-120 cols10-char rampMonochrome or color
Low light60-80 colsExtended rampInverted, high contrast
Outdoor / bright100-160 colsBlock charsColor mode recommended
Text / document120+ colsBinary (space + @)Monochrome, inverted

Frequently Asked Questions

Monospace characters are roughly twice as tall as they are wide. The tool compensates by sampling rectangular cells where height equals 2Γ— width. If your font or browser zoom distorts this ratio, the output will appear stretched. Adjust the font size slider or reset browser zoom to 100%.
A longer ramp (more unique characters) provides finer tonal gradation. The default 10-character ramp maps luminance into 10 discrete bands. The extended 70-character ramp maps into 70 bands, capturing subtle shadow and highlight detail. For high-contrast scenes, a short ramp is sufficient. For portraits or nuanced lighting, use the extended ramp.
Color mode wraps each character in an inline-styled span element, increasing DOM node count proportionally to resolution. At 120 columns and 60 rows, that is 7,200 styled spans regenerated every frame. Most modern browsers handle this at 15-30 fps. If you experience lag, reduce column count or switch to monochrome mode which renders as a single text node.
The BT.601 luminance formula produces values concentrated in the lower range when the scene is underlit, causing most characters to map to the dense end of the ramp. Enable the Invert toggle to reverse the mapping so dark pixels become spaces and bright pixels become dense characters. This often produces a more readable result in dim environments.
Use the Copy Frame button to copy the current ASCII frame as plain text to your clipboard. It preserves line breaks and is paste-ready for terminals, code editors, or text files. The Download Image button renders the current frame onto a canvas and exports it as a PNG file with the monospace font baked in, suitable for sharing on social media or embedding in documents.
The tool requests 640Γ—480 from the browser. The actual resolution depends on your camera hardware and browser constraints. Higher source resolution does not improve ASCII output because the image is downsampled to the configured column count regardless. A 640Γ—480 source at 120 columns means each cell averages roughly 5Γ—10 pixels, which is more than sufficient for character mapping.