Product Labels and Badges for Magento 2

View Demo

Product Labels adds sale, new, stock and brand labels to product images by rules and product attributes, so they appear and disappear as prices, stock and the catalog change.

Labels can show the real discount or the stock left, use one of 12 editable templates or your own image, and appear on category, search and widget listings and on the product page, on Luma and Hyvä.

  • Sale, new and low-stock labels by rules
  • Real discount % and stock left on the label
  • A brand logo for every attribute option
  • 12 editable templates or your own image
  • Nine positions, several labels per product
  • Hyvä support built in
Marketplace Approved
Hyvä
Magento Cloud
WCAG
Mage-OS
Compatible with:
Community:
2.3.* - 2.4.9
Enterprise:
2.3.* - 2.4.9

Product labels, stickers and badges that follow your catalog

A "Sale" sticker you upload once is easy. Keeping it on the right products is the hard part: the discount ends, stock runs out, a new collection arrives, and someone has to update the badges by hand.

Product Labels puts labels on product images by rules and product attributes, so they appear and disappear as your catalog changes:

  • Sale labels for products with a discount, showing the real percentage or amount saved
  • "New" labels for products added in the last N days
  • "Only 3 left" and "Out of stock" labels driven by stock quantity and status
  • A brand logo or feature badge for every option of a product attribute
  • Labels on category, search and widget listings, related products and the main product image

Most stores use labels for sales and discounts, free shipping, brand and feature badges, and out-of-stock notices. All of these run on their own once the rule is set.

Labels that switch on by themselves

A rule-based label is shown on every product that matches its conditions. You build the conditions the same way as in Magento's promotion rules, combining them with ALL or ANY:

  • Discount: percent discount, final price, or the difference between price and final price. The label reads the price after catalog price rules and special prices, so it shows the discount Magento actually gives.
  • New arrivals: Magento's "Set Product as New" dates, or days since the product was created or updated.
  • Stock: quantity in stock (for example, fewer than 5 for a low-stock label), stock status and whether the product is salable.
  • Catalog: category, attribute set, SKU, brand or any attribute available for promotion rules.

Each label also has its own customer groups, store views and active dates. For example, show a "-20%" label on pants only to visitors who aren't logged in, with the discount itself set up in a Magento catalog price rule. Product Labels shows discounts; it doesn't create them.

Configurable products are covered too: a label can follow the selected variant and update when the shopper picks a swatch, or appear on the parent product when any of its variants matches the rule.

Show the real numbers on the label

Label text can include values taken from each product, so one label works for the whole catalog:

  • "Save 25%" or "Save $30" from the product's discount percentage or amount
  • "Only 3 left" from the stock or salable quantity
  • "Sale ends in 4 days" from the special price end date
  • "Added 3 days ago" from the days since the product became new
  • Any attribute value, such as the material or warranty period

The numbers are calculated for every product in advance, when the extension rebuilds its label index, so you don't edit labels when a price or stock level changes. The list of variables is in the user manual.

Brand logos and attribute badges without a rule for each

An attribute label gives every option of a dropdown or multiple-select attribute its own image or text. Create one label for the Brand attribute, add a logo for each brand, and every product gets the logo of its brand. Stores with many brands save the most time here.

The same works for any attribute you sell by: a warranty badge, an energy class, "Made in Italy" or a free shipping badge. On configurable products, the parent shows the attribute labels of its variants.

Ready templates, your own images, or text

A label can be an image (PNG, GIF, JPG or SVG), text, or text on one of 12 ready templates: badge, price tag, rounded and wave shapes, arrow, flag, circles and a corner. Templates are HTML and LESS, so you can edit them or create your own, with a preview on test data before saving. Text labels can include HTML and emoji.

A label can also have a tooltip on hover and a link, for example to the sale page. Clickable labels work from the keyboard, and label text is marked as decorative for screen readers and search engines.

You can use the same label on listings and the product page, or a different one for each, for example a small badge in the category grid and a bigger one on the product image.

Nine positions and several labels per product

Each label goes into a placeholder: one of nine positions on the product image (top, middle or bottom, left, center or right), or a manual placeholder you add anywhere in your theme's template.

When several labels match one product, the placeholder decides how they're shown: the maximum number of labels, whether they line up horizontally or vertically, and which come first by sort order. A product on sale that's also new and low in stock doesn't end up with three badges on top of each other.

If you don't need labels on certain pages, hide them there, for example in the shopping cart.

