Skip to content
notionsolutions

A practical library for building,
organizing and working in Notion.

Workflow guides

Export a Notion Database to CSV, Excel or Google Sheets

A Notion CSV is a snapshot of one view's rows with every value turned into text. The desktop and mobile export route, what 11 sources say each property becomes, an Export view with helper formulas for relations, people and dates, and how to open the file in Excel or Google Sheets.

Published
Stacked clear glass layers joined by blue glass rods feeding a brushed steel slot that turns out one flat white sheet ruled with rows, next to the headline Export Notion Database to CSV
Several linked layers go in, and one flat sheet of rows comes out; relations travel as text.

To export a Notion database to CSV, open it as a full page, click ••• at the top right, choose Export, set Export format to Markdown & CSV and click Export. Notion downloads a ZIP; unzip it and open the CSV in Excel or Google Sheets. The file holds values only: formulas and rollups arrive as results, relations as text with Notion links, and your views, filters and colors stay behind. I'd build a dedicated Export view before the first export, because the file only ever contains one view's rows.

For a one-off handoff to a client or an accountant, use the built-in export below. For a handful of rows you need right now, copy and paste them into a sheet. For a report you rebuild every week, a sync or export connection saves you from repeating the clicks. This guide is about databases; Notion's export help says a page that isn't a database exports as a Markdown file instead.

What a Notion CSV keeps, property by property

Notion's help describes only part of the file, so this section compares what 11 published sources say lands in each cell: three Notion help pages, one user report on a Q&A forum, one editorial write-up and six guides from companies that sell related tools, from sync add-ons to backup services. Each count is how many of the 11 describe that property; a source that says nothing about a property isn't counted for it.

What lands in each CSV cell, by property type, across 11 published sources
PropertyWhat lands in the cellSources that say soCatch
FormulaThe last calculated result, as text or a number4 of 11The formula itself is gone, and the value is frozen at export.
RollupThe result at the moment of export4 of 11Export again after the related pages change.
CheckboxYes or No2 of 11Words, not a spreadsheet checkbox.
PersonThe member's name2 of 11Use an email helper if the destination matches people by email.
Files & mediaA link to the file, not the file2 of 11Download files you need separately.
Select and statusThe option label1 of 11Option colors don't survive.
Multi-selectLabels separated by commas1 of 11Split the column in the sheet if you need one label per cell.
DateText as Notion displays it1 of 11Excel may or may not read it as a date, per sync2sheets; the Due ISO helper below sets the format.
Rich textPlain text; bold, links and mentions stripped2 of 11Line breaks inside a cell survive and can confuse an import.
RelationText with a Notion URL, per Notion's help; other sources differ8 of 11, and they conflictSee the next paragraph; the Client names helper below settles it.
Views, filters, sortsNothing; you get one view's rows and visible columns4 of 11Choose the view before you export.

The relation cell is where the sources split: eight of the 11 describe it, and they don't agree. Three put a link in the cell. Notion's relations help says relation properties “will export as plain text URLs,” a user on Notion Answers reports the item name plus the item hyperlink, and nodi's CSV write-up describes “page links” separated by commas. Three describe names instead: sync2sheets and thebricks say the cell holds the related page titles, and breeze says the relation becomes text in which the names of the connected things survive. clonepartner says raw internal IDs, and restora's backup guide says the plain title text or, in some cases, a raw internal page ID. I'd go with Notion's wording, backed by the only first-hand user report: expect a Notion link in the cell, which that user saw after each related page's name. Then take the question off the table with a helper column, so the CSV carries exactly the names you chose. If relations are new to you, how relations and rollups connect two databases covers the basics first.

A Notion row with Client, Owner, Due, Done and Budget left above the same row as CSV cells: Acme Studio followed by a Notion link, a person's name, date text, Yes and 1200
Every property arrives in the CSV as text: the relation cell keeps the name plus a Notion link, while views, filters, colors and formula logic stay in Notion.

Export one database to CSV, step by step

  1. Open the database as a full page. If it sits inline on another page, select ⤡ at the top of the database; Notion's database basics show that control.
  2. Click ••• at the top right and choose Export, which may sit under More in that menu.
  3. Set Export format to Markdown & CSV.
  4. Choose Current view or Default view.
  5. Leave Include subpages off unless you also want each row's page content.
  6. Click Export, then unzip the download and open the CSV.

The full-page step decides what you get. Landmark Labs' tutorial puts it flatly: “only full-page databases can be exported as CSV files.” super.so's walkthrough likewise says to “first open the database as a full-page,” and sync2sheets warns that exporting from an inline view exports the whole page the database sits on.

