How to Add a Scrolling Logos Section in Shopify?

Instead of stacking logos in one place, make them flow across your Shopify store with a scrolling effect. This not only adds movement and life to your site but also showcases your brand partners in a professional, eye-catching way.

Preview of the Scrolling logos section in Shopify using an app.

Here’s how to add a scrolling logos section in Shopify using various methods and give your site a professional edge.

Ways to Add a Shopify Scrolling Logos Section

There are apparently two options for you to add this feature to your site, which are as follows.

  • Via custom code – Insert a section into your theme files to create a scrolling logo carousel. This approach allows for high customization and integration, but it requires high coding knowledge, manual setup, and plenty of time.
  • Using a Shopify app – If you prefer a visual, easy-to-use interface or need more styling features (like interactive hover effects or dynamic grids) without touching code, a dedicated Shopify app is the best route.

Add a Pre-made Scrolling Logos Section

Use the MIT Sections Pro app to get a beautiful, ready-to-add section. Our app gives high flexibility, different styles of sections, advanced customization, such as infinite animation, scrolling direction, navigation button, and more.

This is an example of the section; you can create something similar to this using our app.

Preview of the scrolling logos section using a Shopify app.

Let us see how the app works.

Step 1: Install and Find Your Desired Section

Install the MIT Sections Pro (free) from the Shopify App Store, then from the app dashboard, click Browse sections and search for the Scrolling logo.

Shopify section browser showing multiple design options for "Scrolling logo"

We will proceed with Scrolling logo 3, though you can choose the option that best suits your brand.

Step 2: Click on the “Try for Free” Button

Select the section and click Try for Free to acquire the free trial of the section.

click Try for free button to Add a Scrolling Logos Section in Shopify.

While on the free trial, you will be redirected to the MIT demo store, and after you purchase the section, you can have it in your store’s theme.

From here, click Add section and select Meetanshi scrolling Logo 3

click Add section and select Meetanshi scrolling Logo 3.

Step 3: Modify the Section

Click Meetanshi scrolling Logo 3 to access the customization settings. Here, you get 70+ options to blend the section as per your needs.

Shopify Theme Editor customizing the section. Easily Add a Scrolling Logos Section in Shopify.

Once done making the changes, save them.

Add a Scrolling Logos Section in Shopify and save.

Create a Scrolling Logos Section in Shopify Using Custom Code

These are the steps to design the scrolling logos section using Liquid code.

Step 1: Add a New Section

From your Shopify admin panel, head to Online store > Themes > …(three dots) > Edit code. In the Sections folder, create a new section and save it as scrolling-logos.liquid. 

code editor showing a new file icon  to create a new liquid file and to add a Scrolling Logos Section in Shopify.

Step 2: Paste the Scrolling Logos Code

Then copy the code below and paste it into the newly created scrolling-logos.liquid section, and save the file. It will create a simple section with minimal functionalities.

{% style %}
  .scrolling-logos-section-{{ section.id }} {
    --logo-gap: {{ section.settings.spacing_desktop }}px;
    --logo-height: {{ section.settings.logo_height }}px;
    --speed: {{ section.settings.scroll_speed }}s;
    --item-width-desktop: 200px; /* Fixed width for calculation */
    background-color: {{ section.settings.background_color }};
    padding-top: {{ section.settings.padding_top | default: 36 }}px;
    padding-bottom: {{ section.settings.padding_bottom | default: 36 }}px;
    overflow: hidden; /* Important to hide overflow during animation */
  }
  @keyframes scroll-left-to-right {
    0% { transform: translateX(0); }
    100% { 
        transform: translateX(calc(
          ({{ section.blocks.size }} * var(--item-width-desktop) * -1) - 
          ({{ section.blocks.size }} * var(--logo-gap))
        )); 
    }
  }
  .marquee-wrapper {
    display: flex;
    overflow: hidden;
    margin-top: 2rem;
    position: relative;
    /* Ensure only blocks are clickable, not the container */
    pointer-events: none;
  }

  .marquee-content {
    display: flex;
    gap: var(--logo-gap);
    min-width: calc(
      (2 * {{ section.blocks.size }} * var(--item-width-desktop)) +
      (2 * {{ section.blocks.size }} * var(--logo-gap))
    );
    animation: scroll-left-to-right var(--speed) linear infinite;
  }
  .marquee-wrapper:hover .marquee-content {
    animation-play-state: paused;
  }
  .logo-item {
    display: flex;
    align-items: center;
    justify-content: center;
    height: var(--logo-height);
    width: var(--item-width-desktop); /* Enforce the fixed width for consistent scroll calculation */
    padding: 0 10px; /* Internal padding for logos */
    flex-shrink: 0;
    opacity: 0.7; /* Subtly fade the logos */
    transition: opacity 0.3s;
    box-sizing: border-box; /* Include padding in the width calculation */
  }

  .logo-item:hover {
    opacity: 1;
  }

  /* Image styling */
  .logo-item img {
    height: 100%;
    width: auto;
    max-width: 100%;
    object-fit: contain;
  }
  @media screen and (max-width: 768px) {
    .scrolling-logos-section-{{ section.id }} {
      --logo-gap: {{ section.settings.spacing_mobile | default: 16 }}px;
      --logo-height: {{ section.settings.logo_height | divided_by: 1.5 }}px; /* Make logos smaller on mobile */
      --item-width-desktop: 150px; /* Use smaller width for mobile calculation */
    }

    @keyframes scroll-left-to-right {
        0% { transform: translateX(0); }
        100% { 
            transform: translateX(calc(
              ({{ section.blocks.size }} * 150px * -1) - 
              ({{ section.blocks.size }} * var(--logo-gap))
            )); 
        }
    }
  }