See what a rule matches before it goes live

For instance, here's a label for a sale on bags:

  • Step 1. Set the sale dates, store views and customer groups for the label.

  • Step 2. Choose the products in the Conditions tab, for example the Bags category. After you save, the tab shows how many products the conditions match, so you can check the reach before the label's start date.

  • Step 3. Pick the image or template, the text and the position. The label grid shows a preview of each label.

The sale label appears on every bag in the category and leaves on its own when the sale dates end.

Hyvä support built in

Hyvä support is part of the extension since version 2.6.0, with no separate compatibility package to install. On Hyvä, labels show on category, search and CMS listings, related product tiles and the main product image. The only extra step is for your developer: after installing or updating, regenerate the Hyvä config and rebuild Tailwind, as described in the Hyvä guide.

Built for large catalogs

Labels are prepared in advance by their own index and rendered in the page HTML, so the storefront doesn't check rules for each product on every visit. A category page loads the labels for all its products in one database query.

The 2026 releases were focused on stores with large catalogs: labels stay visible during a full reindex, two reindexes can't run at the same time, and the index changelog is cleaned in batches, so a large backlog doesn't stall the database.

Still comparing product label extensions? Our comparison of Magento 2 product label extensions puts the paid and free options side by side on label rules, cart labels and Hyvä support, including where another one is the better fit.

Sale, new and stock labels that update with your catalog, on Luma and Hyvä.
No hidden fees
Our developers install the extension on your store and configure it for your setup, free of charge.
Lifetime access to source code
Access to free support and updates for 1 year
Updates and support prolongation - $90

Pay today $149 for the first year.

Then $90 for updates and support services per year.

Cancel anytime.

30 days money back guarantee
See it in action!
Pick a quick tutorial to learn about various aspects of this extension
Customer Reviews 32
Earn points for your review about this extension modules. $1 = 10 points
Write Your Own Review

check-circle You submitted your review for moderation.

Alex Verified Buyer
From United States
Using the module for over 1 month
Useful but needs some tweaks
Not completely bug-free, but it still saves a significant amount of time compared to building it from scratch.
Mike
From United Kingdom
Ok
Ok, work ok
Also installed:
Blog MX,  Automatic Related Products,  Elastic Search Ultimate,  AI Agent Integration (MCP)
Maarten Verified Buyer
From Amersfoort, Netherlands
Using the module for 20 days
Need some adjustments
Hmm, not 100% bugfree, but saves a lot of time to build it myself.
Also installed:
RMA,  Advanced Reports,  Advanced SEO Suite,  Google PageSpeed Optimizer,  GDPR,  Reward Points
Jacob Verified Buyer
From Vernon, Canada
Using the module for over 1 year
The best product label module for Magento
This is the best product label module I have tried. It is easy to use and powerful. From Sales to Out of stock notifications, this module makes it easy to add labels to products. They can also be shown on a variety of pages.

Also installed:
Elastic Search Ultimate,  Layered Navigation,  Advanced Reports,  Google PageSpeed Optimizer,  Product Finder,  Blog MX,  IP Geolocation Redirect and 7 more
ahmed Verified Buyer
From Cairo, Egypt
Using the module for 16 days
good
Suitable for its price
Also installed:
Improved Sorting,  Automatic Related Products,  Advanced SEO Suite,  Mass Product Actions,  Custom Form Builder ,  RMA,  Follow Up Email and 10 more
Manual & Support
Need more help?

Save time by starting your support request online and we'll connect you to an expert.

Frequently asked questions
chevron-down chevron-right

What can product labels be used for in a Magento store?

Stores most often use labels to mark sales and discounts, free shipping, brand or feature badges taken from product attributes, new arrivals and out-of-stock products.

With Product Labels, these labels follow the catalog: a sale label shows on discounted products, a "New" label on products added in the last N days, and an "Only 3 left" label when stock drops below the quantity you set. A bestseller label is set by hand, with an attribute, SKU or category.

chevron-down chevron-right

What types of labels can I create?

There are two types. A rule label appears on every product that matches its conditions (discount, new, stock, category, attributes). An attribute label gives each option of a dropdown attribute its own image or text, such as a logo for every brand.

A label can be an image (including SVG), text, or text on one of 12 editable HTML and LESS templates. You can use the same label on listings and the product page or a different one for each. To adapt a label for small screens, add media queries to its styles.

