You set up a sale in a spreadsheet, imported it, and some products don’t look like they’re on sale. There’s no crossed-out “was” price, just the normal price.
The usual cause is one number in the wrong place: a compare-at price that’s lower than the price.
What the compare-at price does
The compare-at price is the “was” price. Your store shows it crossed out next to the price, so shoppers can see the discount.
Shopify’s help puts the rule plainly: “Make sure that the value in the Compare-at price field is higher than the value in the Price field to display the sale price.”
So a sale only shows when the compare-at price is higher than the price:
| Price | Compare-at price | What shoppers see |
|---|---|---|
| 25.00 | 30.00 | A sale: 25.00, with 30.00 crossed out |
| 45.00 | 40.00 | No sale. The “was” price is lower than the price |
| 18.00 | 18.00 | No sale. There’s no difference to show |
| 16.00 | (blank) | No sale. That’s normal for a product at full price |
In a product CSV, the column is called Variant Compare At Price in a Shopify export, or Compare-at price in Shopify’s newer template.
How a compare-at price ends up too low
- A price increase passed the old “was” price. You raised prices across the store, and a product’s new price is now above the compare-at price it already had.
- The two columns got swapped. The sale price went into the compare-at column, and the full price went into the price column.
- One size was missed. Every variant has its own price and compare-at price. You updated Small and Medium but not Large.
- A typo. 40.00 instead of 60.00 is easy to miss in a long column.
How to fix it
- Open your product CSV and find the Variant Compare At Price column.
- On every row with a value, compare it with Variant Price in the same row.
- If the product is meant to be on sale, change the compare-at price to the “was” price. It must be higher than the price.
- If the product isn’t meant to be on sale, clear the compare-at cell.
- Import with Overwrite products with matching handles ticked, so Shopify updates the products you already have.
A cleared cell matters here. When you import with overwrite ticked, a blank cell in a column that’s in your file makes that value blank in your store. That ends the sale, which is what you want for a product that’s back at full price.
Checking every row by eye is slow, and on a big catalog it’s easy to miss one.
The easier way: Speedy CSV
Speedy CSV is a Windows editor made for Shopify product files. When you open a file, it compares the compare-at price with the price on every variant row and marks the low ones red:

Its Export for Shopify check lists them before you upload, with a link to each one:

Click Go to the first one to jump to the cell, type the right “was” price or clear it, and run the check again.
This is a warning, not a block. Speedy CSV still lets you export the file, so you decide whether each one needs fixing.
What Speedy CSV doesn’t do:
- It doesn’t flag a compare-at price that’s equal to the price. That also shows no sale, so check those by eye if you use them.
- It doesn’t know which products you meant to put on sale. It can only tell you a compare-at price is lower than its price.

FREE VERSION · FOR WINDOWS
Fix your Shopify CSV in minutes, not hours
- Save time. One-click fixes for common problems, like stray spaces and garbled text.
- No monthly fee. Pay once, manage unlimited products.
- Catch import errors first. 24 checks run before you export.
- Re-import only what changed. No more splitting big files.
- Easy to use. Built-in help, tooltips and a status bar that explains what it sees.
Free for up to 25 products or 500 rows, with no time limit. No credit card needed.


