Comic text
Also called comic book text, pop art text, or cartoon lettering
Pop-art lettering in the style of comic books: heavy outlined capitals, a hard offset shadow, halftone dots, and a punchy pop-in entrance.
import { motion, useReducedMotion } from 'motion/react';
const SPRING = { type: 'spring', duration: 0.45, bounce: 0.5 } as const;
const BURST =
'100,0 117,58 171,29 142,83 200,100 142,117 171,171 117,142 100,200 83,142 29,171 58,117 0,100 58,83 29,29 83,58';
// Print-style dots on the panel behind the word.
const HALFTONE = {
backgroundImage: 'radial-gradient(rgb(0 0 0 / 0.2) 28%, transparent 30%)',
backgroundSize: '11px 11px'
};
export function ComicBurst({ word = 'Shipped!' }: { word?: string }) {
const reduceMotion = useReducedMotion();
return (
<div
className='relative grid h-64 w-[28rem] place-items-center overflow-hidden border-4 border-black bg-pink-500'
style={HALFTONE}
>
<motion.svg
aria-hidden
viewBox='0 0 200 200'
className='absolute w-80'
initial={reduceMotion ? false : { scale: 0, rotate: -24 }}
animate={{ scale: 1, rotate: -4 }}
transition={SPRING}
>
<polygon points={BURST} fill='#facc15' stroke='black' strokeWidth='5' strokeLinejoin='round' />
</motion.svg>
<motion.h2
className='relative text-7xl font-black text-white uppercase italic'
style={{
// The stroke paints under the fill, so the outline sits outside
// the letters. drop-shadow traces the outlined shape.
WebkitTextStroke: '8px black',
paintOrder: 'stroke fill',
filter: 'drop-shadow(5px 5px 0 black)'
}}
initial={reduceMotion ? false : { scale: 2.4, rotate: -12, opacity: 0 }}
animate={{ scale: 1, rotate: -6, opacity: 1 }}
transition={{ ...SPRING, delay: 0.12 }}
>
{word}
</motion.h2>
</div>
);
}Add comic text to the launch success screen: show "SHIPPED!" in 76px black-weight italic uppercase with a white fill, an 8px black -webkit-text-stroke with paint-order: stroke fill, and a hard 5px black drop-shadow with no blur. Put it on an amber starburst with a black outline and halftone dots, inside a pink panel with a 4px black border. Pop the burst in from scale 0 with a bouncy spring, then slam the word in from scale 2.4 to 1 over 450ms, and show everything in place without motion when prefers-reduced-motion is set.
Paste into Layerwise or any AI coding tool.
What is Comic text?
Comic text borrows the sound-effect lettering of comic books. The word is set in heavy uppercase type with a thick dark outline, made with -webkit-text-stroke and paint-order: stroke fill so the outline sits outside the letters, plus a hard shadow with no blur. It usually lands on a starburst or a panel printed with halftone dots, and slams in at an oversized scale that settles with a bounce.
Use it for playful moments: a success screen after a launch, a game result, a sale banner, or an onboarding step in a lighthearted product. It shouts, so keep it to a word or two and one appearance per screen.
A filter: drop-shadow() with no blur gives the hard shadow and traces the outlined shape. Keep the word as real text for screen readers and mark the burst aria-hidden. The pop-in should settle within half a second, and the word should simply appear when someone prefers reduced motion.
Often confused with
- Neo-brutalism
- Neo-brutalism is a whole interface style with thick borders and hard shadows. Comic text applies a similar print look to one shouted word.
Related terms
All termsPop in
An entrance animation where an element scales up past its full size and settles back, giving it a quick, springy arrival.
Neo-brutalism
A bold UI style with thick black borders, hard offset shadows, flat bright colors, and chunky type that looks raw on purpose.
Line shadow text
Bold display text with an offset shadow made of thin diagonal stripes that slide continuously, for a retro print look with a little motion.
Overshoot easing
An easing curve that runs slightly past its end point and then settles back, giving motion a small, springy kick.
Build it with Layerwise
Describe your app, watch it run in a live preview, and publish it with a database, storage, and sign-in built in.