chevron-down chevron-right

Can a label show the actual discount or the stock left?

Yes. Label text can include variables that are filled in for each product: the discount percentage or amount, the stock or salable quantity, the days left until the special price ends, the days since the product became new, and any attribute value. So one label shows "Save 25%" on one product and "Save 10%" on another.

The discount is read from the final price, after catalog price rules and special prices. The variables are listed in the user manual.

chevron-down chevron-right

How do I create a product label?

  • Choose a placeholder: one of nine positions on the product image or a manual placeholder in your theme.
  • Create the label: its type, conditions, store views, customer groups and active dates.
  • Set the look: a ready template, your own image or text, and the label text.
  • Save and apply the label.

Custom CSS is optional. The quick start guide walks through the first label.

chevron-down chevron-right

Where can a label be placed?

Each label goes into a placeholder. Nine placeholders form a 3x3 grid on the product image, so you can choose the top right corner, the bottom left corner, the center and so on.

A manual placeholder puts a label anywhere on the page. To use it, add the placeholder's code snippet to your theme template. A placeholder can hold several labels, with a limit, a horizontal or vertical direction, and sort order to decide which come first.

chevron-down chevron-right

Which pages show product labels?

Labels show wherever Magento renders a product image in a list: category and search results, CMS pages and widgets, and related, up-sell and cross-sell products. On the product page, they show on the main image.

Labels aren't designed for the cart and checkout. If they appear there with your theme, hide them on those pages in the extension settings.

chevron-down chevron-right

Why does a label show on the category page but not on the product page?

The most common reason is a custom or Hyvä product gallery that doesn't have the placeholder the label uses. Add a manual placeholder to the gallery template, or choose a placeholder that your gallery supports.

If a label is missing everywhere, check that the label index is up to date (in "Update by Schedule" mode, changes wait for cron or for the Apply button in the label form) and flush the page cache.

chevron-down chevron-right

Can I schedule labels for a sale?

Yes. Each label has Active From and Active To dates, plus store views and customer groups. The dates are applied when the label index is rebuilt, which runs daily by default, so a label switches on or off on that day rather than at the exact minute.

chevron-down chevron-right

Does it work with Hyvä themes?

Yes. Hyvä support is built into the extension since version 2.6.0, so there's no separate compatibility package. Labels show on Hyvä category, search and CMS listings, related product tiles and the main product image.

After installing or updating, regenerate the Hyvä config and rebuild Tailwind. See the Hyvä guide.

chevron-down chevron-right

Does it support GraphQL or headless (PWA) storefronts?

No. Labels are rendered on the server as part of the page HTML, and the extension has no GraphQL or REST API for labels. It's built for Luma-based and Hyvä themes.