The view choice decides which rows you get. Notion's export help says that when you export a database, you “can only choose between the current view and the default view,” and exporting all views at once isn't supported. sync2sheets gives the dialog labels: pick Current view “if you want the filters and sorts you are looking at, or Default view for everything.” I'd pick Current view from a view built for the export, set up in the next section, because you can see every row and column it holds before you click.

Include subpages decides what rides along with the table. With it on, sync2sheets says, “you get a zip with one Markdown file per row,” which matches the help's description of pages inside the page arriving as separate files. For a spreadsheet, leave it off. Some guides also show an Include content choice: breeze's export guide says it “exports everything or excludes files and images, which shrinks the download,” and clonepartner recommends No files & images when you only need the raw data.

super.so's walkthrough also found two files in the ZIP for one database, one with the whole page's contents and one with only the database, and saw no difference between them in its example. For a very large export, the help says Notion may email you a download link instead of starting the download.

Exporting from the mobile app

Tap ••• at the top right of the screen, scroll down and tap Export, then choose Markdown & CSV from the menu labeled Export format. The help adds that you'll also receive an email from Notion with a link to download the file.

Prepare an Export view before you click Export

I'd set the database up for export once and reuse that setup, rather than cleaning the CSV after every download. It takes one view and up to three formula columns, and it covers the two weak spots of the file: the export writes only one view, and the relation cell is the one sources disagree on.

1. Add a table view called Export

You don't need to duplicate the database. Select + next to the database name, choose Table, and name the view Export. Notion's views help describes that route and the Property visibility option under View settings, which shows or hides properties for each view; hide every property the spreadsheet doesn't need. thebricks' Excel guide recommends a dedicated Export view like this, and the Notion Answers reply gives the same advice in its own words: hide what isn't necessary, then export.

Leave filters off this view. thebricks suggests filtering out rows you don't need, while clonepartner says to build the export view with zero filters and zero sorting. I side with clonepartner, because a filter you've forgotten about is exactly how rows go missing from a CSV. If you need a subset, filter in the spreadsheet, where you can see what you removed. Adding the view costs nothing, since a view changes the presentation, not the records; your other views and the data stay as they are.

2. Add helper formula columns

Helper columns turn the cells sources disagree on into text you control. Add a Formula property for each one, paste the line, and replace the property names with yours.

prop("Client").map(current.prop("Name")).join(", ")

Client names lists the related page names from a relation called Client. Replace Client with your relation property and Name with the title property of the related database. It follows the list pattern in Notion's formula reference: map() runs on each related page, current.prop() reads a property from that page, and join(", ") turns the list into one line of text. Using map() and filter() on relations walks through the same pattern in more depth.

prop("Owner").map(name(current)).join(", ")

Owner names does the same for a person property called Owner, and it mirrors the reference's own example, prop("Pioneers").map(name(current)).join(", "). If the other tool matches people by email, swap name(current) for email(current).

formatDate(prop("Due"), "YYYY-MM-DD")

Due ISO writes the Due date as year, month and day with the tokens the formula reference lists: “YYYY” for year, “MM” for month and “DD” for day. Instead of whatever display text the export would give you, the column carries a format you picked. The result is text, not a date, so keep date math and date filters on Due itself; calculating with a date before formatting it explains why that order matters.

Once the helpers work, hide Client, Owner and Due in the Export view so the CSV carries only the clean versions. If you already have an exported file full of relation links, the Notion Answers thread suggests a spreadsheet find-and-replace: replace “ (*)”, leading space included, with nothing, which strips the link in parentheses after each name.

3. Export Current view from the Export view

Open the Export view, then run the export with Current view selected. raccoon's guide to export limits describes a database export as a CSV “of its rows and visible properties,” and the Export view now decides both.

Three steps: an Export table view with Client names, Owner names and Due ISO columns, the export set to Markdown & CSV and Current view, and Excel's From Text/CSV import set to UTF-8
Build the Export view once, export Current view with subpages off, then import the CSV with UTF-8.

Open the CSV in Excel or Google Sheets

The export help says you can open the CSV files in Excel, Numbers and similar apps. Double-clicking is the quick way, but sync2sheets' Excel guide says that works for simple English text. For accents, symbols or dates, use Excel's import:

  1. Open a blank workbook and go to Data, then From Text/CSV.
  2. Set File Origin to 65001: Unicode (UTF-8) so accents and symbols survive.
  3. Confirm the delimiter is Comma.
  4. Click Transform Data if a column needs a type fix, otherwise Load.

Save the sheet as an Excel workbook afterward if that's what the recipient expects. clonepartner's export guide adds that Notion exports every CSV value as text, so Excel may flag number columns with a green triangle; select them and use Convert to Number. It also warns that Excel can misread date columns, with the result changing by locale, which is one more reason for the Due ISO helper. A very large database can hit Excel's sheet limit of 1,048,576 rows by 16,384 columns, again per clonepartner; split the export into several views if yours comes close.

