Demo
Every logo above loads live fromimg.logo.dev. The wall advances every few seconds, sweeping left to right one column at a time.
Build it with AI
Want this wall in your app? This prompt gives your AI coding tool everything it needs to build it in your framework.
Code
This example is in React, but you can get the same result in any frontend framework: the wall is just image URLs and CSS transitions. PasteLogoGrid.tsx, then render it as the Usage tab shows. A 5 × 3 grid cycling 3 logos per tile needs 45 domains.
Your publishable key is built for client-side code, so
you can ship it in the browser as-is.
How it works
- Every logo is one image URL.
img.logo.dev/:domainreturns the company’s logo, and query parameters handle the rest:sizefor dimensions,retinafor sharp rendering,format=webpfor weight. See all image parameters. - Unknown domains still render. When Logo.dev doesn’t have a logo, it returns a generated monogram instead of a broken image, so the wall works with any domain list you give it. See fallback images.
- The CDN does the heavy lifting. Logos load like any other cached image, so swapping them live costs nothing beyond a normal image request.
- The motion is plain CSS. Every logo in a tile’s deck stays mounted as a stacked layer, and one shared tick sweeps the whole wall left to right. The wall pauses off-screen and holds still for visitors who prefer reduced motion.
Make it your own
- Restyle the logos. Add
&theme=darkfor dark backgrounds or&greyscale=truefor a muted, uniform wall. See all image parameters. - Change the shape. Set
columns,rows, anddeckSize, and keepdomains.lengthatcolumns × rows × deckSize. - Make it static. Render one logo per tile and skip the timers for a plain logo cloud, or use the customer logo wall for wide wordmark lockups.
Next steps
Logo API
Every parameter for the image URL: size, format, theme, greyscale, and fallbacks.
Search API
Have company names instead of domains? Resolve them first.