Notion Table & Database to CSV / Markdown
Notion table to Markdown or CSV in one click. Adds a Copy button above any Notion table or database view. No login, no API.
- Users
- 2
- Works on
- Chrome
- Version
- 3.0.3
Getting a Notion table into a doc usually ends in retyping cells or wiring up the API. A small toolbar appears above each table instead: Copy MD gives you a Markdown pipe table, Copy CSV gives you the same grid as comma-separated text.
Getting a Notion table to Markdown usually means retyping cells or wiring up the API. This adds a small toolbar above every Notion table and database table view so you can copy the grid straight from the page.
Two buttons. Copy MD writes a Markdown pipe table; Copy CSV exports the same grid as CSV. Use it to copy a Notion table into a doc, or export a Notion database to CSV for a spreadsheet. It reads the rendered table from the DOM, so there is no Notion API, no OAuth, no login. Works on the Notion web app (notion.so) and on published Notion sites (notion.site).
Screenshots

What it does
Copy MD (Markdown pipe table) and Copy CSV buttons above each table.
Works on database table views and simple inline tables.
Markdown output escapes pipe characters and flattens line breaks so each cell stays on one row.
CSV output follows RFC 4180, so commas, quotes, and newlines inside a cell are quoted correctly.
Uses the real header row when there is one; otherwise labels columns Column 1, Column 2, and pads rows to a rectangular shape.
Hidden (display:none) columns are skipped so headers and rows line up.
The confirmation shows how many rows were copied.
Toolbar follows Notion's light and dark theme.
Re-appears on its own as Notion re-renders and you move between pages.
When you'd reach for it
Pasting a table into a README or an issue
Copy MD builds a pipe table with a header row and a separator line, which is what GitHub, GitLab and most static site generators expect. Pipe characters inside a cell are escaped and line breaks inside a cell are flattened to spaces, so one Notion row stays one Markdown row instead of shattering the table.
Moving a database view into a spreadsheet
Copy CSV writes the same grid as RFC 4180 text: fields containing a comma, a quote or a newline get quoted, and inner quotes are doubled. Row order follows what is on screen, so the sort and filters you set on the view carry over. Paste it into a .csv file or use your spreadsheet's text-to-columns step.
Grabbing a table off a published Notion page
The content script runs on notion.site as well as notion.so, so a public page someone shared with you gets the same toolbar. You are reading the page that is already rendered in front of you, so no edit access to the workspace and no integration token is involved.
How to use it
- 01Open any Notion page with a table or database table view.
- 02Click Copy MD or Copy CSV in the toolbar that appears above the table.
- 03Paste into your doc, README, issue, or spreadsheet. A note shows the format and how many rows were copied.
Permissions & privacy
This extension declares no special permissions. Installing it gives it access to nothing on any site.
It runs only the code shipped inside the package — no remote code is fetched.
Questions people ask
How do I export a Notion table to CSV without using the API?
Open the page and click Copy CSV in the toolbar above the table. The grid is read out of the rendered page and written to your clipboard as comma-separated text, so there is no integration to create and nothing to authorize. Paste it into a text file saved as .csv, or into a spreadsheet and split it into columns there.
How do I copy a Notion table as a Markdown table?
Click Copy MD and paste. You get a Markdown pipe table: the header row, a --- separator row, then one line per record. If the table has no real header row, columns are labelled Column 1, Column 2 and so on, because a Markdown table requires a header to render.
Why did only part of my long table get copied?
Notion keeps only the rows near your viewport in the page and drops the rest, so what is copied is what is currently rendered. The confirmation message tells you the row count each time, which is how you can tell. Small tables and inline tables come across whole; for a long database view, scroll through it first and check the count.
What permissions does this Notion extension ask for?
None. The manifest declares no permissions and no host_permissions at all; the only access is a content script limited by matches to https://*.notion.so/* and https://*.notion.site/*, which is what lets it read the table markup. Writing to the clipboard happens inside your button click, and a click is a user gesture, so it needs no grant. The code does not use chrome.storage either.
Does it work on board, gallery, and calendar views?
No, it handles table views and simple inline tables. Other collection layouts are detected and skipped rather than given a broken toolbar, so no buttons appear above a board or a gallery. Columns you have hidden in the view are also skipped, which keeps the header row and the data rows lined up.
Related extensions
Eye Rest Reminder78 usersReminds you to rest your eyes and prevent digital eye strain with gentle break reminders.
Quick Memo74 usersA simple and elegant memo extension for your browser
YouTube Detox47 usersRemoves recommended videos from YouTube homepage and video pages.
Focus Guard3 usersBlock distracting sites with "Why are you here?" prompt. Reduce YouTube, X, Reddit, Instagram use — digital detox, 100% local.
Air Quality MonitorReal-time air quality monitor for Korean cities (PM2.5/PM10)
Auto Scroll - Hands Free Page ScrollerAutomatically scroll any web page at adjustable speed. Hands-free scrolling for reading, browsing, and presentations.