The Drop · October 14, 2026

Why nobody can read the text in your music visualizer

You typed the lines, the render looks great, then somebody watches it and asks what it said. Three things decide whether text in a music visualizer is readable, and font size is the one you have least control over, because there is no size control at all.

A backlit optician's eye chart on a dark wall, its mirrored letters shrinking row by row down the panel past the 30 and 20 line markers

Photo via Unsplash

There is no font size setting, and that is the whole story

Look for a size slider and you will not find one. The app starts every line at 230 pixels tall in a 1080 pixel frame, measures how wide that comes out, and if the line is wider than 90 percent of the frame it scales down by exactly enough to fit. That is the entire sizing system.

So the two things that actually set your type size are how long the line is and how wide the typeface is. Neither looks like a size control, so neither gets treated as one. A short word stays enormous: I measured all 50 fonts and a six character word renders at the full 230 pixels in every one of them. Nothing shrinks until you cross the width limit.

The same line comes out three times bigger in one font than another

This is the part that catches people, because the app picks a new typeface every time the content changes, shuffled from whichever fonts you left ticked. The same line can come up twice in one render at completely different sizes, and you chose neither of them.

Here is a real 22 character line, NO WATERMARK NO SIGNUP, measured in the actual fonts the app ships. The middle column is how many characters fit before shrinking starts.

FontCharacters at full sizeThat 22 character line
Bebas Neue19213 px
Anton16174 px
Oswald14153 px
Archivo Black9108 px
Michroma783 px
Stalinist One671 px

Across all 50 fonts that one line lands between 71 and 213 pixels. Same words, same settings, a three fold difference decided by a shuffle. Push it out to 56 characters and the range drops to 29 to 91 pixels, which at the bottom is under three percent of the picture height.

For a sense of what counts as large enough, broadcast subtitling is a fair yardstick. The BBC's subtitle guidelines ask that font size fit within a line height of 7 to 8 percent of the video height, which on a 1080 frame is roughly 76 to 86 pixels. That is the floor for text somebody is expected to read sitting still, with no flashing and nothing competing. Anything that has shrunk below it is decorative, whatever you meant it to be.

So keep a line you want read under about 15 characters, and untick the widest faces when the text matters. The fonts guide goes through the set.

How long is a line actually on screen?

The content change rate decides this, and it is tied to tempo, so the same setting means different things on different tracks. The arithmetic is just the beat length times the rate.

SettingAt 120 BPMAt 140 BPM
Every 1/8 beat62 ms54 ms
Every 1/4 beat125 ms107 ms
Every 1/2 beat250 ms214 ms
Every beat500 ms429 ms
Every 2 beats1000 ms857 ms
Every 4 beats2000 ms1714 ms

Every 1/4 beat is the setting the app opens on, and on a 140 BPM track that gives each line 107 milliseconds. Nobody reads anything in a tenth of a second.

Netflix publishes a hard floor for this in its subtitle timing guide: an event should never be shorter than 20 frames, which it writes as 4/5 of a second, and that floor is meant for events of only one or two words. 800 milliseconds, for two words, with nothing strobing.

Run it against the table and the rule falls out cleanly. Every beat clears 800 ms only at or below 75 BPM. Every 2 beats clears it at or below 150 BPM. Every 4 beats clears it at or below 300 BPM. At exactly 150 BPM, Every 2 beats lands on 800 ms to the millisecond. The BBC is stricter and scales with the words, around 0.3 seconds each, so a four word line wants 1.2 seconds and only Every 4 beats gets there at 140 BPM.

None of this makes the fast rates wrong. It makes them a texture setting rather than a reading setting. A line going past at 107 ms is a visual effect made of letters, which is a fine thing to want. Just do not expect it to also communicate.

The contrast problem only exists during the flash

Between flashes the app is simple and good: white text on solid black, with a hard black drop shadow offset behind it. You cannot do much better than that. During a flash it changes, and how it changes depends on the effect.

With most effects the text is painted in the flash colour, over a background that is black with a 25 percent wash of that same colour on top. Text and background share a hue, so all your contrast comes from the black that is left. That is why a mid tone palette colour is the worst case and a bright one is fine.

The strobe effect does something else again. The text is forced to black while the background fills with the flash colour, and a heavy black fill alternates on and off roughly every 33 milliseconds. Black letters on a colour field that is itself blinking.

There is a one click fix for the first case. Tick Black and white text and the fill is forced to white on every flash, whatever the palette does. If the text carries your message, tick it. The rest of the settings walkthrough can stay however you like.

Two of the text flicker modes also cost reading time. Blink shows the text on alternate frames, so it is absent half the time it is nominally up, and strobe alternates white with a mid grey. Fine for a word nobody needs to parse, bad for a lyric. The usual caution applies too: fast full screen flashing can trigger seizures in people with photosensitive epilepsy, so if you are stacking a fast flicker on a fast content rate, slow one of them down and warn people before they press play.

The text also moves, every single flash

Easy to miss because it looks intentional. On every flash the app re-rolls a jitter and the text jumps up to 60 pixels sideways, up to 40 vertically, and tilts by up to about 3 degrees. That is per flash, not per line, so a line sitting across six flashes gets shoved to a new position and angle six times while you are reading it. You cannot switch the jitter off, so the lever is flash rate: fewer flashes under a line means fewer jumps across it.

The settings that make text readable

Go and change the content rate

Free, in the browser, no signup, 1080p out as a WebM you download. Every 2 beats with Black and white text ticked is the readable preset. New here? Start on the home page.

Open the visualizer