Changelog
Version 2.6.6Oct 26, 2026
Works with Mirasvit Core 2.x — Product Labels can now be installed next to version 2 of the Mirasvit Core module, as well as the 1.7.15+ versions it already supported. This means updating Core for another Mirasvit extension no longer blocks Composer from installing or updating Product Labels. Labels and their settings work the same as before.
Version 2.6.5Oct 22, 2026
Sales & engagement labels — Build Bestseller, Trending or Top Rated labels with the new "Product Popularity" conditions: Units Sold, Number of Orders, Revenue and Number of Views (last 7, 30 or 90 days or lifetime), plus Number of Reviews, Average Rating and Wishlist Adds. Show the figures in label text with variables such as [units_sold_30d], [rating] or [wishlist_count]. Figures are refreshed daily by cron or with bin/magento mirasvit:label:metric:reindex. ⚠️ Adds the mst_productlabel_metric table, so run bin/magento setup:upgrade. ([#327]())
A label display URL could inject a script on the storefront. ([#442]())
Label templates and display styles could read server files into the storefront CSS. File-reading LESS features are now refused. ([#492]())
Rule labels based on category did not update in "Update by Schedule" mode.
Saving a label without a label type produced a PHP warning. ([#438]())
Version 2.6.4Oct 12, 2026
Packaging only: the extension can be built for the Adobe Commerce Marketplace again. Two templates printed a JavaScript configuration through a form the Magento coding standard reads as unescaped output, which stopped the package build. Nothing about how the extension behaves or renders changes.
Version 2.6.3Oct 12, 2026
Magento 2.4.9 now cleans the label index changelog itself — From Magento 2.4.9, Magento clears index changelogs in small batches on its own, so Product Labels now leaves the cleanup to Magento there. On Magento 2.4.8 and older, the extension still clears the mst_cataloglabel changelog in batches so that a large backlog does not lock the table.
Product Labels relies less on the Mirasvit Core module — Saved label data, admin responses and the built-in label templates now use Magento's standard formats and tools instead of Core helpers. This prepares the extension for the next major Core version. Labels, templates and their settings work the same as before.
Clearer template preview errors — If a label template preview fails for an unexpected reason, the admin now shows "The template preview could not be rendered. Details were written to the exception log." and writes the full error to the exception log. Before, it showed the raw internal error text. Errors you can fix yourself, such as a problem in the template, are still shown as they are. The new message is translated into every language the extension ships with.
Labels from very old installations could lose their conditions. Labels created on Magento older than 2.2 might still have conditions stored in an outdated format that the label rules can no longer read, so those conditions loaded as empty. An upgrade step now converts them to the current format. Labels already in the current format are not changed. If a stored value is damaged and cannot be read, it is left as it is and a warning is written to the log.
A damaged label condition could stop setup:upgrade partway through. When labels are moved over from the 1.x data format, a damaged conditions value now becomes an empty condition set, and the upgrade continues.
Version 2.6.2Oct 2, 2026
A label whose conditions use a condition type that no longer exists showed on every product. This could happen after a downgrade, after removing an extension that supplied a condition, or after a class rename. Magento quietly skipped the condition it could not load, and an empty condition set matches everything, so the label appeared across the whole catalog. Such a label now matches no products until you fix it, and you can still open and edit it in the admin. If you save it without changing the conditions, the stored conditions are kept and a warning says the label matches no products. If you do change the conditions, they are saved and a warning says the missing condition was removed. ([#449]())
Upgrading no longer stops on the old Hyvä package — If mirasvit/module-cataloglabel-hyva was still installed, composer update refused to resolve and named no way out until you removed it by hand. Composer now removes it by itself during the upgrade.
A label display description could contain a script that ran on the storefront. The display title was already cleaned when a label was saved, but the description was not, so a <script> pasted into it was stored and shown to shoppers. Descriptions are now cleaned on save like titles, and simple formatting such as <b> still works. Labels saved before this update are not cleaned automatically, so open and save them again to clean them.
Hyvä category and search listings could show the product-page version of a label. A custom Hyvä item.phtml that rendered labels without calling setViewCode('list') got the product-page appearance in the listing. The layout now tells the block which appearance to use on each page. If your template calls setViewCode() itself, that call still takes precedence.
Attribute labels did not show on a configurable product for the attribute it varies on. For example, a label for the "Red" option of color did not appear on a configurable product whose red variant has that value, because the parent product has no color of its own. The parent now shows the labels of its variants' option values for that attribute.
Stock Status was in the wrong group in the label conditions. In the "Add condition" dropdown it appeared under Product Attribute, among the regular catalog attributes. It is now under Product Additional, next to Is Salable. Saved rules are not affected.
Fixed a PHP 8 error in the label conditions editor when a new-condition request had no condition type. The request now returns an empty response instead of an HTTP 500 error.
Fixed a PHP error when custom code looked up the admin name of a label image type. The lookup now returns the name instead of throwing a type error.
Reasons to choose Mirasvit
Client focusing and satisfaction

These are our primary. A major portion of our new clients come from referrals from our existing clients. Our professional team of developers, marketers and support staff have invested the best knowledge and experience in the field into our work, so you know you can come back to us again and again.

Remarkable support

One year free and high quality support. We go to great lengths to provide maximum satisfaction with every module you have purchased in our store. By helping you with installation, configuration, answering your every question, we do all our best to eliminate any possible problems.

Risk-free Investment

30-days money back guarantee. If you are not satisfied with our extension performance for any reason, we provide a full refund.

Constant improvements and upgrades

We constantly add new features to all our modules, and are always interested in hearing your opinion and implementing your suggested features in our future developments.

Comprehensive Documentation

We provide an expanded user guide for every aspect of our extension, so you can find answers for all your burning questions.

Unencrypted source code of our products

You can customize extension according to your needs and requirements.

Usability and Performance

The Module is easy to install and upgrade, just follow our step-by-step user guide. Additionally, the extension is ready to use with the Hyvä theme.

Ready for Magento Cloud

No core modifications. The extension has been tested in a Magento Cloud environment and is fully compatible with it.

Loading...