PDF to Excel

Pull the tables out of a PDF into an editable Excel spreadsheet — free, no watermark, no signup.

Up to 25 MB. Tables in text-based PDFs convert best. Processed in memory, never stored.

The result downloads automatically when ready.

100% free No signup No watermark Files processed in memory, never stored

How it works

  1. Upload. Choose a PDF that contains one or more tables (up to 25 MB).
  2. Extract. Press Convert to Excel — every detected table is read into its own sheet.
  3. Download. Your .xlsx workbook downloads automatically; the PDF is never stored.

About this tool

PDF to Excel finds the tables in your PDF and rebuilds them as a real .xlsx workbook you can sort, filter and edit, instead of leaving the numbers trapped as flat text. Each table it detects becomes its own sheet, labelled by page, so a multi-page financial PDF comes out organised rather than as one jumble. It works on PDFs that contain genuine, ruled or aligned tables; a scanned image of a table has no data layer to read. No watermark, no signup, and the PDF is parsed in memory and discarded.

What people use it for

  • Get a bank or invoice table into a spreadsheet without retyping
  • Reuse data from a PDF report in your own calculations
  • Turn a price list PDF into a sortable, filterable sheet
  • Extract a results table from a research PDF for analysis

Developer API

Automate this tool from your own code. Send a POST request to the endpoint below and get the same result the web tool produces. It is rate-limited per IP and needs no signup — API keys for higher limits are coming.

POST https://best.free/api/tools/pdf-to-excel/
Parameter Example Required Notes
file (file) report.pdf Yes PDF with tables, ≤25 MB.
curl -X POST https://best.free/api/tools/pdf-to-excel/ \
  -F 'file=@report.pdf' \
  -o tables.xlsx
import requests

files = {"file": open("report.pdf", "rb")}

r = requests.post("https://best.free/api/tools/pdf-to-excel/", files=files)
with open("tables.xlsx", "wb") as out:
    out.write(r.content)
const fd = new FormData();
fd.append("file", fileInput.files[0]);

const r = await fetch("https://best.free/api/tools/pdf-to-excel/", { method: "POST", body: fd });
const blob = await r.blob();  // the tables.xlsx

Response: An .xlsx workbook, one sheet per detected table.

Frequently asked questions

It detects the ruled or aligned tables inside the PDF and maps each table cell to a spreadsheet cell. Text that is not laid out as a table is left out, because there is no grid to place it in.

Each detected table is written to its own sheet in the workbook, named by the page and table number, so a multi-table document stays organised instead of merging into one grid.

Not reliably. A scanned page is an image with no underlying text or table structure to read, so use a text-based PDF that was exported from a spreadsheet or document for a clean result.

The tool tells you no tables were detected rather than handing back an empty file. This usually means the PDF has no genuine table structure, only free-flowing text.

Cell values are written as text exactly as they appear in the PDF, so they stay faithful; you can apply a number format in Excel if you want to calculate on them.

Neither. The .xlsx contains only your extracted data, and the PDF is parsed in memory and discarded the moment the workbook is returned.

Yes. POST your file as multipart/form-data to /api/tools/pdf-to-excel/ and the processed file streams straight back — the same engine the web tool uses, so results are identical. It is rate-limited per IP like the web version and needs no signup; API keys for higher limits are coming. See the API section above for ready-to-run curl, Python and JavaScript examples.
Rate this page
5.0/5 (0)

What could we improve? Your feedback helps us fix issues.