Data Export Formats: Why CSV Is Not a Backup
Export a grid view out of Airtable as a CSV and the file arrives in about two seconds. Eleven columns, three thousand rows, opens in Excel without complaint, and the Clients column is full of client names that all look correct. That file is the reason people believe they have a backup. Nothing in it announces that the Clients column is now text.
The link is gone. What is left is a label that used to be a link, and a label survives right up until two clients are called Northside Dental, or one of them gets renamed, or you try to load the file into the new system and it asks which record you meant.
This is the general case and it is not specific to Airtable. The question is never "did the export work" — the export always works, the file always downloads, the row count is usually right. The question is which of six structural properties your chosen format is capable of carrying: relations, hierarchy, computed fields, comments, attachments, and the identifiers that let you rebuild the first two. Each has a different answer per format, and the answers are written down in each vendor's export documentation, usually in a sentence nobody reads because they went to the page looking for the button.
A CSV only promises to be a rectangle
RFC 4180 is the document people mean when they say CSV is standard. It is worth two minutes because it says something quite different. The memo is marked Category: Informational and opens by stating that it "does not specify an Internet standard of any kind," and section 2 begins by conceding that "there is no formal specification in existence, which allows for a wide variety of interpretations of CSV files." What it then documents is the behaviour most implementations happen to follow, and rule 4 is the constraint everything below runs into: "Within the header and each record, there may be one or more fields, separated by commas. Each line should contain the same number of fields throughout the file" (RFC 4180, IETF, read 22 August 2026).
One table. Fixed width. No types, no second sheet, no nesting, and nowhere to put a thing that exists twice on one row. Every structure your software has that is not a rectangle must therefore be flattened into text, dropped, or stretched sideways into repeated columns. All three happen, and only the second one is obvious.
The trap on the other side is assuming the format name tells you the answer. It does not. Notion says an HTML export can carry comments; Confluence, owned by the same company as Trello and Jira, says page comments are currently not exported during an HTML export. Same four letters, opposite behaviour. What follows is organised by the property at risk, because that is the axis the documentation actually varies along.
| Property | Survives in | Lost or flattened in |
|---|---|---|
| Relations between records | HubSpot CSV with associations, API dumps returning IDs | Airtable per-table CSV, most single-table exports |
| Hierarchy and nesting | Notion zip folder tree, Jira XML, monday subitem option | Any flat CSV of one table |
| Formulas and rollups | Schema endpoints of an API, which return the expression | Every values export, CSV or JSON |
| Comments and activity | Trello JSON, Notion HTML, monday Excel second tab | Trello CSV, Confluence HTML and PDF |
| Attachment bytes | Trello workspace export with raw attachments, Notion zip | Airtable CSV, Jira CSV, Slack JSON — links only |
| Record identifiers | HubSpot CSV, Trello JSON, API dumps | Airtable CSV unless you add the field first |
Relations: you keep the label, not the link
Airtable's view documentation answers this in its FAQ before you get to it the hard way. On whether you can export a whole base: "No, exporting a full base as a single file is not supported. Each table in a base will need to be downloaded as its own CSV." On contents: "All field values visible in the view will be included in the export. Information not included in the export are record-level comments, field descriptions, base guide content, and data stored solely in extensions." Note visible in the view — a filtered view exports filtered, a hidden field exports as nothing, and Airtable warns that if you want every record you must first check the view carries no filters (Airtable support, read 22 August 2026).
So you finish with one CSV per table and no join column between them. The linked-record cell holds the text that was on screen, which is the primary field value of the records it points at. Two customers with the same trading name are now the same customer.
CSV is not inherently the guilty party, which is the part that surprises people. HubSpot's export article describes exports that include "the properties and associations in the view," puts Record ID as the first column of an all-properties export, and gates association depth by file type rather than by plan: up to 1,000 associated record IDs per column by default, with All associated records offered for CSV files only, a restriction the page states without explaining (HubSpot knowledge base, read 22 August 2026). There the CSV is the richer choice and the spreadsheet formats are the lossy ones.
The useful question is therefore not "does this format support relations" but "what is the join key,
and is it in both files." An API dump answers it by construction — Notion's API returns a relation
property as "an array of related page references. A page reference is an object with an id key and
a string value corresponding to a page ID"
(Notion API reference, read 22 August 2026).
Names are not keys. IDs are.
Hierarchy leaves the file and moves into the folder tree
Nesting cannot live in a rectangle, so the exports that keep it move it somewhere else, and that somewhere is almost always the directory structure of the zip.
Notion states the mechanic directly: "Any non-database Notion page can be exported as a Markdown file. Full page databases will be exports as a CSV file, with Markdown files for each subpage," and if you export with sub-pages included "you'll see them neatly organized in their own folders when you unzip the file." The parent-child relationship is real, but it is expressed as file paths, which means it is destroyed by anything that flattens the tree — including Windows itself. Notion's FAQ covers that failure: paths longer than 260 characters cannot be handled properly, nested subpage folders regularly exceed it, and the suggested fixes are to switch off Create folders for subpages or extract with a tool that tolerates long paths (Notion help centre, read 22 August 2026). Turning that toggle off makes the zip open. It also throws away the hierarchy, which is worth pausing on before you click it.
Other products make nesting an explicit checkbox with limits attached. monday.com's Excel export
lets you pick table only, table with updates, or table with subitems, caps a board export at 100,000
items, and adds the exclusion in a note: "if you have Subitems on your board, their updates will not
be exported to Excel; only the item's updates will be exported"
(monday.com support, last modified 21 July 2026, read 22 August 2026).
Jira keeps the relationships in a different format entirely: its XML export takes subtask and
workitemlinks field parameters, along with attachment and comment, none of which the CSV
represents as links between rows
(Atlassian support, read 22 August 2026).
Formulas export their answers, and the answers stop being answers
Nearly every export you are likely to run — CSV, JSON, spreadsheet, most API calls — hands you the computed value. The calculation itself lives in the schema, and the schema is a separate request.
Notion is a clean illustration because the split is visible in the API. Ask for a page and the
formula property returns "The formula result," which the reference notes you cannot update through
the API, and a rollup returns "The value of the calculated rollup," equally read-only. Ask for the
data source instead and the same formula property is described by its configuration, an
"expression" string such as prop("Price") / 2, while a rollup is described by
relation_property_name, rollup_property_name and function
(Notion API property object, read 22 August 2026).
Two endpoints. One holds the numbers, the other holds the reason the numbers are what they are, and
a values-only export takes the first and leaves the second behind in the account.
Airtable behaves the same way from the CSV side, because formula, lookup and rollup fields are values in the view and the export takes what the view shows.
The failure mode here is quiet, which is why it outlasts the migration. On export day every computed number is correct, so the file passes any sanity check you run. It keeps passing. Nothing ever throws an error. What you have is an archive in which typed values and derived values are indistinguishable, and eighteen months later somebody edits a cell that was never meant to be typed into, with nothing in the file that would have warned them. Before you export, screenshot or copy out the field list with its formulas. Ten minutes of work in a product you still have access to, and it cannot be reconstructed later from the values alone.
Comments are many-to-one, and that is the whole argument
Trello's help centre states the underlying problem better than most technical writing does: "Comments aren't included in the CSV export. Spreadsheets aren't ideal for storing 'many-to-one' data like comments, where one item can have multiple comments, but you can find all the comments in our JSON export. This format handles complex data structures better." The JSON has a cap of its own — "The JSON exports include the 1000 most recent actions on a board, which includes comments" — and to get past it Trello sends you to the workspace-level export, which requires Premium and can only be created and downloaded by Workspace admins (Trello support, read 22 August 2026).
Jira takes the other route, which is to make the rectangle wider. Atlassian's article on exporting issues from Jira Cloud in CSV says to use Export CSV (all fields) and that "Each comment will be mapped in a different 'Comment' column in chronological order" (Atlassian support, read 22 August 2026). Read that against RFC 4180 rule 4 and the collision is obvious: the single noisiest work item sets the header width for the whole file, and every parser that assumes a stable column layout will get something wrong past column sixty.
monday.com's third approach exploits the fact that a spreadsheet can have more than one sheet. Export the table with updates and "you will see the table in one tab, and all of the updates and replies in a separate tab in the same spreadsheet." Notion's approach is to attach them to the HTML: "When you export as HTML, you can also export comments at both the page and block levels. This includes resolved and unresolved comments and any files, pages, or users mentioned in them." And Confluence Cloud, an Atlassian product like Trello and Jira, says page comments are currently not exported during an HTML export and that comments are never included when exporting to PDF (Atlassian support, read 22 August 2026). Four products, four answers, none of them inferable from the file extension.
An attachment is a link until you turn it into a file
The pattern is near-universal and it has a clock attached. Airtable's FAQ says attachment fields "will be included in the CSV file as a filename and URL," and that as of 8 November 2022 those URLs expire after a few hours; the dedicated page commits only to a floor, promising that "download URLs stay active for at least 2 hours after receiving them" and recommending you download attachments from the links in the exported CSV before they expire (Airtable support, read 22 August 2026). Jira Cloud says outright that it "does not natively support downloading physical attachment files in bulk" and suggests "exporting their URLs via CSV" instead (Atlassian support, read 22 August 2026). Same shape as what a Slack export actually contains, where the JSON holds file links rather than files on every plan below Enterprise.
Two exports in this set do hand over the bytes. Trello's workspace export has an Include raw attachments option, and "Attachments will be included in their original formats within a ZIP file in your download. Otherwise, exports will link to attachments hosted on Trello" — Premium, admins only. Notion's HTML export saves the bytes beside the pages: unzip it and the subpage folders "will also contain the images and other assets on your pages saved separately."
Until every URL in your export has become a file on storage you control, what you have is a manifest rather than an archive. Treat the gap between download and fetch as hours, not weeks.
The identifiers are the one thing you cannot regenerate
Rebuilding a relation later needs a key that existed on both sides at export time. Once the account closes there is no way to mint one.
HubSpot makes this easy by default: Record ID is the first column of an all-properties export, and
the guidance is to include it in anything you might re-import. Trello's JSON carries the "id" and
"shortLink" values its REST API documents on boards and cards
(Trello REST API, read 22 August 2026).
Airtable does not, because a record ID is not a field there — its documentation gives you the
workaround as a deliberate step, which is to add a Formula field
containing RECORD_ID() before you export
(Airtable support, read 22 August 2026).
That field takes about forty seconds to create and is worthless to add afterwards.
Do it on both sides of every relation you care about, and do it before the export rather than after, because the moment the subscription lapses the entire ID space goes with it.
Who ran the export decided what is in it
No format on this page carries your permission model. There is no column for who could see what, and no product here exports its own access rules in a form another product could read. Worse, the account that clicks the button silently determines the contents.
Notion states it directly: "Pages that the exporter doesn't have access to, such as private pages of other users, will not be included in the export," a guest needs Full access to see the export option at all, and a workspace or teamspace owner can toggle Disable export and remove the option entirely — which Notion lists under "Security settings available on Enterprise Plans only" (Notion help centre, read 22 August 2026). Airtable notes that the creator of a shared view can limit collaborators from copying base data, which turns off the option to download that view as a CSV for everyone else. monday.com lets Enterprise admins activate a permission that "disables non-admins from exporting boards to Excel." Trello restricts workspace exports to Workspace admins.
An export run by the wrong account therefore looks completely normal. Right file, right format, plausible row count, quietly missing whatever that account could not see. Run the final one as an owner, and while you are in there, work through the things worth capturing before you cancel — the access model is on that list precisely because no export contains it.
The format that keeps everything only opens in the thing you are leaving
There is usually one export that loses almost nothing, and its price is that it is keyed to the product. Confluence Cloud's XML export "works best if you need to import the space into a Confluence Data Center instance," which is an accurate description of its entire audience.
The rich portable formats do not close the loop either. Trello: "It is not currently possible to import JSON or CSV formats to re-create a Trello board." Notion, in the workspace export section: "You can't instantly recreate your workspace by reuploading your exported workspace content." Those two sentences are why the word backup does not apply to any file discussed here. You are producing evidence and raw material, not a restore point, and planning as though you have a restore point is how a cutover ends in three weeks of manual re-entry — the same gap that shows up field by field in the six things the Asana to ClickUp importer skips.
Take two artefacts rather than one, then. A readable set — HTML, PDF or CSV — for the person who opens this in four years during a dispute and will not be writing a parser. And a structural set — JSON, a native archive, or an API dump — carrying the IDs and the nesting in case anything has to be rebuilt or loaded elsewhere. They fail in different ways, which is the whole reason to hold both.
Both need lead time. Notion says a workspace export "can take up to 30 hours to process, depending on the size of the workspace" and that the emailed download link "will expire after 7 days." Jira Cloud supports "exporting up to 10,000 work items using the asynchronous Export CSV feature from the Issue Navigator," so anything larger has to be split with JQL and reassembled (Atlassian support, read 22 August 2026). Neither is a problem in week one of a migration. Both are a problem on the last afternoon.
Prove it on one record before the account closes
The verification that actually catches these is a single record, chosen badly on purpose. Not a typical one. Find the record with the most relations, the longest comment thread, an attachment somebody uploaded years ago, at least one formula or rollup, at least one child item, and ideally a last edit by someone who has since left.
Then open the export in a text editor rather than in the product's own viewer, and answer six questions about that one record:
- Relation. Can you get from this record to the thing it points at using only files in this folder? A name appearing in both files is not a yes if two records could share it.
- Hierarchy. Is the child item present, and is its parent recoverable from the file rather than from your memory of what the board looked like?
- Computation. Does anything in the export state how the calculated field was calculated, or only what it equalled that day?
- Comments. Count them in the export against the count on screen, and check whether replies and resolved threads made it. Notion and Trello draw that line explicitly and in opposite places.
- Attachment. Open the URL. Then save the file locally and re-open it from disk, because a URL that resolves today is telling you about your session, not about your archive.
- Identity. Is there a stable identifier on this record, and is the same identifier present on the records it relates to?
Every failure has a cheap fix while the subscription is live: add the RECORD_ID() field and export
again, switch to the format that carries comments, re-run the export as an admin at workspace level,
pay for one month of the tier that unlocks raw attachments, script the API dump. Each of those
becomes a support conversation with a company you no longer pay the day after cancellation, and
several become impossible.
An hour spent on one deliberately awful record is worth more than the twelve gigabytes you already downloaded and have not opened.
Verified against vendor documentation on 22 August 2026. Every quotation above came from one of these pages, and export behaviour varies by plan tier, so the tier is named wherever the vendor names one: Airtable's views article, attachment URL behaviour and record ID pages; Trello's export article for the JSON action cap, the CSV comment exclusion and the Premium workspace export, plus its REST API board reference for the identifier fields; Atlassian's export search results, CSV comments and 10,000 item limit pages for Jira, plus Confluence export formats; Notion's export help page, workspace settings for the Enterprise-only export toggle, and its property object and page property values references; monday.com's Excel export article, last modified 21 July 2026; HubSpot's export records article; and RFC 4180.
Help centre pages change without changelogs, and a sentence like "attachments will be included as a filename and URL" is exactly the kind that gets revised. Open the row that matches your tool and your plan before you rely on any line here. If something has drifted from its source, the contact page reaches me, and a corrected claim gets re-checked and re-dated.
Frequently asked questions
Is a CSV export a backup?
It is a copy of the values in one view of one table, which is a different thing. RFC 4180, the memo that documents the format, is marked Informational and states that it does not specify an Internet standard of any kind; the format it describes is a single rectangle in which every line should contain the same number of fields. Anything your tool holds that is not a rectangle has to be flattened, dropped or smeared sideways across extra columns. Airtable puts the limit plainly in its own FAQ: exporting a full base as a single file is not supported, each table has to be downloaded as its own CSV, and attachment files have to be exported separately. A backup is something you can restore from. A CSV is something you can read.
Which export format keeps comments?
It depends on the vendor, not on the format name, which is why the file extension is a bad thing to plan around. Trello's JSON export carries the 1,000 most recent actions on a board including comments, while its CSV export carries none. Notion says an HTML export can include comments at both page and block level, resolved and unresolved. Confluence Cloud, also an Atlassian product, says page comments are currently not exported during an HTML export and that comments are never included in a PDF. Two vendors under one roof, same format name, opposite answers. Read the export page for the property you care about rather than assuming the format decides.
Why does my exported CSV have a dozen columns called Comment?
Because a rectangle has no other way to hold a one-to-many relationship. Atlassian's guidance for getting comments out of Jira Cloud says to use Export CSV (all fields), and that each comment will be mapped in a different Comment column in chronological order. The consequence is that the work item with the most comments sets the column count for the entire file, and any tool that expects a fixed header will misread it. Trello's help centre says the same thing from the other direction, that spreadsheets are not ideal for storing many-to-one data like comments, and points you at its JSON export instead.
If I have a full JSON or API dump, do I still need the readable export?
Usually yes, and for a different reason. The structural dump preserves IDs and nesting so that a future rebuild is possible; the readable export is what somebody opens in four years when a customer disputes an invoice and nobody wants to write a parser. They also fail differently, so holding both is cheap insurance. What neither gives you is a restore: Trello states it is not currently possible to import JSON or CSV to re-create a board, and Notion states you cannot instantly recreate your workspace by reuploading exported content.