CSV to PDF Table Converter
Upload or paste a CSV, pick the page size and orientation, and get a real PDF table with a bold header repeated on every page.
- Free
- No account
- Runs in your browser
- Nothing uploaded
Choose a CSV file — its first row becomes the bold header. Everything is laid out in your browser; nothing is uploaded.
Runs entirely in your browser — your input is never uploaded, logged, or stored.Privacy policy
What is CSV to PDF Table Converter?
CSV to PDF turns a comma-separated table into a real, printable PDF table. Pick a CSV file, choose A4 or Letter and portrait or landscape, and the tool reads the first row as the header, lays every data row out underneath it in columns, and gives you a PDF you can download, print or email. It is the everyday job of getting a spreadsheet export — a price list, a mailing list, a stock report, a set of results — out of a cell-and-comma file and into something that looks like a document. The whole layout runs inside your browser tab: the CSV is read with the same file-picker tools the rest of the site uses, and nothing you open is uploaded anywhere.
The table is honest about its geometry. The first non-blank row is the header, drawn in Helvetica-Bold on a light grey band; every row below it is body text in regular Helvetica at 9 pt. Each column is measured in the font it will be drawn in — the header in bold, the data in regular — and sized to the widest text it holds, so a column of long customer names gets more room than a column of single digits. If the columns together are narrower than the page they are widened to fill the width; if they are wider, they are shrunk in proportion to how far each is above a floor, so the widest column gives up the most and no column collapses. The header is drawn once per page, so a table that runs onto a second page still begins that page with a bold header row — a reader never has to scroll back to find out what a column is.
No data is dropped. A value too long for its column is wrapped onto extra lines and shown in full, and a column that spare width would otherwise stretch is capped at half the usable width so a long value wraps onto several readable lines rather than running the full page as one very wide line. The single bounded case is a cell that would need more lines than a page can hold: it is cut at the page's row limit and the last visible line ends with an ellipsis (…), so the reader can see that something was left out rather than being silently misled. A row is never split across a page break. A CSV that is empty, has no data rows, or has a row whose cell count does not match the header is refused by name, because silently padding or shifting a column would misalign the whole table.
The one limit to know before you start is character coverage. Only the two standard PDF fonts are used — Helvetica and Helvetica-Bold — which encode the WinAnsi character set (PDF 32000-1 Annex D): Latin letters including Western European accents (é, ü, ñ), digits, and common punctuation such as curly quotes, the em dash and the euro sign. Characters outside that set — Chinese, Japanese, Korean, Arabic, Hebrew, Cyrillic, Greek, Devanagari, mathematical symbols such as ≤ or ∞, and all emoji — cannot be drawn. Every character in the CSV is checked against the embedded font before anything is drawn, and the offenders are named in a specific message rather than being replaced with an empty box or dropped.
This is a one-way converter: it builds a new PDF from a CSV, and it does not read an existing PDF. If you need the reverse — a table pulled out of a PDF — that is a different tool. The CSV itself is never modified, so you can change the page size and create another version from the same file. Everything runs on your own device, and your browser's Network tab will show that no request carries your file.
1. The CSV text is parsed into a grid, honouring RFC 4180 quoting: a double quote at the start of a field opens a quoted field, a pair of double quotes inside one is a literal quote, and a comma or line break inside a quoted field does not split the field. A double quote inside an already non-empty unquoted field is kept as a literal character, so a value such as Café — "quoted" • prints exactly as written. CRLF line endings are tolerated. 2. Blank rows (every cell empty) are ignored, so a trailing newline is not a ragged row. The file must not be empty, must have at least a header and one data row, must not exceed 1,000,000 characters, and every row must have exactly as many cells as the header — otherwise it is refused by row number. 3. The page box is resolved from the size (A4 = 595.28 × 841.89 pt, Letter = 612 × 792 pt) and the orientation (landscape swaps the axes). A 36 pt (half-inch) margin is taken on all four sides, and a table so wide that a column would have less than a glyph's room is refused with the page named in the message. 4. Each column's natural width is the widest of its header cell (measured in Helvetica-Bold) and its data cells (measured in Helvetica), plus 10 pt of inner padding. Columns are then laid out to the content width: if the natural widths fit, the spare width is shared equally but each column is capped at half the usable width; if they overflow, every column keeps a 24 pt minimum and the remaining width is shared in proportion to how far each column sits above that minimum. 5. Every character in the header and the data is probed against the embedded font, and any character outside the WinAnsi set is refused by name before anything is drawn. 6. Each cell is word-wrapped to its column's usable width, with a word wider than the column broken character by character. A row is as tall as its tallest cell. A cell that would need more lines than fit between the header and the bottom margin is cut at that limit and its last line ends with a visible ellipsis (…). 7. The header is drawn at the top of the page on a grey band, then each row below it, dropping by the row height. When the next row would cross the bottom margin, a new page begins and the header is drawn again at the top. The two faces are registered under the fixed resource names /F1 (body) and /F2 (header). The document is saved with AllUtil as producer and returned to the browser.
| Page size | Portrait (width × height) | Landscape (width × height) | Size on paper | |
|---|---|---|---|---|
| A4 | 595.28 × 841.89 pt | 841.89 × 595.28 pt | 210 × 297 mm | |
| Letter | 612 × 792 pt | 792 × 612 pt | 8.5 × 11 in |
Worked examples
- "name,age,city\nAlice,30,Paris\nBob,25,London" on A4 portrait → table.pdf, 1 page, 2 data rows, 3 columns, 0 truncated cells; the drawn text reads "name age city Alice 30 Paris Bob 25 London".
- The header is drawn in bold Helvetica and every body cell in the regular face — the content stream uses /F2 for the header lines and /F1 for the data lines.
- 60 rows, "label,value\nRow1,1 … Row60,60", on A4 portrait → 2 pages: 41 rows under the header on page 1 and the remaining 19 on page 2, with the bold header "label value" drawn again at the top of page 2.
- A CSV with the header note and one quoted data cell, "This is a long but well spaced sentence that should wrap across several lines in its column.", on A4 portrait → 1 page, 0 truncated cells; the sentence is wrapped onto several lines and every word is still present.
- A single cell of 10,000 "a"s on A4 portrait → 1 page, 1 truncated cell: 61 lines fit between the header and the bottom margin, and the last line ends with "…".
- A4 landscape swaps the axes, so the page is 841.89 × 595.28 points wide × tall.
- A CSV whose header is city,price and whose row is Café — "quoted" • and €10 is drawn exactly as written: é, the em dash, the double quotation marks, the bullet and the euro sign are all inside the WinAnsi set.
- "name\n中文" is refused with a message naming "中" and "文", because the built-in font cannot draw them.
- "id,customer\n1,Jonathan Appleseed Beaumont" → the customer column starts well to the right of the id column, because it holds far more text.
- The output is named after the CSV: "customers.csv" → "customers.pdf"; with no input name the fallback is "table.pdf".
How to use CSV to PDF Table Converter
- Choose a CSV file — drag it onto the drop area, click to pick it, or paste a copied file. The tool accepts .csv and text/csv.
- Pick the page size (A4 or Letter) and the orientation (portrait or landscape). Landscape fits more, wider columns.
- Check the preview of the first rows and the column count, then click "Create PDF".
- If the CSV is empty, ragged, too wide or holds a character the font cannot draw, the exact reason is shown instead of a file.
- Click "Download" to save the PDF, named after your CSV file. The CSV on the page is untouched, so you can change the settings and create another version.
Common errors
- "That CSV is empty — there is nothing to turn into a table." — the file contains nothing, or only spaces and blank lines. Open it and check it saved correctly.
- "That CSV has no rows — a table needs a header row and at least one data row below it." — the file has a header but no data. A single row is a header with nothing to show.
- "Row 2 has 3 cells, but the header has 2. Every row in a CSV table needs the same number of columns — check for an unquoted comma or a stray line break inside a field." — a row has a different number of cells from the header. Wrap any field that contains a comma or a line break in double quotes, so it is read as one cell.
- "Your text contains "中", "文", which the built-in font cannot draw. Helvetica covers the WinAnsi character set — Latin letters (accents included, such as é and ü), digits and common punctuation such as curly quotes, the em dash and the euro sign — but not Chinese, Japanese, Korean, Arabic, Hebrew, Cyrillic, Greek, Devanagari, mathematical symbols or emoji. Remove or replace those characters." — the CSV has a character outside the font. The message names every offending character; remove or replace them, because this tool cannot embed a full Unicode font.
- "This CSV has 200 columns, which leaves 2.6 pt for each on A4 portrait — too little to draw any text. Choose landscape, or split the CSV so it has fewer columns." — there are more columns than will fit on the page. Landscape gives each column more room; a table with more than a few dozen columns needs splitting.
- "That CSV is 1,000,003 characters — the limit is 1,000,000 per table, because the whole layout is held in your browser's memory. Split it into smaller files." — the file is larger than the tool will lay out in one go. Split it into smaller CSVs.
- "legal" is not a page size this tool offers. Choose A4 (210 × 297 mm) or Letter (8.5 × 11 in)." — a page size outside the two offered was requested. The widget only offers A4 and Letter.
- "sideways" is not an orientation this tool offers. Choose portrait or landscape." — an orientation outside the two offered was requested. The widget only offers portrait and landscape.
- My long cell looks cut off with a "…" at the end — that cell needed more lines than fit between the header and the bottom margin, so it was cut at the page's row limit and the ellipsis marks where. Shorten the value, widen the page with landscape, or split it into a smaller table so its rows do not reach the limit.
FAQ
How do I convert a CSV to a PDF?
Choose your CSV file, pick A4 or Letter and portrait or landscape, and click "Create PDF". The first row becomes a bold header and every row below it becomes a table row; the finished PDF is built in your browser and offered as a download named after your CSV.
Is my CSV uploaded to a server?
No. The file is read and laid out entirely inside your browser tab, and the PDF is created there with pdf-lib. You can confirm in your browser's developer tools, on the Network tab, that no request carries your file.
What page sizes and layouts can I choose?
A4 (210 × 297 mm) or Letter (8.5 × 11 in), each in portrait or landscape. Landscape swaps the width and height, which gives more horizontal room for a table with many or wide columns.
Will my commas and quotes survive the conversion?
Yes. Fields are parsed with the RFC 4180 quoting rules: a quoted field may contain commas, line breaks and doubled quotes. A double quote that appears inside an unquoted field is kept as a literal character as well, so a value like Café — "quoted" • is printed exactly as written rather than losing its quotes.
Is the header repeated on every page?
Yes. The first row is drawn in bold Helvetica on a light grey band at the top of every page, so when a long table spills onto a second page the reader can still see what each column is without going back.
What happens if a cell is too long for its column?
It is wrapped onto extra lines and shown in full, not cut off. If a cell would need more lines than a page can hold, it is cut at the page's row limit and the last visible line ends with an ellipsis (…), so you can see that something was left out. No value is ever silently dropped.
Can I convert a CSV with emoji, Chinese or Arabic characters?
Not with this tool. It uses the standard PDF fonts, which cover the WinAnsi character set — Latin letters (accents included), digits and common punctuation such as curly quotes, the em dash and the euro sign — and nothing else. If the CSV contains a character outside that set, the tool names it and stops. You would need a PDF tool that embeds a full Unicode font for those scripts.
Can the tool read an existing PDF or edit my CSV?
No. It only creates a new PDF from a CSV, and it never modifies the CSV — the original file is untouched, so you can change the page size and create another version. To take a table out of a PDF you need a PDF-to-table tool, which is a different job.
Why do my numeric columns line up as text?
CSV stores every value as text, and so does the PDF — the tool draws the characters exactly as they appear, flush left in each cell. There is no right-alignment or number formatting; if you need figures aligned on the decimal point, format them in the CSV first.
Related tools
- JSON to CSV ConverterPaste an array of JSON objects and get a clean CSV table — rows, columns and correct quoting, all converted in your browser with a copy button.
- CSV to JSON ConverterPaste a CSV table and get a clean JSON array of objects — the header becomes the keys, every row becomes an object, with a copy button and no upload.
- Text to PDFPaste or type your text, choose the page size, font size and margins, then download a paginated PDF — laid out in your browser and never uploaded.
Prefer AllUtil on Google
One click adds AllUtil to your Google preferences. You'll see our tools highlighted with a Preferred badge in Search and AI answers.