Kodza

Review Summary

Reviews with their summary: the average rolls up, the stars fill to the decimal, five bars fill in turn. Click a bar to filter, the reviews glide into place. Read more, and a one-line variant.

Testimonials & logos No dependencies testimonialsreviewsratingstarsaverage ratingrating breakdownfilterread morewoocommerceproduct pagesocial proofsection Added Nov 2026
/anim/review-summary/ GitHub Fullscreen

With your AI

Just ask.

Say it to your AI. It gets the exact code below, not its best guess, and knows where it goes.

Add the Kodza Review Summary to my page.

Not plugged in yet?
claude mcp add -t http kodza https://kodza.dev/api/mcp
Also in Codex, Cursor and VS Code.
kodza-review-summary.html
<div class="kodza-review-summary kodza-review-summary--inline" data-kodza-review-summary>
  <span class="kodza-review-summary__stars" style="--kz-score: 4.7" aria-hidden="true"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
  <span class="kodza-review-summary__value">4.7</span><span class="kodza-review-summary__max"> out of 5</span>
  <span class="kodza-review-summary__count">1,284 reviews</span>
</div>
<section class="kodza-review-summary" data-kodza-review-summary>
  <div class="kodza-review-summary__inner">
    <div class="kodza-review-summary__head">
      <p class="kodza-review-summary__eyebrow">Reviews</p>
      <h2 class="kodza-review-summary__title">We kept the one-star reviews.</h2>
    </div>
    <div class="kodza-review-summary__body">
      <div class="kodza-review-summary__summary">
        <div class="kodza-review-summary__overall">
          <p class="kodza-review-summary__score"><span class="kodza-review-summary__value">4.7</span><span class="kodza-review-summary__max"> out of 5</span></p>
          <div class="kodza-review-summary__meta">
            <span class="kodza-review-summary__stars" style="--kz-score: 4.7" aria-hidden="true"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <p class="kodza-review-summary__count">1,284 reviews</p>
          </div>
        </div>
        <ul class="kodza-review-summary__bars" aria-label="Show reviews by rating">
          <li>
            <button class="kodza-review-summary__bar" type="button" aria-pressed="false" data-rating="5" style="--kz-share: 0.8">
              <span class="kodza-review-summary__bar-label">5 stars</span>
              <span class="kodza-review-summary__track" aria-hidden="true"><span class="kodza-review-summary__fill"></span></span>
              <span class="kodza-review-summary__share">80%</span>
            </button>
          </li>
          <li>
            <button class="kodza-review-summary__bar" type="button" aria-pressed="false" data-rating="4" style="--kz-share: 0.13">
              <span class="kodza-review-summary__bar-label">4 stars</span>
              <span class="kodza-review-summary__track" aria-hidden="true"><span class="kodza-review-summary__fill"></span></span>
              <span class="kodza-review-summary__share">13%</span>
            </button>
          </li>
          <li>
            <button class="kodza-review-summary__bar" type="button" aria-pressed="false" data-rating="3" style="--kz-share: 0.04">
              <span class="kodza-review-summary__bar-label">3 stars</span>
              <span class="kodza-review-summary__track" aria-hidden="true"><span class="kodza-review-summary__fill"></span></span>
              <span class="kodza-review-summary__share">4%</span>
            </button>
          </li>
          <li>
            <button class="kodza-review-summary__bar" type="button" aria-pressed="false" data-rating="2" style="--kz-share: 0.02">
              <span class="kodza-review-summary__bar-label">2 stars</span>
              <span class="kodza-review-summary__track" aria-hidden="true"><span class="kodza-review-summary__fill"></span></span>
              <span class="kodza-review-summary__share">2%</span>
            </button>
          </li>
          <li>
            <button class="kodza-review-summary__bar" type="button" aria-pressed="false" data-rating="1" style="--kz-share: 0.01">
              <span class="kodza-review-summary__bar-label">1 star</span>
              <span class="kodza-review-summary__track" aria-hidden="true"><span class="kodza-review-summary__fill"></span></span>
              <span class="kodza-review-summary__share">1%</span>
            </button>
          </li>
        </ul>
      </div>
      <div class="kodza-review-summary__list">
        <div class="kodza-review-summary__toolbar">
          <p class="kodza-review-summary__status"><span class="kodza-review-summary__status-label">All reviews</span> <span class="kodza-review-summary__status-count">8</span></p>
          <button class="kodza-review-summary__clear" type="button">Show all</button>
        </div>
        <div class="kodza-review-summary__reviews" data-more="Read more" data-less="Read less">
        <figure class="kodza-review-summary__review" data-rating="5">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 5" role="img" aria-label="5 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-11-02">2 Nov 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Two winters of bike commuting, still dry</p>
          <blockquote class="kodza-review-summary__quote"><p>Rode to work every day from November to March, rain most of it. The laptop came out dry every time. The roll top looks fussy in the photos; in real life it takes two seconds.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">IC</span>
            <span class="kodza-review-summary__name">In&egrave;s Carvalho</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Lisbon</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="4">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 4" role="img" aria-label="4 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-29">29 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Great bag, tight bottle pocket</p>
          <blockquote class="kodza-review-summary__quote"><p>A 16-inch laptop, a lunch box and a jumper, with room to spare. One star off: a litre bottle only goes in the side pocket if you push.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">PV</span>
            <span class="kodza-review-summary__name">Pieter de Vries</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Utrecht</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="5">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 5" role="img" aria-label="5 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-24">24 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">The only bag I didn&rsquo;t send back</p>
          <blockquote class="kodza-review-summary__quote"><p>I ordered four backpacks to compare and returned three. This one won on the boring things: the straps don&rsquo;t dig in after an hour, the back panel doesn&rsquo;t turn into a sauna, and the zips run without catching the lining.</p><p>The laptop sleeve stops a few centimetres above the bottom, so dropping the bag on a station floor doesn&rsquo;t land on the corner of the computer. Nobody mentions it in the description. It&rsquo;s the reason I kept it.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">SL</span>
            <span class="kodza-review-summary__name">Sofia Lindqvist</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Malm&ouml;</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="3">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 3" role="img" aria-label="3 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-20">20 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Good, but the straps creak</p>
          <blockquote class="kodza-review-summary__quote"><p>Comfortable and well made. Full, the buckles on the shoulder straps creak at every step. A bit of wax fixed it. I shouldn&rsquo;t have had to.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">MD</span>
            <span class="kodza-review-summary__name">Malik Diallo</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Lille</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="5">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 5" role="img" aria-label="5 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-18">18 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Fits under the seat, no questions asked</p>
          <blockquote class="kodza-review-summary__quote"><p>Two low-cost flights, both times under the seat in front. Three days of clothes and a camera.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">HK</span>
            <span class="kodza-review-summary__name">Hana Kobayashi</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Geneva</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="2">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 2" role="img" aria-label="2 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-15">15 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">The zip split after three months</p>
          <blockquote class="kodza-review-summary__quote"><p>The main zip split at the corner after three months of daily use. Support answered in a day, sent a new bag in four, and didn&rsquo;t ask for the broken one back first.</p><p>Two stars for the zip, which shouldn&rsquo;t break. It would have been one if support hadn&rsquo;t been that quick. Six weeks on, the new one is fine, and they say they changed zip supplier in September.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">BM</span>
            <span class="kodza-review-summary__name">Baptiste Morel</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Caen</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="4">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 4" role="img" aria-label="4 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-09">9 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Better in grey than in the photos</p>
          <blockquote class="kodza-review-summary__quote"><p>The grey reads warmer in daylight than on screen. The bag itself does what it says. I&rsquo;d like one more pocket inside.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">NA</span>
            <span class="kodza-review-summary__name">Noor Al-Amin</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Ghent</span>
          </figcaption>
        </figure>
        <figure class="kodza-review-summary__review" data-rating="1">
          <div class="kodza-review-summary__review-top">
            <span class="kodza-review-summary__stars kodza-review-summary__stars--small" style="--kz-score: 1" role="img" aria-label="1 out of 5 stars"><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span><span class="kodza-review-summary__star"></span></span>
            <time class="kodza-review-summary__date" datetime="2026-10-03">3 Oct 2026</time>
          </div>
          <p class="kodza-review-summary__review-title">Twelve days for a three-day delivery</p>
          <blockquote class="kodza-review-summary__quote"><p>Nothing wrong with the bag. It took twelve days to arrive instead of three, and the tracking said &ldquo;in transit&rdquo; the whole time.</p></blockquote>
          <figcaption class="kodza-review-summary__who">
            <span class="kodza-review-summary__face" aria-hidden="true">LM</span>
            <span class="kodza-review-summary__name">Luc&iacute;a M&eacute;ndez</span>
            <span class="kodza-review-summary__role">Verified buyer &middot; Valencia</span>
          </figcaption>
        </figure>
          <p class="kodza-review-summary__empty" hidden>No review with this rating on this page yet.</p>
        </div>
      </div>
    </div>
  </div>
</section>

Checked

Checked before you paste.

Robots poked at it before you did. Every component goes through the same checks, and again each time it changes.

What ranLast run
Accessibilityaxe-core 4.10.2: the WCAG 2.1 A and AA rules, plus best practices. 0 issues
KeyboardThe Tab key gets there, and the focus ring shows when it does. Passed
Reduced motionTurn on reduced motion and what moved just appears. Nothing loops. Passed
Light and darkThe same checks on both themes, contrast included. Passed
WordPressPasted into Twenty Twenty-Five, Twenty Twenty-One, Astra, Blocksy, GeneratePress, Hello Elementor, Kadence and OceanWP. Nothing to flag. 8 / 8 themes
Robots checked this. A human with VoiceOver hasn't yet.
KeyboardPress them in the preview
On a bar
  • Shows only that rating's reviews, or all of them againEnter/Space
On Show all
  • Shows every review, focus back on the barEnter/Space
On Read more
  • Opens the whole review, or folds it againEnter/Space

More like this

More in Testimonials & logos