How LED Dot-Matrix Displays Work: A Plain-English Guide
Most LED signs never light all their dots at once. Here is how scanning, tiny fonts, pixel pitch and glow make a moving message, and how LED Scroller rebuilds it in your browser.
A moving-message sign looks simple: a dark panel, a grid of dots, words gliding past. Underneath, it relies on an electronic shortcut and a quirk of human vision. Many signs never light all their LEDs at once. They flash one row at a time, so fast that your eyes blend the flicker into a steady picture.
This guide walks from a single LED up to a full scrolling banner: tiny fonts, what "P10" means, how bright real signs are, why they glow, and how LED Scroller rebuilds the look in a web browser. For where these signs came from, see our short history of scrolling LED signs.
What an LED actually is
LED stands for light-emitting diode, a semiconductor part that lets current flow easily in one direction only. When current flows the right way, electrons and "holes" (gaps where an electron is missing) are driven into a thin active region, where they recombine and release energy as light. This is electroluminescence: light made directly from electricity, with no hot filament.
The colour comes from the semiconductor material, not from a tinted cover. Each colour also needs a different push before it lights, called the forward voltage. Georgia State University's HyperPhysics reference gives roughly 1.6 to 2.0 volts for red LEDs and 2.5 to 3.7 volts for blue. In practice, signs use driver chips that control the LED current, such as the MAX7219 or the constant-current drivers on Adafruit's RGB panels.
From one LED to a grid of rows and columns
A dot-matrix display is many LEDs arranged in a rectangle. A popular hobby module is 8 by 8, or 64 LEDs. A common outdoor module called P10 has 32 columns by 16 rows, and large signs tile many modules together.
Rather than giving each LED its own wire, the LEDs share wiring. In a typical single-colour matrix, every LED in a row shares one line and every LED in a column shares another. Activate one row and one column, and the LED where they cross lights up. An 8 by 8 grid then needs 16 control lines instead of 64.
The catch: activate two rows and two columns together and four dots light, including two you may not want. So signs stop trying to light everything at once.
Multiplexing: one row at a time, faster than the eye
Signs like these use multiplexing, also called scanning. The controller lights row 1 with its pattern of columns, switches it off, lights row 2 with its own pattern, and so on, then starts again at the top. At any instant only one row, or a small group of rows, is actually on.
The cycle is fast. The MAX7219, a common driver for 8 by 8 matrices, controls up to 64 LEDs with built-in multiplex scan circuitry. Its datasheet gives a typical scan rate of 800 Hz with all eight lines scanned, so the display is redrawn about 800 times a second. It also dims the LEDs with a pulse-width modulator that scales the average current in 16 steps.
Adafruit's 32 by 16 RGB panel scales this up: it lights two rows (64 pixels) at a time and steps through eight pairs of rows, which sellers call "1/8 scan". Its LEDs can only be fully on or off, so shades and mixed colours come from redrawing the whole panel many times very quickly.
Why the picture looks steady
Your eyes do not react instantly to changes in light, so fast flashes merge into steady brightness. This is often called persistence of vision; scientists measure it as the flicker fusion threshold. A 2015 study in Scientific Reports notes that earlier research put the highest visible flicker rate at about 50 to 90 Hz.
The same study found that with sharp, high-contrast edges its median viewer only stopped seeing flicker artifacts above about 500 Hz, and it cites work showing that fast eye movements (saccades) reveal pulsed LEDs at very high rates. That helps explain why driver chips scan in the hundreds of hertz.
Why signs can look striped on camera
A camera records short slices of time instead of averaging light like your eyes. Lighting maker ENTTEC explains that most LED products dim by switching rapidly on and off; when a camera's timing does not match that switching, footage shows rolling bands or strobing, and a rolling shutter lets each row of the image catch a different part of the cycle.
Fonts on a tiny grid
With so few dots, letters are designed dot by dot. The classic text size is 5 dots wide by 7 tall, enough for recognisable capitals and digits. Character displays use the same idea: Hitachi's HD44780U controller, used in many character LCD modules, holds 208 built-in characters in 5 by 8 dot cells (the eighth line is the cursor position) plus 32 characters in taller 5 by 10 cells.
Here is a capital A on a 5 by 7 grid, where ● is a lit LED and ○ an unlit one:
| Row | Col 1 | Col 2 | Col 3 | Col 4 | Col 5 |
|---|---|---|---|---|---|
| Row 1 | ○ | ● | ● | ● | ○ |
| Row 2 | ● | ○ | ○ | ○ | ● |
| Row 3 | ● | ○ | ○ | ○ | ● |
| Row 4 | ● | ● | ● | ● | ● |
| Row 5 | ● | ○ | ○ | ○ | ● |
| Row 6 | ● | ○ | ○ | ○ | ● |
| Row 7 | ● | ○ | ○ | ○ | ● |
Because scrolling works column by column, read the letter as five columns of seven on/off values: the left leg, three columns each holding a top dot and a crossbar dot, then the right leg. One blank column between letters keeps them apart.
How scrolling works, step by step
Scrolling moves no LEDs. The controller keeps a frame buffer in memory, one on/off value per dot, and the scan shows whatever the buffer holds. To scroll right to left, each step shifts every column one place left, drops the leftmost column and feeds the next column of the message in on the right.
The MD_MAX72XX library for MAX7219 matrices offers exactly this as a "shift left one pixel element" transform, with a callback that supplies the incoming column. Here is the A sliding onto a blank sign:
| Step | Column entering on the right | What a viewer sees |
|---|---|---|
| 1 | Column 1 of the A (rows 2 to 7) | An upright bar at the right edge |
| 2 | Column 2 (rows 1 and 4) | The bar moves one dot left; the top corner appears |
| 3 | Column 3 (rows 1 and 4) | The peak of the letter forms |
| 4 | Column 4 (rows 1 and 4) | Top and crossbar are complete |
| 5 | Column 5 (rows 2 to 7) | The whole A is on the sign |
| 6 | A blank spacer column | A gap opens before the next letter |
Speed is how often a step happens. On a basic sign each step is a whole column, so text moves in one-dot jumps, part of the classic look and one reason short, punchy messages work well (see our LED banner message ideas).
Single colour, RGB and what "P10" means
One colour or full colour
Simple signs are single-colour: one LED per dot, red for example. Full-colour (RGB) panels put a red, a green and a blue LED in every pixel and mix other colours, including white, by varying how long each stays on, at the cost of three times the LEDs, driver outputs and data. For text alone, one bright colour is often enough.
Pixel pitch and the P-number
Pixel pitch is the distance from the centre of one pixel to the centre of the next, in millimetres, written after a P. Display maker Unilumin describes P10 as 10 mm between pixels with 32 by 16 pixels per module, and P5 as 5 mm with 64 by 32. Smaller pitch gives sharper text up close at a higher price; larger pitch suits viewers across a street.
There is no single rule for viewing distance. Daktronics, a large LED sign manufacturer, puts the optimal distance in feet at about three times the pitch in millimetres. Planar's "10x rule" (pitch times 10, in feet) estimates something else: where a viewer with 20/20 vision can no longer pick out individual pixels.
| Pixel pitch | Dots per square metre | Daktronics optimal distance | Planar 10x rule (pixels blend) |
|---|---|---|---|
| P2.5 | 160,000 | About 7.5 ft (2.3 m) | About 25 ft (7.6 m) |
| P5 | 40,000 | About 15 ft (4.6 m) | About 50 ft (15 m) |
| P10 | 10,000 | About 30 ft (9.1 m) | About 100 ft (30 m) |
| P16 | About 3,900 | About 48 ft (14.6 m) | About 160 ft (49 m) |
Brightness, and why LED signs glow
How bright is an LED sign?
Brightness is measured in nits: one candela per square metre, as component distributor DigiKey's explainer puts it. Figures vary by product, setting and content, but the gap is striking.
| Display | Rated or typical brightness |
|---|---|
| TVs, monitors and laptops (DigiKey) | 600 nits or below |
| iPhone 17 Pro (Apple) | 1,000 nits typical maximum; 3,000 nits peak outdoors |
| Gas pumps and some handhelds (DigiKey) | 2,000 to 3,000 nits |
| Screens facing direct sunlight (DigiKey) | About 5,000 nits |
| Philips outdoor LED module 57HUL6483DP | 6,000 nits |
A sunlight-rated sign can be twice as bright as a top phone at its outdoor peak and six times its typical maximum, and phone ratings vary by model. Phone banners work best where the surroundings are dim, such as a concert hall, a night street or a stadium stand: the idea behind a concert banner.
Why LED signs look glowy
Up close, a sign is a field of intensely bright points on a dark background. Many signs sit behind a diffuser, a translucent material that scatters light. Adafruit's guide to LED diffusion stresses that the diffuser's distance from the LEDs matters even more than the material: the further back it sits, the more the separate points blend into an even glow.
The result is lit letters with a soft halo and unlit LEDs that stay faintly visible as a dark grid: the two details any convincing imitation must copy.
How LED Scroller recreates the look in a browser
A phone screen is a dense grid of tiny pixels, not a panel of big round LEDs, so LED Scroller builds the effect on an HTML canvas, following the hardware step by step.
1. Text becomes an on/off grid
Your message is first drawn with an ordinary font onto an off-screen canvas, an invisible drawing surface. The page reads that bitmap back and divides it into cells, one per LED; a cell is on if the letter covers part of it. That gives a true on/off grid, like a sign's frame buffer. Emojis keep their own colours.
2. Every cell becomes a round LED
Each cell is drawn as a circle: lit cells in your colour, unlit ones as a faint tint of the background so the dark grid stays visible. The dots are drawn once as small ready-made images and copied into place, far cheaper than drawing thousands of circles each time.
3. The optional glow
With LED glow on, each lit dot gets a soft bloom reaching about three dots out and fading with distance. Blooms are added with an additive blend, so overlapping halos build up, and are limited to the shapes of neighbouring dots, so light seems to bleed onto nearby LEDs rather than into the gaps. The bloom is pre-drawn rather than using the canvas's shadow blur, which MDN's performance guide advises avoiding.
4. One long strip for smooth scrolling
Redrawing every dot and halo each frame would be heavy for a phone, so the whole message is pre-rendered once into one long image strip. Each animation frame copies the visible slice to the screen (two copies when the loop wraps around), the "draw once off-screen, copy often" technique MDN recommends. Very long messages fall back to drawing dot by dot.
One difference from hardware: a real sign's LEDs stay put, so its text jumps a column at a time. LED Scroller slides the strip by a fraction of a dot per frame, from 0.08 of a column at speed 1 to 1.6 columns at speed 20, which keeps motion smooth on a phone held up in a crowd. With reduce motion turned on in your device settings, the website shows the message still and centred.
Settings that mirror real hardware
- Dot colour: one solid colour or per-letter multicolour fluorescent shades, as only an RGB sign could show.
- Background colour: the panel behind the LEDs; unlit dots are tinted to match.
- Font size and bold: font size sets how many rows of dots the panel has (about 64 fine rows down to 6 chunky ones), much like picking a pitch; bold lights more dots per stroke.
- LED glow: the diffuser and light-bleed effect.
- Blink: the lit pattern switches off at intervals, like a sign's flashing mode.
- Speed, direction, play and pause: step rate, travel direction and freezing the frame.
- Animated border: a moving three-colour edge, a nod to the chasing lights around classic marquees.
- Fullscreen, landscape and export: go fullscreen sideways for a wider sign, or download a PNG or animated GIF.
It is free, with no signup and no watermark, and a free Android app on Google Play works offline; on an iPhone, use the website. Not sure a phone sign fits? See when to use an LED scroller.
Frequently asked questions
Frequently asked questions
- Why do LED signs flicker in videos but not to my eyes?
- Signs scan their rows and dim their LEDs by switching them rapidly on and off. Your eyes average the flashes into steady light, but a camera records short slices of time. When its timing does not match the sign's switching, the footage shows bands or strobing.
- What does P10 mean on an LED sign?
- It means a pixel pitch of 10 mm: the centres of neighbouring dots are 10 millimetres apart. Common P10 modules have 32 by 16 dots. Smaller numbers such as P5 or P2.5 pack the dots closer for viewers who stand nearer.
- Is 5x7 the only dot-matrix font size?
- No. 5 by 7 is a classic minimum for readable capitals and digits, HD44780-based character displays use 5 by 8 and 5 by 10 cells, and bigger signs use taller grids.
- Is a phone bright enough to replace a real LED sign?
- For short-range messages indoors, at night or in a dark venue, often yes. In direct sunlight, no: screens built for sunlight are typically rated at around 5,000 nits or more, while the iPhone 17 Pro is rated at 1,000 nits typical maximum and 3,000 nits peak outdoors.
- Does LED Scroller use a special LED font?
- No. It draws your text with a regular font on an invisible canvas, turns it into an on/off dot grid and draws each dot as a round LED. Your screen supplies the light, so it runs in a mobile or desktop browser with nothing to install.
Sources
- HyperPhysics (Georgia State University): Light Sources in Electronics — How an LED emits light (electroluminescence), materials by colour and forward-voltage ranges.
- Maxim Integrated MAX7219/MAX7221 datasheet — Drives up to 64 LEDs with multiplex scan circuitry; typical 800 Hz scan rate; 16-step PWM brightness; current set by one resistor.
- Adafruit: 32x16 and 32x32 RGB LED Matrix, How the Matrix Works — 1/8 scan with two rows lit at once, 192 constant-current driver outputs, colour shades made by fast redrawing.
- Davis, Hsieh and Lee (2015), Humans perceive flicker artifacts at 500 Hz, Scientific Reports — Earlier reported flicker limit of 50 to 90 Hz; flicker artifacts visible above 500 Hz with sharp edges; saccades and pulsed LEDs.
- ENTTEC: Why do LEDs flicker on camera? — PWM dimming, camera timing mismatch and rolling-shutter banding.
- Hitachi HD44780U dot matrix LCD controller datasheet (Georgia Tech copy) — 208 characters in 5 x 8 dot cells (eighth line is the cursor position) and 32 characters in 5 x 10 cells.
- MD_MAX72XX library reference (MajicDesigns) — Shift-left transform and the callback that feeds a new column in while scrolling.
- Unilumin: P5 vs P10 LED Display — P10 means 10 mm pitch with 32 x 16 pixels per module; P5 means 5 mm with 64 x 32.
- Daktronics: LED Displays, How to Determine Optimal Viewing Distance — Pixel pitch definition; optimal viewing distance in feet of about 3 times the pitch in mm.
- Planar: What is pixel pitch and why does it matter? — The 10x rule as an estimate of visual acuity distance.
- DigiKey: Nit Picking the Terms to Describe the Brightness of LEDs — 1 nit = 1 candela per square metre; typical brightness ranges by type of display.
- Philips 57HUL6483DP outdoor LED display, product page — Outdoor LED billboard module rated at 6,000 nits with 8.33 mm pitch.
- Apple Support: iPhone 17 Pro technical specifications — 1,000 nits typical maximum, 1,600 nits HDR peak and 3,000 nits outdoor peak brightness.
- Adafruit: Make it Glow, NeoPixel and LED Diffusion Tips and Tricks — Definition of diffusion and why the diffuser's distance from the LEDs matters.
- MDN Web Docs: Optimizing canvas — Pre-rendering repeated drawing on an off-screen canvas, requestAnimationFrame, avoiding shadowBlur.
Prefer an app? LED Scroller is also free on Android (Google Play): it works offline and adds more fonts and backgrounds.
← All guides