MSRX Tools

Text to Table

Pull structured rows out of unstructured text, as CSV or JSON.

This tool sends your text to a server. Nothing else on this site does.

Text to pull rows from

0 of 20,000 characters

Result

Press Extract the table and the answer is written here.

Ask about Text to Table

Questions about what this tool does, which option to pick, or what it can and cannot handle.

The question you type here is sent to an AI provider to be answered — your files and whatever you put in the tool above are not, and the assistant cannot see them. Answers are generated and can be wrong. So is what the tool above produces — it runs on a model too.

About the Text to Table

Data arrives shaped like prose more often than anyone plans for. A supplier sends the month's orders in the body of an email. A conference publishes its speakers as a page of headings. A colleague pastes forty addresses into a chat message. The information is all there and structured in a way a person recognises instantly and a spreadsheet cannot use at all.

This page pulls the repeating records out and returns them as a table. CSV to open in a spreadsheet, JSON to feed something, or a Markdown table to paste into a document. Either name the columns you want, or leave the field blank and let it work out the smallest set that captures what the records actually hold.

The rule that makes the output trustworthy is that values are copied rather than tidied. Dates keep the format they were written in. Abbreviations stay abbreviated. A misspelt name comes through misspelt. Currencies are not converted. Every one of those transformations is easy to perform and destroys the thing you needed most, which is the ability to check the table against the source and see that they match.

Empty cells work the same way. When a record does not state a value, the cell is left empty — not inferred, not carried down from the row above, and not filled with N/A or unknown, which are strings that will need cleaning out later. Carrying values down is the failure that does the most damage, because it produces a table that is complete, plausible and wrong in a way that no sanity check catches.

The CSV is written properly: fields containing a comma, a quotation mark or a newline are quoted, and quotation marks inside a quoted field are doubled. That is the difference between a file that opens correctly and one where a single address containing a comma shifts every column after it.

Where the text genuinely has no repeating structure, it says so rather than manufacturing a table out of one.

How to use it

  1. 1Paste the text holding the records — an email, a page, a list, a set of notes.
  2. 2Pick the output: CSV for a spreadsheet, JSON for code, Markdown for a document.
  3. 3Name the columns you want if you know them; leave it blank to have them worked out.
  4. 4Keep unstated values blank rather than guessed, unless you have a reason to want inference.
  5. 5Open the result and spot-check three rows against the source before you use it for anything.

Questions

How accurate is the extraction?
Good on text with an obvious repeating pattern, less good where records vary in shape or where one field is easily mistaken for another. Always check a few rows against the source. The characteristic error is not a garbled row, which you would notice, but a value landing in the wrong column in a way that looks entirely reasonable.
Why will it not fill in the blanks?
Because an inferred value is indistinguishable from a stated one once it is in a spreadsheet cell, and the whole worth of extracted data is knowing where it came from. A blank cell is a visible question. A carried-down value is an invisible error that survives every check you would think to run.
Can it read a PDF or a spreadsheet?
Not directly. Extract the text first with the PDF tools here, which work entirely on your own machine, and paste the result. If your data is already in a spreadsheet it is already a table, and the conversion tools on this site will move it between formats without a model being involved at all.
What if some records are missing a field entirely?
The column still appears, with empty cells where the value is absent. Dropping a column because it was often empty would hide the fact that the source is incomplete, which is usually the thing you most need to know.