Convert PDF to CSV

Pick the document type or describe what you want extracted. ExtractFox reads the PDF and exports as a clean CSV — ready for Excel, Google Sheets, a database, or any tool that takes a delimited file.

Drop a PDF or image here, or browse
PDF or image · up to 20 MB
Processed in-flight — never stored on our servers.

What should we pull from this pdf?

Or pick specific fields

Or describe it yourself

Why this matters

A naive PDF-to-CSV pass breaks the moment a field contains a comma, a quote, or a line break — 'Widget, blue, size M' becomes two columns instead of one, and every column after it shifts. ExtractFox writes RFC 4180-correct CSV: fields with commas or quotes are quoted and escaped properly, embedded newlines don't split rows, and every record has the same column count — so a Python csv.reader or a database COPY doesn't choke on row 40. A nightly ETL job ingests 200 vendor PDFs and the CSV from Adobe's export splits 'Acme Corp, Inc.' into two columns — the database load fails on row 38 every night until someone opens the file manually. Snowflake COPY and Postgres \copy reject files where embedded newlines in address fields create phantom rows.

How it works

  1. Step 1
    Upload your PDF

    Native or scanned, multi-page, up to 20 MB.

  2. Step 2
    Describe what to extract

    Pick a template (invoice, statement, etc.) or write a free-text request like 'every line item as a row'.

  3. Step 3
    Download CSV

    Headers come from the field names, values with commas or quotes are escaped correctly, and every row has the same column count.

Common use cases

Feeding a nightly PDF batch into a database COPY or warehouse load job with consistent columns, no manual cleanup
Piping extracted line items into a Python or pandas script without writing a custom parser first
Building a CSV import for an accounting tool that only accepts flat delimited files, not Excel
Bulk-converting hundreds of PDFs via the API into one CSV per document with a stable schema
Getting scanned receipts into a CSV your expense-report tool can bulk-import
Snowflake / BigQuery loads — RFC-compliant CSV that survives warehouse COPY commands
ERP flat-file imports — single-column-stable CSV for systems that reject Excel uploads

Sample output

Example: a packing list with commas in the description, quoted correctly

sku,description,quantity,unit_price
SKU-1042,"Widget, blue, size M",24,3.20
SKU-1043,"Widget, red, size L",10,3.20
SKU-1044,Shipping label roll,1,12.00

Frequently asked questions

How do I convert a PDF to CSV?+

Upload the PDF on this page, pick a document type or describe the fields you want, then click Extract and download as CSV.

How is this different from Adobe Acrobat or Smallpdf 'PDF to CSV'?+

Those tools convert positional text to comma-separated cells without escaping, so a field that itself contains a comma silently splits into two columns. ExtractFox quotes and escapes fields correctly, so downstream parsers see the same columns you do.

What happens if a field contains a comma, quote, or line break?+

It gets wrapped in double quotes per RFC 4180, and any quote inside the value is doubled (" becomes ""). Every row still has the same number of columns.

Will the CSV open cleanly in Excel and Google Sheets?+

Yes. UTF-8 encoded with proper quoting. Numbers come through as numbers. In Google Sheets use File → Import. In Excel just open the file — Excel handles UTF-8 CSV out of the box.

What about tables that span multiple pages?+

Multi-page tables are stitched into one ordered list, then written out as one CSV with a single header row.

Can I batch-convert many PDFs to CSV with a stable schema?+

On the paid plan, POST PDFs to the REST API and get CSV (or JSON) back with the same columns every time — safe to append into one growing file or load job.

What delimiter and encoding does the CSV use — will Postgres COPY accept it?+

UTF-8 encoding, comma delimiter, RFC 4180 quoting. Postgres \copy, Snowflake COPY, and Python csv.reader all handle it without extra configuration.

Can I get separate CSV files for header fields vs line items from one invoice?+

Run extraction twice with different descriptions — once for header metadata (one row) and once for line items (many rows). On the paid API, both calls can share the same uploaded PDF.

Compare to alternatives

Related extractors

From the blog