PDF to CSV Converter
Extract a PDF table into CSV that survives contact with real software: quoted values, escaped quotes, UTF-8 with a byte-order mark, and a delimiter you choose. Converted locally, never uploaded.
Why CSV instead of Excel
If you are going to look at the numbers, take Excel. If you are going to feed them to something
else, take CSV. It is the one format every tool reads: QuickBooks and Xero import wizards, bank
reconciliation templates, Pandas, R, Postgres COPY, a five-line Python script, a
Google Sheet shared with your accountant.
CSV is also the honest format. An .xlsx file can quietly store a number as text with
a leading apostrophe, or a date as a serial number with a display format bolted on. A CSV contains
exactly the characters you can see.
The three things that break CSV exports
1. The delimiter collides with the data
A merchant called SMITH, JONES & CO inside a comma-separated file will split into
two columns unless it is quoted. This converter wraps any value containing the delimiter, a
double quote or a newline in quotes, and doubles the internal quotes — the RFC 4180 rules, which
is what every importer expects.
2. The encoding is a guess
Export UTF-8 without telling Excel, and € becomes €, and any non-Latin
merchant name becomes noise. Files here are written as UTF-8 with a byte-order mark, which is the
combination Excel on Windows opens correctly. LibreOffice, Numbers and Python's csv
module all handle the BOM without complaint.
3. European Excel wants semicolons
In locales where the decimal separator is a comma, Excel treats the comma as a decimal point and refuses to split columns. Pick Semicolon from the delimiter menu and the import wizard behaves.
Numbers stay numbers. Amounts are parsed before writing, so
1,240.00 is written as 1240, not as the string
"1,240.00". Downstream tools then treat the column as numeric without a cast step.
If you would rather keep the original formatting characters, turn off Recognise numbers.
Choosing a delimiter
| Target | Use | Why |
|---|---|---|
| Excel (US/UK), Google Sheets, Numbers | Comma | Default everywhere, splits on open |
| Excel (DE/FR/ES/BR and similar) | Semicolon | Comma is the decimal separator there |
| QuickBooks, Xero, FreeAgent imports | Comma | Their column mappers expect it |
Postgres COPY, MySQL LOAD DATA | Tab | Avoids quoting entirely for most data |
| Legacy COBOL-era systems, some payroll | Semicolon | Their fixed spec says so |
FAQ
Why does Excel put everything in one column when I open the CSV?
Your Excel expects a different delimiter. If you are in a locale that uses a comma as the decimal separator, re-export with Semicolon. Alternatively use Data → From Text/CSV and choose the delimiter manually.
Are accented characters preserved?
Yes. Text is kept as Unicode throughout and written with a BOM so Excel does not guess the encoding. If a name looks wrong in Excel, it is Excel applying a legacy charset — open the same file in Google Sheets to confirm the data itself is intact.
Can a value contain a line break?
A cell can contain a newline, and it will be quoted so the row does not break. In practice this only happens with multi-line addresses, which are usually excluded with the table-only setting.
Is the CSV written on your server?
There is no server involved. The CSV string is built in JavaScript and handed straight to your browser as a download.