How to Change a CSV File's Encoding to UTF-8

Updated July 2026 · By the CSVUndo team · 6 min read

The quick answer: reopen the CSV in a plain-text editor and re-save it as UTF-8 — opening and closing it does nothing on its own, you have to pick the encoding by hand. In Notepad++ use Encoding → Convert to UTF-8, then Save. In VS Code click the encoding label in the bottom status bar and choose Save with Encoding → UTF-8. In Windows Notepad use File → Save As and set the Encoding dropdown to UTF-8. The one decision that actually decides whether your import succeeds is whether to include a BOM — and that depends entirely on what rejected the file.

Re-save the file as UTF-8 in three free editors

Every method is the same shape: open the file, choose UTF-8, save. The only thing that changes is where each editor hides the encoding control. All three below are free — Notepad++ and VS Code are downloads, Notepad is built into Windows 10 and 11.

EditorSet UTF-8Where it shows
Notepad++Encoding menu → Convert to UTF-8 (or Convert to UTF-8-BOM), then SaveCurrent encoding in the status bar
VS CodeClick the encoding label in the status bar → Save with EncodingUTF-8Encoding label, bottom-right status bar
Notepad (Win 10/11)File → Save AsEncoding dropdown → UTF-8Encoding dropdown in the Save As dialog

Notepad++ draws a useful distinction in its menu: Convert to rewrites the bytes on disk, which is what you want, whereas Encode in only reinterprets the display. Always pick Convert to UTF-8. In VS Code, if the file already looks garbled when you open it, do not save yet — use Reopen with Encoding first to read it correctly, then Save with Encoding, or you will save the garbled version.

Convert to UTF-8 in Notepad++, step by step

This is the most reliable path because Notepad++ shows the current encoding the whole time.

  1. Open your CSV with File → Open. Look at the status bar along the bottom — it names the current encoding (for example ANSI or UTF-8-BOM).
  2. Open the Encoding menu and click Convert to UTF-8 for a plain UTF-8 file, or Convert to UTF-8-BOM if the system you are feeding needs the mark (see the next section).
  3. Press Ctrl+S to save. The status bar now reads UTF-8, and the file on disk is genuinely re-encoded — not just relabelled.
If the characters were already wrong before you converted — accents showing as é or boxes — the file was being read in the wrong encoding. Converting now bakes the mistake in. Fix the reading first: in Notepad++ try Encoding → Character sets to find the encoding where the text looks right, then convert. Our guide on why é turns into é walks through that specific case.

UTF-8 with or without a BOM: the choice that decides the import

Pick based on what rejected the file, not on a default. A BOM (byte-order mark) is three invisible bytes at the very start of the file. UTF-8 does not need one, but some programs use it as a hint and others break on it:

DestinationWantsWhy
Database bulk loaders, many web importers, APIsUTF-8 without BOMThe BOM bytes get read as part of the first field or header and break the load
Excel opened by double-clickUTF-8 with BOMWithout the mark Excel assumes the legacy system encoding and mangles accents

So there is no universally correct answer — the right file depends on the reader. If an importer complained, start with no BOM. If the destination is Excel and accented names look wrong on open, use with BOM.

Already UTF-8? Add or remove the BOM in your browser

If your file is already UTF-8 and you just need to add or strip the BOM (or switch the delimiter), our free converter does it locally — tick or untick “Add UTF-8 BOM” and download. To convert a genuine ANSI or UTF-16 file to UTF-8, use the text-editor steps above instead: a browser reads a dropped file as UTF-8, so it can’t re-decode a non-UTF-8 source, whereas the editors read the original encoding correctly. Nothing is uploaded either way.

Open the converter →

For the Excel side of this specifically — making accents survive a round-trip — see saving an Excel file as UTF-8 CSV, the choice between Excel’s two Save As formats in ANSI vs UTF-8 for CSV files, and the detail on why Excel needs the UTF-8 BOM.

How to check the change actually worked

Reopen the saved file and confirm two things: the status bar says UTF-8, and the accented characters look right. Both matter. The label tells you the encoding; the visible text tells you the content survived. A file can carry the UTF-8 label and still be wrong if it was converted from a bad read — that is why the eyeball check on names like José, Müller or Łódź is not optional. If they render cleanly and the encoding reads UTF-8, the file is genuinely UTF-8 and the next system will accept it.

When re-encoding can't bring the characters back

Be honest with yourself here: if the accents are already literal question marks, no editor can recover them. When a file is saved in an encoding that cannot represent a character — for example saving accented text as plain ASCII or a mismatched code page — each unrepresentable character is replaced by a literal ? at save time. That is a lossy, one-way conversion. Re-saving as UTF-8 afterwards gives you a valid UTF-8 file full of question marks; the original letters are simply not in the file any more.

The only fix in that case is to go back to the source and re-export the original — from the database, app or spreadsheet that produced it — this time choosing UTF-8 from the start. If your symptom is question marks rather than a rejected encoding, read why a CSV shows question marks instead of letters, which covers how to tell a recoverable garble apart from a permanent loss. Garbled-but-present text (é, €) is recoverable; a bare ? where a letter used to be is not.

Frequently asked questions

How do I change a CSV file to UTF-8?

Reopen it in a plain-text editor and re-save with UTF-8 chosen explicitly. In Notepad++: Encoding → Convert to UTF-8, then Save. In VS Code: click the encoding label in the bottom status bar, then Save with Encoding → UTF-8. In Windows 10/11 Notepad: File → Save As and set the Encoding dropdown to UTF-8. Just opening and closing the file does not re-encode it.

Should I use UTF-8 with or without BOM?

Match the destination. Database bulk loaders and many web importers want UTF-8 without a BOM and break on the extra bytes. Excel opened by double-click prefers UTF-8 with a BOM so accents display correctly. If an importer rejected the file, try no BOM first; if Excel is mangling accents, use the BOM.

How do I check what encoding my CSV is?

Open it in Notepad++ or VS Code and read the encoding in the status bar at the bottom of the window. VS Code shows it as a clickable label next to the line/column indicator. If accented letters look garbled, the file is not being read as UTF-8 — use Reopen with Encoding in VS Code to try the correct one before saving.

My importer says the CSV is not UTF-8 encoded — what do I do?

Reopen the file, confirm the characters read correctly, then re-save as UTF-8 without a BOM, which is what most strict importers expect. If the text was garbled on open, reopen it with the correct encoding first so you do not save the broken version. If accents were already replaced by literal ? in an earlier save, re-encoding cannot restore them — re-export the original.

Sources: Notepad++ encoding conversion is described in the Notepad++ community forum. Microsoft documents CSV encoding options for import and export in its Office support article on text and CSV files.