Skip to content

Image to Markdown Table Converter

Drop or paste a screenshot of a table and get an editable grid plus Markdown. OCR runs in your browser, so the image is not uploaded.

1. Add your table

Your file stays in this tab. Only the OCR engine files are downloaded, from the jsDelivr CDN.

2. Check and edit the table

Your table appears here

Every cell is editable. Amber cells are ones the OCR was unsure about.

How to convert an image of a table to Markdown in 3 steps

  1. Add the image

    Drop a PNG, JPG or WebP file, paste a screenshot with Ctrl+V (⌘V on Mac), or choose a file. On a phone, the file picker offers the camera.

  2. Check the grid

    The table is rebuilt from the position of each word. Amber cells are words the OCR was unsure about: compare them with the image and fix them in place.

  3. Copy the Markdown

    Copy the pipe table, or open it in the full editor to sort, reformat or convert it to another format. Set "Number of columns" first if the columns were split wrongly.

Example

Text in the screenshot (try the sample)
Product       Region            Units sold
Widget A      North America          1,240
Widget B      Europe                   865
Gadget Pro    Asia Pacific           2,310
Markdown from the tool
| Product    | Region        | Units sold |
| ---------- | ------------- | ---------: |
| Widget A   | North America |      1,240 |
| Widget B   | Europe        |        865 |
| Gadget Pro | Asia Pacific  |      2,310 |

Options explained

Language
The language of the text in the image. It picks the OCR language data, which downloads the first time you use it. Choosing the wrong language mostly hurts accents and non-Latin letters; Chinese and Japanese data is a larger download.English (default) · German · French · Spanish · Italian · Portuguese · Dutch · Russian · Chinese (Simplified) · Japanese
Number of columns
Auto finds columns from the empty vertical gaps between text. If it merged two columns or split one, pick the right count and the widest gaps are used as the column boundaries.Auto (default) · 1 to 12
Layout (OCR only)
How Tesseract reads the image. "Table: one block of text" suits a cropped table. Try "Sparse text" when cells are scattered or the table has a lot of empty space, and "Automatic page layout" for a whole page with other content around the table.Table: one block of text (default) · Sparse text · Automatic page layout
Join wrapped lines
When a cell wraps onto two lines, OCR sees two rows. With this on, a row whose first cell is empty is joined to the row above. Leave it off if your table has genuinely sparse first columns.Off (default) · On
Right-align number columns
If at least 80% of the body cells in a column look like numbers, currency or percentages, the Markdown delimiter row gets a right-align colon (---:). Turn it off to leave every column unaligned.On (default) · Off

Convert other formats to Markdown

Convert Markdown to…

Browse all 36 tools

About this tool

Paste or drop a screenshot, a photo or a PNG, JPG or WebP file of a table and this tool turns it into a Markdown table you can edit before you copy it. The text is read with Tesseract.js, an OCR engine running in your browser, and the rows and columns are rebuilt from the position of every word, so both ruled and borderless tables work. Your image is not uploaded: the only download is the OCR engine itself (worker script, WebAssembly core and language data), which comes from the jsDelivr CDN the first time you recognize text. Accuracy depends on the image, so words the engine was unsure about are highlighted for you to check.

  • Paste a screenshot with Ctrl+V or drop PNG, JPG and WebP files
  • OCR runs in the browser; the image is not uploaded
  • Editable grid: fix cells, add or delete rows and columns
  • Amber highlight on words the OCR was unsure about
  • Works with ruled and borderless tables
  • Column count override and wrapped-line joining
  • Free, no sign-up, no watermark

Technical details

How an image becomes a Markdown table

The image is cleaned up on a canvas, read by Tesseract.js (the Tesseract OCR engine compiled to WebAssembly), and the table is rebuilt from the position of every recognized word rather than from its reading order.

  • Preparation: Small screenshots are enlarged, the contrast is stretched, and images with light text on a dark background are inverted, because OCR engines read dark-on-light text best.
  • Rows: Words whose boxes overlap vertically are put on the same row, so a few pixels of baseline drift do not split a row.
  • Cells: Neighbouring words with a small gap between them stay together ("New York"); a bigger gap, or a | border character between them, starts a new cell.
  • Columns: Columns are the vertical stripes where no text appears. A title that spans the table is ignored when counting them, and the narrowest gaps are merged first when you ask for fewer columns.
  • Header: The first row of the grid becomes the header row, since Markdown tables need one.
  • Confidence: Tesseract reports a confidence for every word. Cells containing a word below 70% are highlighted, and the same words are outlined on the image.

