AI Text FormatterOpen the tool
ChatGPT → Google Sheets

ChatGPT to Google Sheets

Paste a ChatGPT table into Google Sheets as real cells. Copy it for Sheets with the numbers recognised, or download a .xlsx and import every table from the answer as its own tab.

How do you get a ChatGPT table into Google Sheets?

Paste the table into the box above and click Copy for Sheets / Excel; then click a cell in Google Sheets and paste. The table arrives as separate cells with the header on row one and numbers, percentages and dates recognised. For several tables, click Download .xlsx and use File → Import in Sheets to add each table as a tab. Everything runs in your browser; nothing is uploaded.

Tip: select the table in ChatGPT (or on any web page) and paste it here. Markdown, tab-separated, CSV and copied web tables are all detected.

Coming from another assistant?Claude → Google SheetsGemini → Google SheetsPerplexity → Google SheetsDeepSeek → Google Sheets

How to use it

  1. Copy the table in ChatGPT

    Select the table or use the copy button. Claude, Gemini and Copilot tables, CSV and copied web tables work the same way.

  2. Paste it above

    The grid appears as you paste. Check the header toggle and the numbers toggle if the preview is not what you expect.

  3. Copy for Sheets, or download

    Click Copy for Sheets / Excel and paste into a cell in Google Sheets, or Download .xlsx and import it for one tab per table.

  4. Format in Sheets

    Numbers arrive typed, so add SUM, sort, filters or a chart straight away.

Frequently Asked Questions

How do I paste a ChatGPT table into Google Sheets with columns?

Copy the table in ChatGPT, paste it into the box above, click Copy for Sheets / Excel, then click a cell in Sheets and paste. The clipboard carries the table as rich HTML, which Sheets reads into separate cells with the header on the first row and numbers recognised. Pasting the raw ChatGPT text instead gives you one cell per row with the | characters still in it.

Why did my numbers come through as text?

Usually one of three things: a hidden non-breaking space glued to the number, a currency symbol Sheets does not recognise in your locale, or a thousands separator that your spreadsheet locale reads as a decimal point. This page strips the hidden characters before copying, and the .xlsx download types the numbers itself so the locale cannot misread them. If a column is still text, select it and use Format → Number.

Can I import several tables as separate tabs?

Yes. Paste the whole answer, click Download .xlsx, then in Sheets use File → Import → Upload and choose "Insert new sheet(s)". Each table arrives as its own tab, with the header bold and the numbers typed. Copy for Sheets / Excel works on one table at a time — pick it with the tabs above the preview.

Does Sheets keep the header row bold?

With the .xlsx import, yes — the header row is written bold and frozen. With a paste, Sheets applies its own styling to pasted HTML and generally keeps the header cells bold; if not, select the first row and press Ctrl+B. The data underneath is unaffected either way.

What if ChatGPT wrote formulas in the cells?

A pasted cell that starts with = is treated by Sheets as a formula and evaluated, which is usually what you want for a total row. In the .xlsx download the same cell is kept as text. If you want to show a formula without running it, put an apostrophe in front of it in Sheets.

Is my table uploaded to a server?

No. Parsing, the clipboard copy and the .xlsx file are all produced in your browser. Nothing is sent anywhere, stored or logged. The only upload that happens is the one you do yourself when you import the file into Google Drive.

What goes wrong with a plain paste

Select a table in ChatGPT, copy, click into Google Sheets, paste: each row lands in a single cell, pipes included, and the dashes row sits under the header like a line of rubble. ChatGPT writes tables as markdown text, and Sheets, given text, puts one line in one cell. The copy button under the answer sometimes pastes as a grid, because it also places a rich version on the clipboard, but the cells arrive with stray spaces and non-breaking spaces attached, which is why the numbers then refuse to add up.

Sheets has two built-in repairs. Data → Split text to columns with a custom | separator breaks each row apart, after which you trim the spaces, delete the empty first and last columns the outer pipes created, remove the dashes row and convert the number-shaped text. Or you leave the pasted text in column A and write =SPLIT(A2, "|") beside it, which gives you a second copy of the table built from formulas. Both work; both take longer than the table did to generate. This page does the splitting and cleaning on paste and gives Sheets the table in the form it reads best.

Copy for Sheets: how the paste works

When you click Copy for Sheets / Excel, the clipboard receives two versions of the table at once. The first is an HTML table, which Sheets reads directly into a block of cells — the same mechanism that lets you copy a table from Wikipedia into a sheet. The second is the tab-separated text, which any destination that cannot read HTML falls back to. In Sheets, the HTML version wins: click a cell, paste, and the header is on that row with the data below it. Sheets then runs its own recognition over the cell text, so 12,400 becomes a number, 8.5% becomes a percentage and 2024-03-01 becomes a date in your sheet’s locale.

Because the cells were cleaned before the copy — hidden characters removed, markdown bold stripped, <br> turned into real line breaks — that recognition works the first time. The usual culprit when it does not is a non-breaking space stuck to a number, and that is gone before the clipboard sees it.

Download .xlsx: several tables, several tabs

Sheets opens Excel workbooks natively, which makes the .xlsx route the best way to move more than one table. Paste the whole ChatGPT answer; every table in it is detected and listed above the preview. Click Download .xlsx and you get one workbook with one sheet per table. In Google Sheets, File → Import → Upload, pick the file, and choose whether to create a new spreadsheet, insert new sheets into the current one, or replace the current sheet. Each table arrives as its own tab, with the header row bold and frozen, numbers typed, and currency and percentage formats already applied. The workbook is built in your browser; the only thing uploaded is the file you choose to import.

Locale, numbers and dates

Google Sheets reads numbers according to the spreadsheet’s locale, set under File → Settings. In a United States or United Kingdom sheet, 12,400 is twelve thousand four hundred; in a German or French one, the comma is a decimal point and the same text may be read as 12.4 or left as text. The tables ChatGPT writes almost always use the 1,234.56 convention, so if your sheet is set to a comma decimal, the .xlsx route is safer: the tool types the numbers itself from that convention and Sheets does not have to guess.

Dates follow the same logic. 2024-03-01 is unambiguous and recognised everywhere; 03/01/2024 is March in one locale and January in another. The .xlsx download keeps dates as text for exactly that reason and lets Sheets convert them once you have confirmed the format with Format → Number → Date. Percentages are stored as fractions (0.085) and formatted as percentages, which is how Sheets expects them; currency keeps its symbol as a format rather than as text, so the column sums.

Where this fits with Gemini and Sheets’ own AI

Gemini offers an “Export to Sheets” button under a table it generates, and Gemini inside Google Sheets can build a table in place. ChatGPT has no equivalent, and neither do Claude, Copilot or Perplexity; this page is the missing button for all of them. It is also the route for a table that already exists as text somewhere — a CSV attachment, a tab-separated log, a table on a web page — when what you want is a clean grid in a sheet rather than a formula exercise.

Related tools

Private and free

Parsing, copying and building the .xlsx all happen in your browser with client-side JavaScript. Your table is never sent to a server, stored or logged. No account, no limits, no watermark.