Free QIF to CSV Converter

Turn a .qif file from Quicken, GnuCash or Moneydance into a CSV, and choose exactly what goes in it — comma, semicolon or tab, dot or comma decimals, and the date format the receiving program asks for. No signup, and your file never leaves your browser.

A CSV is a handoff, so the bytes are the whole product

Nobody wants a CSV for its own sake. You want it because something else has to read it — YNAB, Wave, Xero, a bookkeeper's template, a script, a spreadsheet in a language that is not English. And every one of those has an opinion about the file that the file itself does not record.

There are four such opinions, and getting any of them wrong produces a file that looks fine and imports wrong:

You set all four here before downloading, and the page shows you the actual first lines of the file as you change them — not a rendering of them, the text itself.

Which separator does the program you are feeding want?

If you are opening it inSeparatorDecimal
Excel on a US, UK, Australian or Canadian-English system, comma. dot
Excel in German, French, Spanish, Italian, Portuguese, Dutch, Polish…; semicolon, comma
Google Sheets (import dialog, any language)either — it asks. dot
A bank or bookkeeper template that says “tab delimited”tab. dot
A script, or anything reading it with a CSV library, comma. dot

Excel takes the separator from your operating system's region setting, not from the file. That is why the same CSV opens in neat columns on one machine and as one long line on another.

The one combination to be careful with

Comma separator plus comma decimals. It is legal — every amount gets wrapped in double quotes so the row still parses — but a surprising number of importers read a quoted number as text and silently give you a column you cannot total. The page warns you when you pick that pair. The usual European combination is a semicolon separator with comma decimals, and it has no such problem.

QIF is one field per line, not a table

This is why a QIF cannot simply be renamed. Each transaction is spread over several lines, one field per line, with a letter at the front saying what the field is and a lone caret ending the record:

!Type:Bank
D01/05/2024
T-45.20
PSHELL
MGAS STATION
LAuto:Fuel
^

Open that in Excel and you get one column containing exactly what you see above. This page reads the structure and gives you one row per transaction, with the fields in real columns. It also has to work out two things the format never states — whether dates are day-first or month-first, and whether a dot or a comma is the decimal mark — and it tells you on screen whether each was proven by your file or guessed before you download anything.

What comes across

Split transactions are the one thing a CSV cannot carry. A row holds one transaction and one category, so a split comes out as a single line for the total with the category blank. The totals stay right; the breakdown does not. The page lists exactly which transactions were affected rather than letting you find out during a reconciliation.

CSV or Excel? The honest answer is “it depends where it is going”

These are different jobs, and the right choice is decided by the destination, not by which format is better:

CSV (this page)Excel (.xlsx)
Read byanother programa person
Cell typesnot in the file — the reader guessesstated in the file — no guess
=SUM() on openusually works; 0 when the guess is wrongalways works
You controlseparator, decimal mark, date format, layoutdate display only
Use it whensomething has told you what it wantsyou are going to do the arithmetic yourself

If a person is going to open the file and add things up, convert to Excel instead — typed cells save you a trip through Data → Text to Columns. If a program is going to read it, stay here: matching its expected separator and decimal mark is something an .xlsx cannot do for you.

Questions

Which programs' QIF files does this read?

Quicken, GnuCash, Moneydance, YNAB 4, AceMoney, KMyMoney and Microsoft Money exports all use the same field letters. Investment transactions (!Type:Invst) are a different set of fields and are skipped, with a note on screen saying how many.

Why is 2024 showing as 1924?

Quicken writes two digit years and uses an apostrophe rather than a slash to mean the 2000s: 01/05'24 is 2024 while 01/05/24 is 1924. Converters that treat both the same put a century of your transactions in the wrong place. This one handles the apostrophe. If you see a wrong century anyway, send us the file.

Accented characters in payee names come out as garbage.

That is Excel guessing the encoding. The file is UTF-8, and a byte order mark is added whenever the data actually contains non-ASCII characters, which is the signal Excel needs. It is deliberately left out when everything is plain ASCII, because a stray byte order mark makes some strict importers read it as part of the first column name.

Some transactions are missing from the download.

The page tells you when that happens and how many, rather than quietly shortening the file. A transaction is left out when it has no readable date or no readable amount. If the count surprises you, the original is worth a look.

Is my file uploaded anywhere?

No. Every converter here runs in the browser, and each page ships a Content Security Policy with connect-src 'none', so your browser refuses to let the page make any network request. Watch the Network tab in developer tools while you convert and it stays empty.

Related