SolutionsCase StudiesAI ToolsResourcesAboutContact
Get Your Free AI Automation Audit Book a Free 30-Minute Strategy Call
Playground~/frontend Open editor

~/css/neon-text

7 CSS Neon Text Effects

7 Pure CSSPublished 2026-10-05Free · no sign-up

Seven neon signs made with text-shadow: a flickering cursive sign, two words in two tube colours, hollow outlined tubes, a link that switches on when hovered, a sign with one faulty letter, a slow breathing glow and a small menu board where only the title glows.

01. Flickering Neon Sign

NeonFlicker

A pink neon sign that occasionally stutters, like a tube on its way out. Stacked text-shadows build the glow, and the flicker drops the shadows for a few irregular frames in a long loop. Under reduced motion the sign stays lit and steady.

View code
<p class="nt1">Open late</p>
.nt1 { margin: 0; color: #fff0f8; font: 700 46px "Brush Script MT", "Segoe Script", cursive; text-shadow: 0 0 4px #fff, 0 0 10px #ff4fb4, 0 0 22px #ff4fb4, 0 0 44px #e11d8a, 0 0 80px #e11d8a; animation: nt1 6s infinite; }
@keyframes nt1 { 0%, 18%, 22%, 25%, 53%, 57%, 100% { opacity: 1; } 20%, 24%, 55% { opacity: .45; text-shadow: none; } }
@media (prefers-reduced-motion: reduce) { .nt1 { animation: none; } }

02. Two-Colour Neon

NeonColour

Two words in two tube colours, cyan and violet, side by side on a brick-dark wall. Each word has its own shadow stack in its own colour, which is all a second neon colour needs.

View code
<p class="nt2"><span class="a">Night</span> <span class="b">Market</span></p>
.nt2 { margin: 0; padding: 18px 22px; border-radius: 12px; background: #120d14; font: 800 38px Inter, system-ui, sans-serif; letter-spacing: .04em; }
.nt2 .a { color: #e0fbff; text-shadow: 0 0 4px #fff, 0 0 12px #22d3ee, 0 0 28px #0891b2, 0 0 50px #0891b2; }
.nt2 .b { color: #f3e8ff; text-shadow: 0 0 4px #fff, 0 0 12px #a855f7, 0 0 28px #7e22ce, 0 0 50px #7e22ce; }

03. Outlined Neon Tube

NeonStroke

Hollow letters with a glowing outline, closer to a real bent-glass tube than a filled glow. The outline is -webkit-text-stroke, the fill is transparent, and drop-shadow filters glow around the stroke rather than a solid shape.

View code
<p class="nt3">ARCADE</p>
.nt3 { margin: 0; color: #a7f3d0; font: 900 52px Inter, system-ui, sans-serif; letter-spacing: .08em; }
@supports (-webkit-text-stroke: 1px #fff) { .nt3 { color: transparent; -webkit-text-stroke: 2px #6ee7b7; filter: drop-shadow(0 0 4px #34d399) drop-shadow(0 0 12px #059669); } }

04. Neon That Lights Up on Hover

NeonHover

A link that looks like an unlit tube at rest and switches on with a quick buzz when hovered or focused. The off state is a dim colour with no shadow; the on state adds the glow with a stepped animation that mimics the start-up flicker.

View code
<a class="nt4" href="#menu">Late menu</a>
.nt4 { color: #6b4a1f; font: 800 42px Inter, system-ui, sans-serif; text-decoration: none; transition: color .1s; }
.nt4:hover, .nt4:focus-visible { color: #fff7e6; text-shadow: 0 0 4px #fff, 0 0 12px #fbbf24, 0 0 28px #f59e0b, 0 0 50px #d97706; animation: nt4 .5s steps(1) both; }
@keyframes nt4 { 0% { opacity: .3; } 15% { opacity: 1; } 30% { opacity: .4; } 45%, 100% { opacity: 1; } }
.nt4:focus-visible { outline: 2px solid #fbbf24; outline-offset: 6px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) { .nt4:hover, .nt4:focus-visible { animation: none; } }

05. One Letter on the Blink

NeonDetail

Everything is steady except one letter, which blinks out now and then, the detail that makes a neon sign believable. That letter is wrapped in a span with its own flicker animation, and the word still reads as one word.

View code
<p class="nt5">HOT<span>E</span>L</p>
.nt5 { margin: 0; color: #ffe4e6; font: 900 50px Inter, system-ui, sans-serif; letter-spacing: .14em; text-shadow: 0 0 4px #fff, 0 0 12px #fb7185, 0 0 26px #e11d48, 0 0 48px #be123c; }
.nt5 span { animation: nt5 4s infinite; }
@keyframes nt5 { 0%, 40%, 44%, 47%, 100% { opacity: 1; } 42%, 45.5% { opacity: .15; text-shadow: none; } }
@media (prefers-reduced-motion: reduce) { .nt5 span { animation: none; } }

06. Breathing Neon Glow

NeonPulse

Instead of flickering, the glow slowly swells and settles like the tube is breathing, a calmer neon for a sign-up banner. Only text-shadow blur radii change between two keyframes, on a three-second ease-in-out loop.

View code
<p class="nt6">Join the club</p>
.nt6 { margin: 0; color: #ecfeff; font: 800 40px Inter, system-ui, sans-serif; text-shadow: 0 0 3px #fff, 0 0 8px #06b6d4, 0 0 18px #0891b2; animation: nt6 3s ease-in-out infinite alternate; }
@keyframes nt6 { to { text-shadow: 0 0 4px #fff, 0 0 14px #22d3ee, 0 0 34px #06b6d4, 0 0 64px #0e7490; } }
@media (prefers-reduced-motion: reduce) { .nt6 { animation: none; } }

07. Neon Menu Board

NeonLayout

A small neon sign layout: a title in pink tube lettering inside a glowing frame and a plain list of items below, which stays readable because only the title glows. The frame is a border plus inset and outset box-shadows in the same colour.

View code
<section class="nt7"><h3>Noodle Bar</h3><ul><li>Shoyu ramen <b>9</b></li><li>Miso ramen <b>10</b></li><li>Gyoza <b>6</b></li></ul></section>
.nt7 { width: 240px; max-width: 100%; box-sizing: border-box; padding: 18px; border: 2px solid #f9a8d4; border-radius: 16px; background: #120a12; box-shadow: 0 0 10px #ec4899, inset 0 0 10px #ec4899; font-family: Inter, system-ui, sans-serif; }
.nt7 h3 { margin: 0 0 12px; color: #fdf2f8; font-size: 28px; text-align: center; text-shadow: 0 0 4px #fff, 0 0 10px #f472b6, 0 0 24px #db2777; }
.nt7 ul { margin: 0; padding: 0; list-style: none; color: #e5e7eb; font-size: 15px; line-height: 2; }
.nt7 li { display: flex; justify-content: space-between; border-bottom: 1px dashed #4a2340; }
.nt7 b { color: #fbcfe8; }

About these CSS Neon Text Effects

Glow is stacked shadows

Neon is several text-shadows in the same hue at growing blur radii: a tight white one for the hot core, then two or three coloured ones for the glow. More layers mean more glow but more painting work.

Light text, dark wall

Neon only reads on a dark background, and the letters themselves should be near-white with a hint of the tube colour. A fully saturated text colour looks flat.

Flicker responsibly

Flicker effects must not flash more than three times a second, which can trigger seizures. These loops flicker briefly a few times in several seconds, and stop entirely under prefers-reduced-motion.

Keep body text plain

Use neon for one sign or title. Glowing paragraphs are hard to read; set the supporting text in a normal style beside it, as the menu board does.

Frequently asked questions

Which fonts work best for neon?

Rounded or script fonts that look like bent tubes. The demos use system fonts; swap in your own web font.

Does text-shadow affect performance?

Large blurs are costly when animated across many elements. One animated sign is fine.

Can I make neon outlines?

Yes, with -webkit-text-stroke and drop-shadow filters, as in the outlined tube demo.