How to Convert a Webpage Table into Clean Markdown (2026)
A table is the one thing on a webpage that copy-paste cannot fake. A paragraph survives a sloppy copy because a paragraph is just a line. A table is a grid, and a grid only works if the cell boundaries survive the trip. Paste one into a plain text editor and the grid collapses into a run of tabs and line breaks that no longer line up with anything. The alternative is to let the browser read the table as structured HTML and write it out as a Markdown pipe table, without the clipboard getting involved at all.
Why Copy-Pasting a Table Goes Wrong
When you select a table and press copy, Chrome puts several flavours on the clipboard at once: rich HTML, plain text, sometimes an image. Where you paste decides which flavour wins, and a Markdown editor almost always takes the plain-text one. That is where the structure dies.
- Tabs and newlines drift. Cells are separated by tab characters and rows by newlines — until a cell's text wraps onto two visual lines. Now there is a newline inside a cell, and every column after it shifts one step to the right. On a five-column table the header and the body end up with different numbers of pipes, and nothing lines up.
- Hidden columns come along for the ride. Responsive tables hide cells with CSS on narrow screens and collapse the rows you have not expanded. Depending on where the selection started, you either inherit text you could not see, or lose visible text because the selection never reached it.
- Links and bold turn into noise. A cell holding a link usually arrives as bare anchor text with the URL gone — exactly the value you wanted to keep. Bold becomes
**in some editors and nothing at all in others. Badges, superscript footnotes and nested<span>wrappers inside a cell behave unpredictably.
The result is a table that looks like a table and is wrong in three places. You spend the next ten minutes counting pipes instead of reading the numbers.
The Table Picker: Read the Page, Not the Clipboard
VKT Note is a Markdown notebook that lives in Chrome's side panel. The table picker is a button in that panel, and it starts from the opposite direction: instead of asking you to select the table, it asks the page what tables it contains. Nothing needs to be highlighted, and nothing passes through the clipboard.
The scan covers every <table> element in the current tab, including tables rendered inside Shadow DOM and inside same-origin iframes, and it keeps up with pages that append rows while you scroll. Cross-origin iframes are a different story, covered under the limits below.
What comes back is a list — one entry per table, each showing its size as rows × columns and the first 60 characters of its text. The preview is the part that earns its keep. A long page might hold a layout table, a cookie banner table and the data table you actually want, and all three look identical to a converter that only sees markup. A 12 × 5 entry starting with "Plan Monthly" is obviously the pricing grid. A 2 × 1 entry starting with "We use cookies" is not.
- Click the table button in the side panel. The list of tables on the current page appears, with sizes and previews.
- Pick one, or pick several. A single click handles the common case; a multi-select is there for pages that split one dataset across two tables.
- Insert. Several tables become separate Markdown tables in the same note, in the order they appeared on the page — not the order you clicked them.
- See what you took. The page scrolls back to the source table and draws an outline around it, so you can confirm the match without hunting for the block again.
Three clicks, no clipboard, and the note is already in the panel you were going to type in. That last part matters on long pages, where the usual workflow is scroll up, copy, scroll down, paste, discover the columns do not line up, scroll up again.
Two Faster Paths
Right-click inside the table
If you are already reading the table, selecting the whole thing is the tedious part — dragging across a twelve-row grid tends to drop the last row. Select any text inside the table instead, right-click, and choose Save to vkt-note. The extension notices that the selection sits inside a table and expands it to the full table before converting, so a single cell or a single row is enough to get the complete grid.
Paste an HTML table into the editor
Copy a table the normal way, then paste it into a note. If the clipboard carries HTML — which it does for a browser copy — the editor converts it into a Markdown table on paste. This is the path for tables that are already on your clipboard from another app, or for a table you copied before deciding where it should live.
Which one to use: the picker when the page is long and you want to choose deliberately, the right-click path when your cursor is already in the table, and paste when the table is already copied.
What You Can Do Once the Table Is Markdown
A table that lands in a notebook stops being a screenshot. The cells are editable text, the columns are pipes you can add or move, and you can put a heading above the table and write your conclusion underneath it in the same note.
- Task lists. Add
- [ ]rows below the table to track which figures still need checking. The checkboxes are clickable and stay checked. - Search. Search across your notes for a value and you find the page the table came from, not just the number — which is the part a screenshot always loses.
- Pin. Reference tables you return to weekly can be pinned to the top of the list instead of scrolled for.
- Export. Download the whole note as a .md file, free tier included, and drop it into a repo, an Obsidian vault or an AI prompt. The pipes survive the trip.
- Everyday editing. A toolbar for bold, italic, strikethrough, H1–H3, links, code, lists, quote and a divider; auto-save two seconds after you stop typing; word count; a full-screen preview; and a seven-second window to undo a delete, which also returns the daily quota.
Known Limits, Stated Plainly
Merged cells get flattened
Markdown pipe tables have no syntax for colspan or rowspan. There is no standard way to say "this header covers three columns", so VKT Note writes every cell as an ordinary cell. A header merged across three columns becomes one filled cell and two empty ones, or the label stays in the first column only. The data is all there; the layout is not. Expect to spend a minute fixing the header row by hand after the insert. It is better to say this up front than to promise a perfect merge and let you find out later.
Tables that are not really tables
Two kinds of table cannot be scanned, and neither is a bug that a future update will quietly fix. Virtualised tables keep only the rows currently on screen in the DOM — if 20 of 5,000 rows exist as elements, those 20 are all any tool can read. Canvas-based tables, common in dashboards and some charting libraries, draw pixels rather than elements, so there are no rows to walk at all. A table inside a cross-origin iframe belongs to another document on another domain, and an extension is not permitted to reach into it.
For those pages, the honest options are the site's own export button, or the right-click path if the text is selectable. Expand "load more" rows and open collapsed sections first — the picker reads the current DOM, not what you remember seeing.
Frequently Asked Questions
Can I convert tables on the free plan?
Yes. The table picker, the right-click path and HTML table pasting all work on the free tier, which allows 3 notes per day. Deleting a note you created today returns that slot to the quota, so a mistaken insert does not cost you anything.
Does the picker find tables inside iframes and Shadow DOM?
For same-origin iframes and for tables rendered inside Shadow DOM, yes — the scan reaches them. A cross-origin iframe is a different document on another domain, and the extension is not allowed to read it, so tables inside it will not appear in the list.
Can I insert several tables at once?
Yes. Select more than one table in the picker and they are inserted as separate Markdown tables in the same note, ordered by their position on the page rather than by the order you clicked them.
Is any of this data uploaded?
No. Notes are stored locally in the browser using chrome.storage.local with the unlimitedStorage permission. There is no account, no analytics and no server that receives your notes.
Are merged cells preserved?
No. Markdown pipe tables have no syntax for colspan or rowspan, so merged cells are flattened into ordinary cells and the header row may need a minute of manual adjustment after the insert.
Our pick: VKT Note is a side-panel Markdown notebook where a table becomes a note in three clicks — and every note stays in chrome.storage.local, no account, no upload. The free tier covers 3 notes a day (delete one of today's to get the slot back). Premium is $2.99 per month or $9.99 one-time via Creem, and adds unlimited notes, JSON export of everything and priority support.
More VKT tools live in the extensions catalog, or reach us at [email protected].
