Skip to content

Testimonial Grid Masonry

A copy-paste quotes & testimonials component in pure HTML & CSS. Zero dependencies, framework-agnostic, MIT-licensed.

Quotes & TestimonialsHTMLCSSany framework

“Honestly the fastest I’ve gone from idea to shipped feature.”

Aki M.

“Beautiful, and it works.”

Sara P.

“My team asked who built it.”

Noah F.

“Replaced three SaaS tools. Pays for itself.”

Lina K.

Copy into your project

HTML
<div class="nuda-masonry">
  <article class="nuda-masonry__card" style="grid-row: span 2">
    <p>&ldquo;Honestly the fastest I've gone from idea to shipped feature.&rdquo;</p>
    <footer>
      <span class="nuda-masonry__avatar"
            style="background: linear-gradient(135deg, #e4ff54, #62b6ff)"
            aria-hidden="true">AK</span>
      Aki M.
    </footer>
  </article>
  <article class="nuda-masonry__card">
    <p>&ldquo;Beautiful, and it works.&rdquo;</p>
    <footer>
      <span class="nuda-masonry__avatar"
            style="background: linear-gradient(135deg, #ff6dd4, #9d6dff)"
            aria-hidden="true">SP</span>
      Sara P.
    </footer>
  </article>
  <!-- ...more cards. Vary grid-row span to create the masonry effect. -->
</div>
CSS
/* Testimonial Grid Masonry
   Two-column staggered grid using grid-row: span N for tall cards. */

.nuda-masonry {
  max-width: 480px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: minmax(80px, auto);
  gap: 0.75rem;
  font-family: ui-sans-serif, system-ui, sans-serif;
}

.nuda-masonry__card {
  padding: 1rem;
  background: #0c0c10;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  color: #fafafa;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 0.75rem;
  transition:
    border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.nuda-masonry__card:hover {
  border-color: rgba(255, 255, 255, 0.16);
  transform: translateY(-2px);
}

.nuda-masonry__card p {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.5;
}

.nuda-masonry__card footer {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.6875rem;
  color: #a0a0a8;
}

.nuda-masonry__avatar {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.5625rem;
  font-weight: 700;
  color: #0c0c10;
  flex-shrink: 0;
}

@media (prefers-reduced-motion: reduce) {
  .nuda-masonry__card { transition: none; }
  .nuda-masonry__card:hover { transform: none; }
}

How to use Testimonial Grid Masonry

Paste the HTML where you need it and the CSS into a global stylesheet (or a <style> tag). Every class is prefixed nuda- so it never collides with Tailwind or your own styles. Tweak the CSS custom properties to match your design system.

Works in React, Vue, Svelte, Astro, Next.js, Nuxt, Laravel Blade, Django, Rails — or a single .html file. No npm install, no build step.

More quotes & testimonials components

← Browse all NudaUI components