My Shopify product file has a strange character at the beginning of every description
This isn't the single byte-order-mark character that sometimes sits at the very top of a CSV file — this shows up at the start of every single description, row after row. That pattern points somewhere else: pasted formatting artifacts or an encoding mismatch that repeats because every description was written the same way. Drop your file in below and the free checker will show you exactly what's sitting at the start of each field.
What you'll see
Open the file and look at the Body (HTML) column, which holds each product's description. Every single row starts with the same odd character or short sequence — maybe what looks like a stray quote mark, a dash, a box, or nothing visible at all but a gap that shouldn't be there. It's consistent: row 2 has it, row 50 has it, row 500 has it. The import itself doesn't error; Shopify just stores the description with that character attached, and it shows up at the front of the text on your storefront.
Why this is different from a byte-order mark (BOM)
If you've read about a "weird character at the start of a Shopify product file," that's usually describing a byte-order mark — a single invisible marker Excel sometimes writes once, at the very beginning of the entire CSV file, before the header row. That's a file-level issue affecting one position in the whole document. What's described here is a field-level issue: the same artifact repeats at the start of every description cell, which is a different mechanism entirely.
The likely mechanism
Per-row repetition like this usually traces back to how the description text was originally written. If descriptions were composed in Word, or copied from a webpage, and pasted into Excel, it's common for a stylized "smart" opening quote, an em dash used as a bullet, or a non-breaking space to sit at the very start of a paragraph — that's a normal habit in word processors and web content, not a spreadsheet problem by itself. The trouble starts when that text later passes through a lossy encoding step — for example, saving through Excel's plain CSV option instead of "CSV UTF-8," or the reverse — and the byte sequence for that one stylized character gets misinterpreted. A curly quote can render as a short garbled sequence like “; a non-breaking space can render as a visible stray box or question mark. Because every description started with the same kind of character, the same mis-render shows up in every row.
How to check and fix it
First, check whether the artifact is truly identical across rows and visible in a normal cell view — that points to an encoding problem, and re-saving the file as UTF-8 CSV (or exporting fresh from Google Sheets) usually clears it. Second, don't assume a normal-looking cell is clean: a non-breaking space (Unicode U+00A0) or a zero-width space renders as nothing or as ordinary-looking blank space, and a standard TRIM formula in Excel won't remove it because TRIM only strips regular ASCII spaces. Catching those needs a Unicode-aware cleanup — for instance, a SUBSTITUTE that specifically targets the non-breaking space character before trimming — rather than trusting what the cell looks like at a glance.