Add your CSVChoose one local CSV, TSV or delimited TXT file, or paste its text.
Choose the table settingsCheck the separator, paper, orientation and width settings, then select Create PDF.
Review and downloadReview the generated table and download your PDF. The download keeps the source filename with a .pdf extension; pasted text downloads as table.pdf.
Wide tables and page breaks
Fit page width
Column widths are calculated from the file contents. In Fit page width, columns are narrowed when needed and cell text wraps at 9 pt. All columns stay within the printable width; more rows can continue onto later pages. Landscape provides more horizontal space. Fitting many columns can create tall rows, so check the PDF rather than assuming a single-page result.
Actual size and column panels
Actual size keeps the calculated column widths, capped at 180 pt per column, with 9 pt text. Columns that do not fit are placed in separate labelled panels. Each panel repeats the row numbers so you can match the same record across column groups. This is a table layout generated from CSV text, not a recovery of spreadsheet print settings.
Rows and continuation
The first CSV row is the header and repeats at the top of every PDF page. A row that fits on a fresh page moves there intact. A taller row continues across pages, with an asterisk beside its row number marking continuation. Long cells wrap instead of being clipped. Quoted line breaks inside a cell remain line breaks. Each page identifies its column range.
Selectable text and displayed values
The PDF contains embedded-font text you can select and search. Plain CSV has no font styles, images, merged-cell information or rich formatting to preserve; this tool creates a new table rather than recreating a spreadsheet’s appearance.
Values remain text: leading zeroes are not removed and formula-like fields are not executed.
Support and limits
One UTF-8 CSV, TSV or delimited TXT file, or pasted delimited text. Maximum 5 MB, 20,000 data rows plus the header, 24 columns and 100,000 characters per cell. Output is limited to 1,000 pages. The parser runs in a local worker; PDF generation yields between groups of rows and has a Cancel button. Large tables still take time and browser memory.
This page targets English documents with supported punctuation. Unsupported font characters stop conversion with their code point and record location; emoji and CJK text are outside this tool’s scope. Very tall header labels can also stop conversion; shorten them or change the layout.
The parser reads comma, semicolon, Tab and pipe separators. Quoted fields can contain separators, doubled quotes and line breaks. Automatic detection chooses a separator from the first records; select it yourself when an unusual file is ambiguous. Blank records are skipped. Every nonblank record must have the same number of fields as the header, or conversion stops with a record number.
Test files and results
Tested on:
Browser checks, 17 October 2026: three self-made files converted with US Letter, portrait, Fit page width, 9 pt text and 36 pt margins. We downloaded each PDF, checked cell text and positions independently with pdfplumber, and visually inspected every rendered page. Source cell text matched after ignoring whitespace; headers repeated on every page and no checked character extended outside its cell. These results describe these files and settings, not every possible CSV.
Ordinary report: 80 data rows, 5 columns, 3 pages. Page records: 1–30, 31–60, 61–80. Source CSV · Actual PDF.
Wide table: 48 data rows, 12 columns, 3 pages, all columns present on every page. Page records: 1–19, 20–38, 39–48. Source CSV · Actual PDF.
Quoted long text: 3 data rows, 4 columns, 5 pages. The first record continues across pages 1–5; records 2 and 3 follow on page 5. Quoted commas, inner quotes, cell line breaks and the tested smart punctuation matched the source after ignoring whitespace. Source CSV · Actual PDF.
The self-hosted PDF engine and font load when you first create a PDF. Files and results are held in browser memory; there is no account or saved history.
Frequently asked questions
Why does a record have a different number of fields?
Every nonblank record must have the same number of fields as the header. Check the separator setting and the record number in the error. Enclose a field containing a separator or line break in double quotes, and write an inner quote as two double quotes. A malformed quote or inconsistent record stops conversion instead of silently shifting columns.