Tips and best practices

Crop to the table

Remove the page around the table before you drop the image. Less surrounding content means fewer stray words and a better column guess.

Take 2x screenshots

Tiny text is the most common cause of misread characters. Use a Retina or high-DPI screenshot, or zoom the page to 200% before you capture it. Avoid heavily compressed JPEGs.

Use high contrast

Dark text on a plain light background works best. Dark-mode screenshots are inverted automatically; faint grey text, background images and gradients lower the accuracy.

Proof-read the numbers

Zero and the letter O, 1 and l, and 5 and S are classic OCR mix-ups. Check every number against the image before you publish the table, even when nothing is highlighted.

Common problems and fixes

Handwritten tables come out wrong

Cause: Tesseract is trained for printed text. Handwriting is read poorly or not at all.

Fix: Type the table in the Markdown table editor, or photograph printed text instead.

Merged or spanning cells

Cause: Pipe tables in GitHub Flavored Markdown have no colspan or rowspan. A header that spans several columns lands in its first column, or is left out as a caption line.

Fix: Repeat the value in each column or leave the cells blank, or use HTML for the table. See the guide on merged cells in Markdown tables.

Rotated, skewed or curved scans

Cause: Rows are found by horizontal alignment. A slight tilt can make words from neighbouring lines share a row, and a rotated image is not straightened.

Fix: Rotate or straighten the image in a photo editor first, and photograph pages flat and from directly above.

Two header rows (multi-level headers)

Cause: Markdown has one header row. The second header line becomes the first data row.

Fix: Merge the two header lines into one cell text in the grid, for example "2025 Q1", and delete the extra row.

A cell that wraps over several lines becomes several rows

Cause: OCR cannot tell a wrapped line from a new row when there is no ruling.

Fix: Tick "Join wrapped lines", or fix the rows by hand in the grid.

Columns are merged or split in the wrong place

Cause: Columns are found from white space. Columns packed closer than a word space, or long text that overlaps the next column, hide the gap.

Fix: Set "Number of columns", or crop and enlarge the image so the gaps are wider.

Frequently asked questions

Can I convert a screenshot of a table to Markdown?

Yes. Take the screenshot, click the page and press Ctrl+V (⌘V on Mac), or drop the file on the drop area. The tool reads the text with OCR, rebuilds the rows and columns, and shows an editable grid and the Markdown. Check the amber cells, fix anything wrong, then copy the Markdown.

Is my image uploaded anywhere?

No. The image is read by JavaScript and WebAssembly running in your browser tab, and it is never sent to our servers or anyone else. The one network request is for the OCR engine itself: the first time you recognize text, Tesseract.js downloads its worker script, WebAssembly core and the language data from the jsDelivr CDN, so jsDelivr sees a request for those public files but not your image. Tesseract.js keeps the language data in your browser cache by default, so later visits can skip the download.

How accurate is image to Markdown table OCR?

It depends on the image. Printed text in a sharp, high-contrast, 2x screenshot is usually read well, and small, blurry, low-contrast or compressed images are not. The tool does not promise an accuracy figure: it highlights words the engine was unsure about, but a confident misread (a 0 read as O, for example) is not highlighted, so proof-read the numbers.

Can it read handwriting?

No, not reliably. The OCR engine is built for printed text, and handwritten tables usually come out with many wrong or missing words. Type handwritten tables into the editor instead.

Does it work with photos of printed tables?

Often, if the page is flat, evenly lit and photographed from directly above. Shadows, folds, curved pages and tilted shots hurt the result, and the tool does not straighten the photo. Crop the photo to the table before you use it. On a phone, the file picker usually offers the camera.

Which languages does the OCR support?

The language selector has English, German, French, Spanish, Italian, Portuguese, Dutch, Russian, Chinese (Simplified) and Japanese. English is the default. Each language downloads its own data the first time you use it, and the Chinese and Japanese data are larger downloads.

What happens to merged cells and multi-level headers?

Markdown pipe tables cannot merge cells, so a cell that spans columns is placed in its first column, and a second header row becomes the first data row. Fix these in the grid, or switch to an HTML table when the merge matters.

Is it free, and does it work offline?

It is free with no sign-up and no watermark. It needs a connection the first time you recognize text so the OCR engine files can download; after that your browser may reuse its cached copy, but offline use is not guaranteed.

Can I convert a PDF table instead of an image?

Yes. The PDF table to Markdown tool reads the text layer of a PDF directly, with no OCR, and falls back to OCR for scanned pages. You can also drop a PDF on this page.