Markdown tables to Excel
Paste a whole answer, however long and full of prose: the tool finds every table in it, shows you rows and columns, and copies one into your spreadsheet with a single click. No file is uploaded anywhere.
The «Copy for Excel and Google Sheets» button puts the cells on the clipboard separated by a tab: that is what a spreadsheet understands right away, so the separator above applies to the CSV file. Pick the decimal mark your spreadsheet expects: a dot in English, a comma in most of Europe. Both menus apply to the CSV and to the clipboard: in the .xlsx file the numbers are real numbers, kept with the same decimals you see here (9.90 stays 9.90), and the decimal mark is the one your spreadsheet uses for its own language.
How to use it
Paste the answer into the box exactly as it is, with headings, paragraphs and tables in between: there is nothing to cut out. Below you get the list of the tables found, each with a preview, its row and column count and the point of the text it came from. Once you recognise the one you need, press «Copy for Excel and Google Sheets» and paste into the sheet: the cells land where they belong. If you would rather have a file, there are CSV and .xlsx.
Several tables in a single answer
This is the part that matters. A long answer often holds three or four tables separated by paragraphs of commentary: here you get them all at once, each labelled with the heading that precedes it, so you can tell them apart at a glance without rereading the text. The label never reaches back past the previous table, though: if two tables sit one under the other below a single heading, that heading goes to the first one and the second stays «Table 2», because two identical labels would mean two sheets with the same name and two downloads with the same file name. When there is more than one table there is also a button that downloads them all into a single .xlsx, one per sheet, with the sheet name taken from the heading. Tables written inside a code block are left out, because in there they are usually an example to read rather than data for your sheet: when there are some, the tool says how many it left behind. If the text holds only those, it takes them and tells you so.
Why copying beats downloading
Pasting is the real gesture: the clipboard gets the cells separated by a tab, which is the format Excel, Google Sheets, Numbers and LibreOffice all recognise on their own without asking questions. The CSV file is for archiving or for feeding another program; the .xlsx is for when you want every value to keep the right type, because it is the only format where the type of every cell is written inside the file: codes stay text and numbers stay numbers, with the same count of decimals you see in the preview (9.90 stays 9.90, it does not turn into 9.9). The decimal mark there is not your choice: it is put in by the spreadsheet that opens the file, following its own language.
Separator, decimal mark and BOM
CSV has no single standard. A spreadsheet set to Italian, Spanish or German expects a semicolon as the separator and a comma in decimals; English-speaking programs want a comma as the separator and a dot in decimals. Both switches sit in plain sight above the results instead of hiding in a menu, because getting them wrong is the fastest way to end up with the whole table squeezed into one column. The UTF-8 mark at the start of the file (BOM) is what tells Excel «this file is Unicode»: without it, accented letters fall apart on a double click.
The values a spreadsheet changes on its own
A code like 007 loses its zero, 3/4 becomes March 4th, 1-2 becomes January 2nd and a thirteen digit barcode becomes 8.01235E+12. Which date you end up with depends on the language of your spreadsheet, and that is exactly the point: the same cell means two different days in New York and in Rome. That is not a flaw in the text you pasted: it is the spreadsheet guessing the type of what it receives. The tool warns you and counts how many values are at risk. The .xlsx file does not have this problem, because the type of every cell is declared inside the file: real numbers come out as numbers and add up, everything else comes out as text and stays identical. For CSV and the clipboard there is instead the switch that writes those values as ="007", which the spreadsheet keeps as text. It treats an ambiguous number like 1,250 the same way, since it can mean one thousand two hundred and fifty or one point two five: when nothing else in the column settles it the tool does not choose for you, it leaves the value written as it is, and with the switch on it protects it in the CSV and on the clipboard too.
Pipes inside cells
A pipe escaped with a backslash (\|) stays inside its cell and does not split it, and the same goes for a pipe inside inline code between backticks (`CSV|XLSX`): what you read on screen is what lands in the cell. Bold, italics and backticks are stripped, because inside a spreadsheet Markdown formatting is just noise. For links you get a choice: text only (the normal setting) or text and address in two columns, in which case every column holding links gets a new one next to it with the addresses.
Ragged rows and tables without a header
If a row has a different number of columns from the others, the tool leaves it exactly as it is and says so: it does not add empty cells behind your back, because a table quietly padded is worse than a ragged one. Misaligned spaces do not matter either: what counts is the pipes, not the alignment. The pipes at the two edges are optional, as Markdown intends: inside a table that has them, | 3 | 4 is a data row like any other, and a row with one column more or less stays where it is, with its warning. What stays out is the line that is not built like the table at all: in a table with edge pipes, an italic source note after the last row (*Source: ISTAT | year 2025*) has no pipe on either side and is not swallowed as if it were data, and the same goes for an orphan row just above the header. In those cases the tool says how many lines it left out and shows you the first one. If the table has no row of dashes under its first line, it is treated as data only, and the «The first row is the header» tick says otherwise: it changes the preview, the bold row in the .xlsx and the frozen first row when you scroll.
What it does not do, stated plainly
It reads tables written in Markdown, not tables written in HTML with <table> and not tables inside an image. Cells come out as plain text: formatting, colours, merged cells and footnotes do not exist in a Markdown table, so they are not here either. A line break inside a cell (<br>) becomes a space, because a real line break would break the paste on the clipboard. An amount with a currency symbol and a percentage stay text, so you never get a number with its unit silently dropped. Past fifty tables the tool stops and tells you. The opposite trip, from a grid to Markdown code, is done by the Markdown table generator; to open an .xlsx you already have there is Excel to CSV, and to straighten a messy CSV there is Clean up a CSV.