Do Compare-at Prices Increase Shopify Conversion Rate?
The strikethrough price is the most abused box in the Shopify admin. It can lift conversion rate. It can also train buyers to never pay full price, and put a fake former price in front of a regulator. Here's when it earns its place.

Unpopular opinion: the compare-at price field is the most abused box in the Shopify admin. And the question I get asked about it most is blunt: do compare-at prices increase Shopify conversion rate, or do they just look busy?
It takes four seconds to fill in. It puts a red number and a crossed-out number on your product page. And it feels like free conversion rate. So a lot of stores fill it in on every product, on day one, with a number they never charged, and leave it there for two years.
Here's the direct answer. Often, yes, at least at first. A higher reference price next to your real price makes the deal feel better, and pricing research has shown that effect for decades, even when shoppers suspect the reference is inflated. But a strikethrough that never changes stops reading as a sale, trains buyers to wait for a better one, and (if the higher price was never real) runs straight into deceptive pricing rules in the US and the EU. The honest version of the compare-at price can help. The permanent, invented version is borrowed revenue with legal risk attached.
That's the whole answer. The rest of this post is why, the rules, the math, and how to use the field without it turning on you.
A crossed-out price is a claim about the past. If the past didn't happen, the claim is the problem, not the font.
What is a compare-at price on Shopify?
It's the field that shows an "original" price next to your selling price.
In the Shopify admin, every product and variant has a price and an optional compare-at price. When the compare-at price is higher than the price, most themes show it crossed out, often with a "Sale" badge. Shopify's own help docs on sale pricing describe it exactly that way: set the compare-at price to the original price to show the product is on sale.
Notice the word Shopify uses. Original. The field assumes you're telling the truth about what the product used to cost. The software doesn't check. That's your job.
Why do strikethrough prices work on buyers?
Because almost nobody knows what a product "should" cost.
If you sell a $64 foam roller, the buyer has no internal price for foam rollers. They look for a number to compare against. The first one they see becomes the anchor. A crossed-out $99 next to $64 tells them "you're getting $35 of value for free," and it does that before they've read a word of your copy.
The research here is old and fairly consistent. A 1988 study in the Journal of Consumer Research by Urbany, Bearden and Weilbaker found that advertised reference prices raised how good shoppers thought the deal was, and that even exaggerated reference prices still had an effect. A 1998 review of the comparative price advertising research by Compeau and Grewal came to a similar broad conclusion: reference prices shift perceived value and willingness to buy.
So the mechanism is real. That's exactly why regulators care about it. A tool that persuades people even when it's inflated is a tool that can mislead them.
We covered the broader psychology in Shopify price anchoring strategy. The compare-at field is the most blunt, most visible anchor you have, and the only one with a specific legal standard attached.
So why don't permanent compare-at prices keep working?
Three reasons. And none of them show up in a one-week test.
Reason one: returning visitors learn the truth. The first visit, $99 crossed out looks like a deal. The third visit, it's the same deal, same red badge, same $64. Now the buyer knows the $99 was never the price. Every future sale you run gets discounted in their head before they see it.
Reason two: you train the wait. When everything is always on sale, the buyer's question shifts from "should I buy this?" to "is there a better code?" They leave to search for one. Some come back. Some find a coupon site that points them to a competitor.
Reason three: it undercuts the value case. If your page is working hard to explain why this roller is worth $64 (denser foam, a textured core, a 2-year warranty), a permanent crossed-out $99 tells the buyer that $64 is already the "cheap" price. You've made your own product look like it needs a discount to sell. I wrote about the premium version of this problem in how to write a Shopify product page for premium priced products. Short version: a price that needs a permanent sale badge is a price the page hasn't justified.
Discounting forever doesn't make you look cheap. It makes your full price look fake.
What do the pricing rules actually say?
Quick note first. I'm not a lawyer, and this isn't legal advice. It's the practical version a founder should know before typing a number into that field.
The FTC's Guides Against Deceptive Pricing (United States)
The FTC's Guides Against Deceptive Pricing have been on the books for decades. The section on former price comparisons is the one that matters here. The idea is straightforward: if you advertise a reduction from a former price, that former price should be an actual, bona fide price you offered the product at, to the public, on a regular basis, for a reasonably substantial period of time, in good faith.
The Guides specifically call out the move a lot of stores make by default: setting an inflated "original" price for the purpose of advertising a large reduction from it. That's the textbook fictitious former price.
California's three-month rule
California's Business and Professions Code section 17501 is stricter and more specific. It generally bars advertising a former price unless it was the prevailing market price within the three months immediately before the ad. California has been the home of a lot of class actions over fictitious reference prices. The best-known example is the J.C. Penney case, which settled for $50 million in 2015 over allegedly inflated "original" prices.
Your Shopify store sells into California. That makes this your rule too.
The EU 30-day lowest price rule
If you sell into the EU, the bar is concrete. The Omnibus Directive (EU) 2019/2161 added a rule to the Price Indication Directive: when you announce a price reduction, the prior price you show has to be the lowest price you applied during a period of at least 30 days before the reduction.
That kills a common trick: raise the price for a week, then "cut" it. Under the 30-day rule, the prior price is the lowest price in that window, not the inflated one.
What that means in plain terms
| Situation | Honest? | Risk level |
|---|---|---|
| Sold at $99 for months, now $64 for a 2-week sale, back to $99 after | Yes | Low |
| Bundle of three items sold separately at $32, $28 and $24; bundle at $69 with $84 crossed out | Yes, if the items really sell at those prices | Low |
| Launched at $64, compare-at set to $99 on day one, never sold at $99 | No | High |
| Raised to $99 for one week, then "on sale" at $64 | No, and fails the EU 30-day rule | High |
| "Compare at $99" meaning a competitor's price, with no competitor named or verified | Questionable | Medium to high |
| MSRP crossed out when almost nobody actually sells at MSRP | Questionable | Medium |
Look at the rows marked high. That's the default setup in a lot of stores I audit. Not out of bad intent. Out of copying what every other store seems to do.
Do compare-at prices help or hurt revenue per visitor?
This is the question the dashboard hides. Conversion rate is the number that moves first. Revenue per visitor is the number that pays you.
Run the math on a store like this: a hypothetical $64 foam roller store.
Version A, permanent strikethrough. Compare-at $99 on every visit, forever. The badge pulls impulse buyers, but most of them buy one roller and leave. Conversion rate 1.9%, average order value $64. Revenue per visitor $1.22 (1.9% x $64 = $1.216). On 10,000 visitors, that's $12,160.
Version B, no strikethrough, value case plus an add-on. The copy explains the foam density and warranty, and offers a massage ball at $18 next to the button. Slightly fewer buyers, but more of them add the ball. Conversion rate 1.7%, average order value $76. Revenue per visitor $1.29 (1.7% x $76 = $1.292). On the same 10,000 visitors, that's $12,920.
Version A "wins" on conversion rate. Version B makes $760 more on the same traffic, keeps a full price that's believable, and carries none of the pricing risk.
That's a hypothetical, and your numbers will be different. The point is the method: you can't judge the compare-at field by conversion rate alone.
Now the honest use of the field, on a bundle. Same hypothetical store. The roller sells at $32, a massage ball at $28, a stretching strap at $24. All three sell individually at those prices every day.
Before the bundle: conversion rate 1.8%, average order value $41. Revenue per visitor $0.74 (1.8% x $41 = $0.738). On 10,000 visitors, that's $7,380.
After adding a three-piece bundle at $69, with $84 crossed out: conversion rate 1.9%, average order value $52. Revenue per visitor $0.99 (1.9% x $52 = $0.988). On the same 10,000 visitors, that's $9,880.
Here the crossed-out $84 is true. It's the sum of real prices on the same store, today. The buyer can check it in one click, and when they do, it holds up. That's a strikethrough that builds trust instead of spending it.
| Setup | Conversion rate | Average order value | Revenue per visitor | On 10,000 visitors |
|---|---|---|---|---|
| A: permanent fake strikethrough | 1.9% | $64 | $1.22 | $12,160 |
| B: value case plus add-on, no strikethrough | 1.7% | $76 | $1.29 | $12,920 |
| Before bundle | 1.8% | $41 | $0.74 | $7,380 |
| Honest bundle strikethrough | 1.9% | $52 | $0.99 | $9,880 |
All four rows are hypothetical. Every number recomputes from its inputs, so check them yourself.
What about MSRP and "compare at" competitor prices?
These are the two gray zones, and they trip up a lot of brands that would never invent a sale.
MSRP. If you're a reseller and the manufacturer publishes a suggested retail price, crossing it out feels safe. It's a real number, printed by someone else. The problem is when almost nobody in the market actually sells at that price. A suggested price that every retailer ignores isn't a price anybody paid, so showing it as the "original" can mislead in the same way an invented one does. If you use it, label it clearly as the manufacturer's suggested price, and check that it's close to what the product really sells for elsewhere.
Competitor prices. "Compare at $99" sometimes means "a similar product elsewhere costs $99." Buyers almost never read it that way. They read it as your former price. If you want to make a competitor comparison, say it in words, name what you're comparing, and make sure the comparison product is really comparable. A line in your copy that names the type of product and the price range you actually found when you checked is far clearer than a red crossed-out number that implies something it doesn't say.
Here's the thing. Both of these can be done honestly. Both are also the easiest places to drift into a claim you can't back up. If you'd feel uneasy explaining the number to a customer who emailed to ask where it came from, don't put it in the field.
When is a compare-at price the right call?
Four situations. Outside these, leave the field empty.
1. A real, time-bound sale. The product sold at the higher price for a meaningful stretch, the sale has an end date, and the price goes back up after. Keep the dates and prices on file.
2. A bundle. The crossed-out number is the honest sum of items you sell separately at those prices, right now.
3. A real price change. You lowered the price for good, and you want to show it for a short window. Show it briefly, then remove the compare-at price once the new price is just the price.
4. Clearance on a discontinued item. It sold at the higher price, it's leaving the catalog, and the buyer deserves to know it's a real markdown.
Notice what's missing: "launch," "always," and "because competitors do it." If the only reason for the number is that it makes $64 look smaller, it's the wrong reason.
What should you do instead of a permanent strikethrough?
Give the buyer a real reference point. There are several that don't require inventing a former price.
Cost per use. A $64 roller used 4 times a week for 2 years is 416 uses. That's about 15 cents a session. That's a true comparison, and it's the one that matters to someone deciding whether a roller is worth it.
The alternative the buyer is really weighing. For a foam roller, it's often a sports massage. If a local massage in your area runs $80 or more, one session costs more than the roller. State the range honestly and let the buyer do the math.
The price structure itself. Charm prices, tiered bundles, and a clear add-on all shape how the price feels without a fake anchor. We tested one of these in does charm pricing increase Shopify conversion rate.
The value case, above the price. Specific materials, tolerances, warranty length, and what the cheaper version skips. On a heavy, spec-driven product this does most of the work. The same logic runs through Shopify adjustable dumbbell product page optimization, where the reference point is the cost and floor space of a full rack of fixed weights.
And if you're wondering whether discounts in general are the answer, we broke that down separately in do discounts increase Shopify conversion rate.
How do you test compare-at prices on your own store?
Split test it, and wait longer than feels comfortable.
- Variant A: product with the compare-at price showing.
- Variant B: same product, compare-at empty, with one real reference point added to the copy (cost per use, a bundle, or the alternative).
- Run it for at least two full buying cycles.
- Measure revenue per visitor, not conversion rate alone.
- Track full-price share for 60 to 90 days after: what percentage of orders happen with no sale and no code. If that number drops after you add strikethroughs, you're teaching buyers to wait.
- Watch returning visitor behavior. Returning visitors are the ones who've seen the "sale" before. If they convert worse on Variant A, they've stopped believing it.
If A wins on revenue per visitor and full-price share holds, fine. Keep it, and make sure the former price is real. If A wins in week one and bleeds afterward, you just paid for a short spike with your full price.
What does a real page rebuild look like?
The compare-at field is one small lever. The page around it is the bigger one: the order of the proof, the offer, the add-ons, the answers to the buyer's objections.
For real numbers, look at the bedding brand case study on our results page. Real client numbers, not typical results, and not a promise of what your store will do. Before: conversion rate 1.0%, average order value $125, revenue per visitor $1.25. On 10,000 visitors, that's $12,500. After: conversion rate 3.5%, average order value $231, revenue per visitor $8.10. On the same 10,000 visitors, that's $81,000.
Look at the average order value. It went from $125 to $231. That didn't come from crossing out a bigger number. It came from a page that made the buyer want more of the product.
So do compare-at prices increase Shopify conversion rate?
Often, yes, for a while. The anchor effect is real, and pricing research has shown it for decades.
But the version most stores run (a permanent, never-charged "original" price on every product) borrows conversion rate from the future, weakens your full price, and puts you on the wrong side of the FTC Guides, California's three-month rule and the EU's 30-day rule. The honest version (real sales with end dates, real bundles, real price drops) keeps the benefit without the risk.
In one line: use the field to tell the truth about a deal. Never use it to invent one.
FAQ
Do compare-at prices increase Shopify conversion rate? Often, at first, because a higher reference price makes the deal feel better. Permanent strikethroughs lose that effect over time and can break pricing rules, so judge them by revenue per visitor over months.
Is it legal to show a compare-at price on Shopify? Yes, when it's real. The FTC expects former prices to be genuine, California looks at the prior three months, and the EU requires the lowest price from the prior 30 days. Not legal advice.
What should I put in the Shopify compare-at price field? Only a price the product really sold at for a meaningful stretch, or the honest sum of a bundle's individual prices. Otherwise leave it empty.
Do permanent sale prices hurt a Shopify store? Usually. They train buyers to wait, make full price look fake, and carry the most legal risk.
What's a safe way to use strikethrough pricing? Real, time-bound sales, honest bundles, real price drops and clearance, with records of the dates and prices.
How do you test compare-at prices on your store? Split test for two full buying cycles, measure revenue per visitor, and track full-price order share for 60 to 90 days.
What to do next
Open your Shopify admin, go to Products, and add the compare-at price column to the list view. Count how many products have one. Then ask a simple question about each: did this product ever sell at that price? Every "no" is a fix you can make this afternoon.
Book Your Profit Audit
Get your free profit audit and we'll show you exactly where your product page is leaking revenue per visitor, including whether your pricing display is helping or hurting, then rebuild a high-converting product sales page in less than 15 minutes.
Or go here to check it out → revenueflows.ai
P.S. The strongest price on your page is the one a returning buyer believes on their fifth visit. If that's the crossed-out one, your real price has already lost.
Frequently asked questions
Do compare-at prices increase Shopify conversion rate?
Often, at least at first. Decades of pricing research show that a higher reference price next to the selling price raises how good the deal feels, even when shoppers suspect the reference is inflated. The catch is that a permanent strikethrough stops reading as a sale, trains buyers to expect a discount, and can break deceptive pricing rules if the former price was never really charged. Judge it by revenue per visitor over months, not conversion rate over a week.
Is it legal to show a compare-at price on Shopify?
It can be, when the compare-at price is real. The FTC's Guides Against Deceptive Pricing say a former price should be one you actually offered to the public, in good faith, for a reasonably substantial period. California law looks at the prevailing market price in the three months before the ad, and EU rules require the prior price to be the lowest price in the 30 days before the reduction. A made-up compare-at price is the problem. This is general information, not legal advice.
What should I put in the Shopify compare-at price field?
Only a price the product actually sold at, recently and for a meaningful stretch, or the honest sum of the individual prices in a bundle. If you never charged the higher price, leave the field empty and make the value case in the copy instead.
Do permanent sale prices hurt a Shopify store?
Usually, over time. A strikethrough that never changes teaches returning visitors that the crossed-out number is fiction, weakens every future sale, and pushes buyers to wait or hunt for codes. It also creates the most legal exposure, because a price that was never charged is the textbook fictitious former price.
What's a safe way to use strikethrough pricing?
Use it for real, time-bound sales where the product sold at the higher price before and returns to it after. Use it on bundles where the crossed-out number is the sum of items you sell individually at those prices. Keep records of the dates and prices so you can show the former price was real.
How do you test compare-at prices on your store?
Split test the same product with and without the compare-at price for at least two full buying cycles, then track revenue per visitor and the share of orders placed at full price over the next 60 to 90 days. A win that only shows up in week one, while full-price orders shrink afterward, is borrowed revenue.