{% endstyle %}

<section class="scrolling-logos-section-{{ section.id }}">
  <div class="page-width">
    {%- if section.settings.title != blank -%}
      <h2 class="h2 text-center" style="margin-bottom: {{ section.settings.padding_top | divided_by: 2 }}px;">
        {{ section.settings.title | escape }}
      </h2>
    {%- endif -%}

    <div class="marquee-wrapper" id="Marquee-{{ section.id }}">
      <div class="marquee-content" role="list">
        {%- for block in section.blocks -%}
          {%- liquid
            assign image_url = block.settings.logo | image_url: width: 300
            assign image_alt = block.settings.logo.alt | default: block.settings.logo.original_filename
            assign image_tag = block.settings.logo | image_url: width: 300 | image_tag: loading: 'lazy', sizes: '(max-width: 768px) 150px, 200px', widths: '100, 150, 200, 300', alt: image_alt
            assign link = block.settings.link
          -%}
          
          <div class="logo-item">
            {%- if link != blank -%}
              <a href="{{ link }}" title="{{ 'sections.scrolling_logos.link_title' | t: title: image_alt }}" style="pointer-events: auto;">
                {%- if block.settings.logo != blank -%}
                  {{ image_tag }}
                {%- else -%}
                  <div class="placeholder-logo" style="height: var(--logo-height); width: 100%; background: #eee; border-radius: 4px;">
                    <!-- Placeholder for missing image -->
                  </div>
                {%- endif -%}
              </a>
            {%- else -%}
              {%- if block.settings.logo != blank -%}
                {{ image_tag }}
              {%- else -%}
                <div class="placeholder-logo" style="height: var(--logo-height); width: 100%; background: #eee; border-radius: 4px;">
                  <!-- Placeholder for missing image -->
                </div>
              {%- endif -%}
            {%- endif -%}
          </div>
        {%- endfor -%}
        
        {% comment %}
          Duplicate the logos to create the seamless loop effect using CSS animation.
          This second loop must exactly mirror the first.
        {% endcomment %}
        {%- for block in section.blocks -%}
          {%- liquid
            assign image_url = block.settings.logo | image_url: width: 300
            assign image_alt = block.settings.logo.alt | default: block.settings.logo.original_filename
            assign image_tag = block.settings.logo | image_url: width: 300 | image_tag: loading: 'lazy', sizes: '(max-width: 768px) 150px, 200px', widths: '100, 150, 200, 300', alt: image_alt
            assign link = block.settings.link
          -%}
          
          <div class="logo-item" aria-hidden="true">
            {%- if link != blank -%}
              <a href="{{ link }}" title="{{ 'sections.scrolling_logos.link_title' | t: title: image_alt }}" style="pointer-events: auto;">
                {%- if block.settings.logo != blank -%}
                  {{ image_tag }}
                {%- else -%}
                  <div class="placeholder-logo" style="height: var(--logo-height); width: 100%; background: #eee; border-radius: 4px;">
                    <!-- Placeholder for missing image -->
                  </div>
                {%- endif -%}
              </a>
            {%- else -%}
              {%- if block.settings.logo != blank -%}
                {{ image_tag }}
              {%- else -%}
                <div class="placeholder-logo" style="height: var(--logo-height); width: 100%; background: #eee; border-radius: 4px;">
                  <!-- Placeholder for missing image -->
                </div>
              {%- endif -%}
            {%- endif -%}
          </div>
        {%- endfor -%}
      </div>
    </div>
  </div>
