Tutorial · September 26, 2026 · 3 min read
How to make an infinite logo marquee in React and Tailwind
To make an infinite logo marquee in React and Tailwind, install ReactFrame's free Logo Marquee with npx shadcn@latest add @reactframe/logo-marquee and pass an array of logos. The strip loops without a visible jump, pauses on hover, turns grey logos to colour under the cursor and fades its edges, with speed, direction and spacing set by props.
A row of client logos that scrolls forever is the most common trust signal on a landing page. Getting the loop right (no jump when it restarts, no gap at the end) takes a little care. This tutorial uses ReactFrame's free Logo Marquee.
1. Install
npx shadcn@latest add @reactframe/logo-marquee
2. Pass your logos
import { LogoMarquee } from "@/components/logo-marquee";
const logos = [
{ name: "Acme", image: "/logos/acme.svg", link: "https://acme.com" },
{ name: "Globex", image: "/logos/globex.svg" },
{ name: "Initech", image: "/logos/initech.svg", imageScale: 90 },
{ name: "Umbrella", image: "/logos/umbrella.svg" },
];
export function Clients() {
return (
<section className="py-16">
<p className="mb-8 text-center text-sm text-neutral-500">Trusted by teams at</p>
<LogoMarquee logos={logos} />
</section>
);
}
A logo without an image shows its name as text, which is handy while you're still collecting files. imageScale (a percentage) evens out logos that look bigger or smaller than the rest, and link makes a logo clickable.
3. Tune it
| Prop | Default | What it does |
|---|---|---|
speed | 60 | Scroll speed. |
direction | "left" | "left" or "right". |
pauseOnHover | true | Stops the strip under the cursor. |
grayscale, hoverReveal | true | Grey logos that turn to colour on hover. |
logoHeight, gap | 36, 64 | Size and spacing. |
edgeFade, edgeBlur, fadeWidth | on, on, 80 | Soft edges so logos don't start and end abruptly. |
Tips for logos that look right
- Use SVGs where you can; they stay sharp at any size.
- Match the visual weight, not the pixel size. Wordmarks usually need a smaller
imageScalethan square icons. - Get permission before showing a customer's logo, and keep a text fallback for the ones still in review.
- Two rows going opposite ways (
direction="left"and"right") fill a wide section nicely.
Related
For a static trust bar with logos and a short quote, see Testimonial Logos. To scroll anything else (cards, quotes, product shots), use Infinite Marquee. Both are free.

Ahmet Loca · Product designer
Hi, I'm Ahmet. I have over four years of experience creating intuitive, user-focused designs for digital products, and ReactFrame is where that work becomes components you can use in your own.