In Google Sheets, clonepartner's route is File > Import, the Upload tab, then the extracted CSV.

Copy a few rows from a Notion table to Excel

For a handful of rows, skip the ZIP. sync2sheets and thebricks describe the same route:

  1. Switch the database to a Table view.
  2. Click the first cell, hold Shift and click the last cell to select the range.
  3. Copy, switch to Excel or Sheets and paste into cell A1.

sync2sheets spells out what to expect: “Notion pastes tab-separated text, so columns land correctly. Types do not: everything arrives as text, relations paste as page titles, and anything hidden by the view's filters is left out.” I'd paste anything that fits on one screen and won't be needed again. Once you've pasted the same table twice, the Export view pays for itself.

Bring an edited CSV back into Notion

A CSV carries values back into Notion, not structure. breeze puts it well: “a CSV export is a record of its contents rather than a copy of its structure.” Notion's import help sets the rules:

Relations are where the reports conflict. The import help says that when you add a CSV to an existing database, you can map a CSV column to an existing relation property, and Ben Borowski at Notion Mastery wrote in February 2024 that Notion assigns relations automatically when the related page's name matches the CSV data, for existing pages only. nodi's merge test reports the opposite: relation, person and checkbox columns weren't imported. Notion's relations help adds that you can't re-import a CSV to re-establish relations with other databases. So check a few rows after any merge, and don't plan a round trip that depends on relations reconnecting. At best, a CSV round trip edits values; the structure stays in Notion.

The same limit applies on the way out of Notion. A CSV is the per-table route to another tool, and the links between tables don't travel with it. If you're moving client data elsewhere, plan the handoff and exit before importing everything.

When the export option is missing or fails

Recurring exports and backups

Notion's export help describes no way to schedule an export, so the built-in route means repeating the clicks for every report. For a weekly client report, a connection can do the repeating. EasyCSV's listing in Notion's connections gallery says it exports Notion databases into CSV, XLSX and more on a schedule you set; it asks to read, insert and update the pages and databases you share with it and to read basic profile details about workspace members and guests. CSV Getter creates an export URL for a database that returns CSV, or JSON with ?type=json_records. sync2sheets, the vendor behind the Excel guide above, describes its Google Workspace add-on as keeping a Notion database and a Google Sheet identical in real time. Developers can pull the same data through Notion's API, which, per clonepartner, returns related page IDs with enough metadata to resolve them. Whichever route you pick, share only the database the report needs, and choose by destination: a spreadsheet file, a live Google Sheet or a URL another tool can fetch.

A CSV is a record of one database's values, not a backup of the project. For an archive you can restore from, follow the client project backup guide; workspace-wide export belongs there, not in a spreadsheet.

Problems and fixes

Common Notion CSV export problems, their likely cause and the fix
SymptomLikely causeFix
The ZIP holds the surrounding page instead of one database CSVThe export ran from a page with the database inlineExpand the database with ⤡ and export from the full page.
Rows are missingThe exported view has a filterExport from the Export view with no filters; why a filtered view hides tasks shows how to find the filter.
Columns are missingThe properties are hidden in the exported viewShow them under Property visibility in the Export view, then export Current view.
The relation column is full of linksExpected: Notion exports relations as plain text URLsAdd the Client names helper and hide the relation.
A formula or rollup shows old numbersThe value froze at exportExport again after the source data changes.
Accents or symbols are garbledEncodingImport with From Text/CSV and File Origin 65001: Unicode (UTF-8).
Excel misreads dates or numbersEvery value arrives as text, and dates are read by localeUse Convert to Number; export the Due ISO helper instead of the date.
The ZIP won't extract on WindowsThe 260-character path limitUncheck Create folders for subpages, or extract with 7-Zip.
Rows are duplicated after Merge with CSVMerges add rows instead of updating themMerge only new rows, or delete the duplicates afterward.
Export is missing from the menuAn Enterprise owner disabled export, or you're a guest without Full accessAsk the owner to toggle off Disable export, or to give you Full access.

My verdict

Build the Export view and one helper column today, export Current view, and open the file with Excel's From Text/CSV import rather than a double-click. The export handles the values; deciding which rows go out and how a relation or a date should read stays with you, and the Export view is where you make that decision once. Start with the Client names helper on your busiest relation, check the CSV, then add Owner names and Due ISO if the file needs them.

Questions that come up next

Can I export a Notion database straight to .xlsx?

No. sync2sheets puts it plainly: “There is no .xlsx option anywhere in Notion.” Export the CSV, open it through From Text/CSV and save it as a workbook.

Can I export all views of a database at once?

No. The export help says exporting all views at once isn't supported, so export each view you need in turn, with Current view selected.

Keep a copy of the data