</section>

{% schema %}
{
  "name": "Trust: Scrolling Logos",
  "tag": "section",
  "settings": [
    {
      "type": "text",
      "id": "title",
      "label": "Heading",
      "default": "Trusted by leading brands"
    },
    {
      "type": "color",
      "id": "background_color",
      "label": "Background Color",
      "default": "#ffffff"
    },
    {
      "type": "range",
      "id": "logo_height",
      "min": 20,
      "max": 100,
      "step": 5,
      "unit": "px",
      "label": "Logo Height (Desktop)",
      "default": 40
    },
    {
      "type": "range",
      "id": "spacing_desktop",
      "min": 10,
      "max": 80,
      "step": 5,
      "unit": "px",
      "label": "Spacing Between Logos (Desktop)",
      "default": 40
    },
    {
      "type": "range",
      "id": "spacing_mobile",
      "min": 5,
      "max": 40,
      "step": 5,
      "unit": "px",
      "label": "Spacing Between Logos (Mobile)",
      "default": 20
    },
    {
      "type": "range",
      "id": "scroll_speed",
      "min": 10,
      "max": 60,
      "step": 5,
      "unit": "s",
      "label": "Scroll Speed (Lower is Faster)",
      "default": 40,
      "info": "Time it takes for the entire strip to complete one loop."
    },
    {
      "type": "header",
      "content": "Section Padding"
    },
    {
      "type": "range",
      "id": "padding_top",
      "min": 0,
      "max": 100,
      "step": 4,
      "unit": "px",
      "label": "Padding Top",
      "default": 36
    },
    {
      "type": "range",
      "id": "padding_bottom",
      "min": 0,
      "max": 100,
      "step": 4,
      "unit": "px",
      "label": "Padding Bottom",
      "default": 36
    }
  ],
  "blocks": [
    {
      "type": "logo_item",
      "name": "Logo",
      "settings": [
        {
          "type": "image_picker",
          "id": "logo",
          "label": "Brand Logo (SVG or PNG recommended)",
          "info": "Logos should be simple and high-quality."
        },
        {
          "type": "url",
          "id": "link",
          "label": "Logo Link (Optional)"
        }
      ]
    }
  ],
  "presets": [
    {
      "name": "Scrolling Brand Logos",
      "blocks": [
        {
          "type": "logo_item"
        },
        {
          "type": "logo_item"
        },
        {
          "type": "logo_item"
        },
        {
          "type": "logo_item"
        }
      ]
    }
  ]
}
{% endschema %}
Liquid code to Add a Scrolling Logos Section in Shopify.

Step 3: Show the Section in the Frontend

Now head back to the Shopify admin panel, Online store > Themes > Customize.

Then, from the theme editor left sidebar, click Add section and search for Scrolling Brand logos, select it.

Theme editor showing how you Add a Scrolling Logos Section in Shopify.

Click Scrolling Brand Logos to expand the customization settings. Then, from here, you can add logos and make other basic changes.

Make sure to also optimize and fix blurry logos on Shopify so they appear crisp and polished.

Theme editor showing customisation option to add a scrolling logos.

Once done customizing the section, save it. See the preview in the frontend. This is how it looks, simple and minimal.

Preview of the scrolling logos section in Shopify using code.

Why Choose the App Method?

For Shopify owners, the MIT Sections Pro app is a superior choice for a scrolling logo section due to its simplicity and robust features, including various scrolling animations like cross-logo and horizontal, which would otherwise require expert coding skills.

  • Explore a broad range of expertly designed sections that cater to any need your storefront may have
  • Begin with free templates or unlock advanced options by choosing from premium sections
  • Effortlessly add, customize, or swap out sections at any time, all without the need for technical expertise
  • Universal compatibility with all Shopify themes, fast loading speeds, and seamless design integration
  • Take advantage of limitless customization with no hidden restrictions, allowing for true brand alignment
  • Adapt your store easily as it grows by adding or exchanging sections for a fresh, up-to-date look
  • Install for free and benefit from transparent, affordable pricing that fits any business
  • Use the free trial to make sure the features and compatibility are just right before deciding
130+ Shopify Sections

Your all-in-one solution to create a professional Shopify store

Install App Now
MIT Sections Pro
Sanjay Jethva

Article by

Sanjay Jethva

Sanjay is the co-founder and CTO of Meetanshi with hands-on expertise with Magento since 2011. He specializes in complex development, integrations, extensions, and customizations. Sanjay is one the top 50 contributor to the Magento community and is recognized by Adobe. His passion for Magento 2 and Shopify solutions has made him a trusted source for...