LED Scroller

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.

Written byBy the LED Scroller team

Published

Facts checked on

Reading time12 min read

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:

A capital A in a typical 5 x 7 dot font: 18 of the 35 LEDs are lit.
RowCol 1Col 2Col 3Col 4Col 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:

The LEDs never move; only the pattern in memory changes.
StepColumn entering on the rightWhat a viewer sees
1Column 1 of the A (rows 2 to 7)An upright bar at the right edge
2Column 2 (rows 1 and 4)The bar moves one dot left; the top corner appears
3Column 3 (rows 1 and 4)The peak of the letter forms
4Column 4 (rows 1 and 4)Top and crossbar are complete
5Column 5 (rows 2 to 7)The whole A is on the sign
6A blank spacer columnA 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.

Rules of thumb only; manufacturers use different multipliers. Dots per square metre is (1000 / pitch) squared; metres are rounded.
Pixel pitchDots per square metreDaktronics optimal distancePlanar 10x rule (pixels blend)
P2.5160,000About 7.5 ft (2.3 m)About 25 ft (7.6 m)
P540,000About 15 ft (4.6 m)About 50 ft (15 m)
P1010,000About 30 ft (9.1 m)About 100 ft (30 m)
P16About 3,900About 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.

Manufacturer ratings and a distributor's typical ranges; real-world brightness varies.
DisplayRated 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 57HUL6483DP6,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

Prefer an app? LED Scroller is also free on Android (Google Play): it works offline and adds more fonts and backgrounds.

← All guides