Skip to content
Product Catalog

WooCommerce Variable Product Prices: Fix the Range Before the Display

A price range that looks wrong usually is wrong. How to read the shape of your variation pricing, and when changing the display is the right answer.

About Quick Variable Products
Article cover: Pricing a variation matrix — Quick Variable Products

Search for a fix to the WooCommerce variable product price range and you’ll find a dozen snippets and plugins that hide it, shorten it, or replace it with “From £15”. Almost none of them ask the more useful question first: why is your range ugly?

Most of the time a range that looks wrong is telling you something true about your pricing. This is about fixing that before you reach for a display filter — and about the cases where changing the display genuinely is the right answer.

Why WooCommerce shows a range

The rule is simple: if every variation has the same price, WooCommerce shows one price. If they differ, it shows the lowest and the highest, separated by a dash.

That’s not a design decision you can argue with — it’s the only honest thing to display when the product page doesn’t yet know which variation the customer wants. The question is whether the spread it’s reporting is one you meant to create.

What a wide range actually costs you

Before deciding it’s a cosmetic problem, notice what a range does:

  • The customer doesn’t know what they’ll pay. “£15.00 – £55.00” answers no question. Someone comparing three shops has to click into yours and interact with a dropdown to learn what the other two told them on the listing page.
  • It reads as the top number. People anchor on the higher figure more than sellers expect, especially where the spread is large.
  • It travels badly. Category listings, search results, product feeds and comparison sites all have to render something, and a range is the least useful thing to give them.

So a range is worth fixing. The question is whether you fix the price or the picture of it.

Four shapes a variation matrix can have

Sort your variations by price and see which of these you’re looking at:

ShapeWhat it looks likeDisplay result
FlatEvery variation the same priceOne price. No range at all.
SteppedS/M/L at one price, XL/XXL at anotherA narrow, explicable range
Genuinely variedEvery combination priced independentlyA wide range that is honest
AccidentalOne outlier nobody meantA wide range that is a bug

Check for the fourth shape first. In practice, a large proportion of “ugly range” complaints are a single variation priced at 5 when it should be 50, or a leftover sale price from a campaign that ended, or a decimal typed in the wrong place. Sorting by price surfaces it in seconds, and no display plugin will fix it — it will just hide a wrong number more attractively.

Choosing the shape deliberately

The useful principle: an axis should only change the price if it changes your cost or your value.

  • Colour almost never changes cost. Price it flat. A red shirt and a blue shirt costing different amounts needs an explanation you probably don’t have.
  • Size sometimes does — more fabric, more shipping weight. Stepping the price at the point where cost genuinely jumps is defensible and easy to explain.
  • Material or capacity usually does. Leather versus canvas, 500ml versus 2L. A wide range here is correct and the customer expects it.

If you’re pricing per variation because you never decided, that’s the accidental shape wearing the third shape’s clothes.

The case for flat pricing

Worth stating plainly because it’s underused: pricing every variation identically makes the range disappear entirely, without any code, plugin or filter. One price on the listing page, one price in your feed, one number for the customer to hold in their head.

If the cost difference between your sizes is small, flattening to a single price — absorbing the difference on the large ones and taking slightly more on the small — is frequently worth more in conversion than it costs in margin. That’s a commercial decision rather than a technical one, which is exactly why no snippet article covers it.

Setting prices when you build the matrix

Whichever shape you choose, the mechanics are the same: a base price for the product, and overrides only where the price genuinely differs.

Variation rows showing a price column where one base price is inherited and only some rows are overridden
Seeing the price column as a column is how a mispriced variation becomes obvious while it still costs nothing to fix.

Doing this at build time is considerably safer than fixing it later. When the whole matrix is on one screen you can see the price column as a column — an outlier is visible immediately, which is the moment it costs nothing to fix. In Quick Variable Products you set the base price once and type an override only on the rows that differ; everything else inherits, so the flat shape is the default rather than something you have to maintain.

The alternative — discovering a mispriced variation because a customer bought it — is a considerably more expensive way to find out.

Sale prices widen the range

A detail that catches people out: putting one variation on sale changes the bottom of the displayed range, so a product with a single discounted size suddenly advertises a much lower “from” figure than most of it costs.

That’s not necessarily wrong — it’s a legitimate promotional tactic — but decide it deliberately. If you meant to discount the whole product, discount every variation. If you meant to clear one size, expect the listing to shout about that size’s price.

When changing the display is the right answer

Sometimes the range is correct and you still don’t want to show it. Legitimate cases:

  • “From £15” instead of a range. Reasonable when the spread is genuine and the entry price is the hook.
  • Showing each variation’s price in a table, for products where customers want to compare options at a glance.
  • Hiding prices entirely until login or on request — normal in B2B, wholesale and made-to-order. That’s a different problem with its own tooling; if you go down this road, verify the price is actually gone rather than merely hidden, because prices leak through the Store API and structured data far more often than people expect.

Be clear about which layer you’re changing. Setting prices and displaying them are different jobs, and a tool that does one doesn’t do the other. Quick Variable Products sets the numbers; it doesn’t alter how your theme renders them.

The number underneath the price

One last thing worth doing while you have the matrix open: record the cost alongside the price.

Price without cost tells you what you charge but not what you keep. With cost of goods data set, you can see the margin per variation — and it’s common to find that the largest size, priced identically to the rest out of convenience, is the one you make nothing on. That’s also the figure that lets a stock count report its variance in money rather than units, which is what inventory valuation depends on.

In order

  1. Sort variations by price and look for outliers. Fix the data before anything else.
  2. Decide the shape — flat, stepped, or genuinely varied — and make each axis earn its price difference.
  3. Set a base price with overrides only where they belong.
  4. Check sale prices aren’t widening the range by accident.
  5. Only then, if the range is correct and still unhelpful, change how it’s displayed.

Four of those five steps are free and take minutes. The fifth is the one most articles start with.

Variable product pricing FAQ


Why does WooCommerce show a price range on my variable product?

Because the variations have different prices and the page does not yet know which one the customer wants, so it shows the lowest and highest. If every variation carries the same price, WooCommerce shows a single figure and the range disappears entirely.


How do I get rid of the price range?

The free way is to price every variation identically, which removes the range without any code or plugin. If the prices genuinely differ, you can change how the range is displayed — as “From £15”, as a table of variation prices, or hidden until selection — but that is a presentation change and a different tool from the one that sets your prices.


My price range looks wrong. What should I check first?

Sort the variations by price and look for an outlier. A large share of ugly ranges are a single mispriced variation, a decimal in the wrong place, or a leftover sale price from a finished campaign. No display plugin fixes that — it just hides a wrong number more attractively.


Should colour variations have different prices?

Almost never, because colour rarely changes your cost. An axis should only change the price if it changes your cost or the value to the customer. Size sometimes qualifies, material and capacity usually do, colour usually does not.


Why did putting one variation on sale change my listed price?

A sale price on any variation lowers the bottom of the displayed range, so a product with one discounted size will advertise that size’s price on listing pages. That can be a deliberate tactic, but decide it — if you meant to discount the product, discount every variation.


Is flat pricing across all variations a good idea?

Often, yes. If the cost difference between your sizes is small, absorbing it and charging one price removes the range from every listing, feed and comparison, and the conversion gain frequently outweighs the margin. It is a commercial decision rather than a technical one.


Keep reading

Related articles