Baserow → Airtable
Export each Baserow table and load it with Airtable's CSV import extension. Files, formulas, and comments need a separate path because neither the CSV nor the extension carries them.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Baserow
- Open-source tables, views, and an Airtable importer give you a database you can host yourself
- Structured ownership, status, and workflow views improve operational visibility
- Formulas, lookups, rollups, automations, interfaces, and permissions still need rebuilding after import
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Airtable
- Approachable relational tables combine spreadsheet familiarity with lightweight apps
- Structured ownership, status, and workflow views improve operational visibility
- Scale, automation, and permission needs can become expensive or awkward
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Airtable: Approachable relational tables combine spreadsheet familiarity with lightweight apps. This removes a major source-side concern: Formulas, lookups, rollups, automations, interfaces, and permissions still need rebuilding after import.
What you lose: Open-source tables, views, and an Airtable importer give you a database you can host yourself. What you inherit: Scale, automation, and permission needs can become expensive or awkward.
Jump to a section
Know the shape of the move.
This timeline assumes
- The destination base is on a paid Airtable plan, because the CSV import extension is listed for paid plans.
- The person running the import is an Owner or a Creator on that base.
- Each table's CSV is under Airtable's 25,000-row and 5MB extension limits, or you split it.
- Baserow stays readable until attachment files and row counts are checked in Airtable.
- You take an Airtable base snapshot before the first import, as Airtable recommends.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Table rows | partial | critical | Baserow can export a whole table or a view to CSV. A view export obeys the view's filters, so a forgotten filter drops rows. Airtable's extension then loads that file into one existing table. | Clear filters before a full export. Compare the CSV row count with the Baserow table before you upload. |
| Extension limits | partial | critical | Airtable documents a 25,000-row limit and a 5MB file limit. The extension also loads the whole destination table, so a large existing table can fail even when the CSV is small. | Split wide tables. Import into a small table first when the destination is already large. |
| Merge keys | partial | high | If you merge, matching is case-sensitive. Duplicate keys in the CSV keep the first row only. A blank key creates a new record. Whitespace at the ends of the key is ignored. | Pick a unique id. Preview the update, no-change, and new-record counts before you create records. |
| Select fields | partial | high | New select options are created only when Create missing select options is on. That toggle needs Owner or Creator permission. Otherwise unknown options land as blank cells, and the row is still created. | Turn the toggle on for the pilot, or pre-create the options. |
| Typed cells | partial | high | Airtable says a value a field cannot accept does not stop the import. The cell is left empty. Dates, checkboxes, durations, and ratings only keep values they can read. | Compare a sample of each typed field with the CSV. Do not trust a finished import that showed no error. |
| Computed Airtable fields | manual | high | Airtable's unsupported CSV targets include formula, rollup, count, created time, last modified time, created by, last modified by, autonumber, button, barcode, and attachment. Rich long text is unsupported when rich text is enabled. | Import raw values into text or number fields, then recreate formulas in Airtable. |
| Files | manual | critical | Baserow's file export is a separate archive, organized by row id, not a column inside the CSV. Airtable's CSV extension does not fill attachment fields. | Upload files after the rows exist, using the row id in the archive name. |
| Links between tables | manual | critical | Each Baserow export is one table. A CSV does not rebuild Airtable linked-record fields by itself. | Import the tables, then create link fields and fill them from the id columns you kept. |
| Comments and history | lost | medium | Baserow's export docs say row comments, mentions, and revision history stay in Baserow. | Copy out any thread you still need before you archive the Baserow database. |
| Permissions and automations | manual | high | Collaborator fields export as names or emails. Baserow roles and automations are not an Airtable permission model. | Invite people in Airtable on purpose. Rebuild automations there and run them once. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Baserow table | Airtable table | transform | Export the whole table, then map columns in the extension. |
| Row | Record | transform | Stay inside 25,000 rows and 5MB per file. |
| Text, number, date, select | Matching field | transform | Map headers yourself. Names do not have to match. |
| Link to table | Id column, then a link field | manual | The CSV holds values, not a live link. |
| File field | Attachment | manual | Use the file archive, not the CSV. |
| Formula or rollup | Text snapshot, then an Airtable formula | manual | Airtable will not fill a formula from CSV. |
| Collaborator | Text email or name | transform | Baserow exports names or emails, not Airtable users. |
| Comment or revision | No destination | unsupported | Baserow excludes both from exports. |
| View filters | The rows inside the CSV | transform | A filtered view export is a subset. Clear filters for a full table. |
Make the move recoverable.
Create the source-of-truth backup
Keep the Baserow database intact while Airtable receives a copy.
- Export every table as CSV with filters removed.
- Export file fields as an archive grouped by row id.
- Export a JSON copy if you want types spelled out beside the CSV.
- Record row counts per table before you touch Airtable.
Proof to capture: The CSV row counts and the file archive match the Baserow database you just exported.
CSV shaping
Give Airtable a header row and values its field types can accept.
- Keep a stable id column on every table.
- Write dates and checkboxes in a form the Airtable field accepts.
- Split files that exceed 25,000 rows or 5MB.
- Save as CSV and do not reorder rows in a way that splits a record from its id.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Airtable load
Create or merge records without blanking good cells.
- Take a base snapshot.
- Map columns. Turn on Create missing select options if you intend to add options.
- If you merge, turn on Skip blank or invalid CSV values.
- Read the preview counts, then click Create records.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
A filtered view becomes the whole migration
The CSV is shorter than the Baserow table.
- Consequence
- Airtable never sees the hidden rows.
- Mitigation
- Export the entire table for the production load.
Stop if: Any table count is short.
The import finishes with empty cells
Select options, dates, or checkboxes were left blank and Airtable showed no error.
- Consequence
- The base looks complete and is missing values.
- Mitigation
- Compare a sample of every typed field with the CSV.
Stop if: A critical column has blank cells you did not expect.
Merge keeps the wrong duplicate
Two CSV rows share a key and Airtable uses only the first.
- Consequence
- Later edits in the file never land.
- Mitigation
- Deduplicate the key before import.
Stop if: The preview's ignored rows include data you still need.
Do the work in this order.
- Days 1 to 2 · inventory
Choose tables and keys
3 to 6 hours active1 to 2 days elapsedOwner review waiting- List tables, file fields, and formulas.
- Pick the unique key for any merge.
Depends on: Baserow admin access, Airtable Owner or Creator
Stop / go checkpointExport?
Go when: Each table has a key and a destination table.
Stop when: A table has no stable id.
- Days 2 to 3 · backup
Export Baserow
2 to 5 hours active1 to 2 days elapsedDownload time waiting- Export full tables to CSV.
- Export file archives.
Depends on: Approved inventory
Stop / go checkpointShape the files?
Go when: CSV counts match Baserow.
Stop when: A filtered view slipped into the export.
- Days 3 to 7 · pilot
Pilot one table
4 to 12 hours active2 to 4 days elapsedAirtable snapshot waiting- Snapshot the Airtable base.
- Import one representative table and compare cells.
Depends on: Verified exports
Stop / go checkpointLoad the rest?
Go when: The pilot's typed fields match the CSV.
Stop when: Empty cells or extra records appear.
- Days 7 to 9 · cutover
Load the remaining tables
3 to 8 hours active1 to 3 days elapsedExtension runtime waiting- Freeze Baserow edits.
- Import the final CSVs.
- Rebuild links and upload files.
Depends on: Passed pilot
Stop / go checkpointOpen the Airtable base?
Go when: Counts match and links resolve.
Stop when: A table exceeds the extension limit mid-load.
- Days 9 to 12 · observe
Watch the new base
2 to 5 hours active2 to 3 days elapsedOne editing cycle waiting- Run rebuilt automations.
- Keep Baserow read-only until sign-off.
Depends on: Verified cutover
Stop / go checkpointArchive Baserow?
Go when: Blocking checks stay green.
Stop when: A link or file check fails.
Cut over with a way back.
Cutover
Load the final Baserow export into Airtable and stop editing Baserow.
- Freeze Baserow writes.
- Re-export any table that changed during the pilot.
- Snapshot Airtable, then run the extension on each final CSV.
- Upload files and fill link fields.
- Compare counts before you invite the rest of the team.
Proof to capture: Each Airtable table matches its final CSV, and the base snapshot from before the load still exists.
Rollback
Return to Baserow if the Airtable load is wrong.
- Stop edits in Airtable.
- Restore the Airtable snapshot if the bad import should disappear.
- Send people back to Baserow.
- Export any Airtable records created after the switch before you discard them.
- Reconcile that list on purpose.
Proof to capture: Baserow is writable again, and the Airtable base is either restored or clearly marked as a failed copy.
- A table count does not match the final CSV
- Critical cells imported blank
- Files or links are missing
- The merge updated the wrong records
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Row counts | Compare Baserow, the CSV, and Airtable. | The three counts match for every full-table export. | Count sheet | |
V-02Blocking | Cell values | Sample every field type, including selects and dates. | Values match the CSV, or the blank is an accepted skip. | Cell sample | |
V-03Blocking | Keys | Review the extension's update and new-record counts. | The counts match the plan. | Extension preview | |
V-04Blocking | Attachments | Open files for a sample of row ids. | Required files are attached to the right records. | File sample | |
V-05Blocking | Linked records | Follow links across the tables you rebuilt. | Each link points at the intended record. | Link sample | |
V-06Blocking | Airtable formulas | Compare formula results with the Baserow snapshot. | Critical results match. | Formula sheet | |
V-07Blocking | Collaborators | Sign in as an editor and as a read-only user. | Permissions match the list you approved. | Access notes | |
V-08Blocking | Snapshot | Confirm the pre-import snapshot is still restorable. | You can name the snapshot and who can restore it. | Snapshot note |
Remove the scaffolding safely.
Safe after: Airtable has matched the final export through one editing cycle, and Baserow is still readable.
- Store the CSVs, the file archive, and the count sheet.
- Remove temporary Airtable extensions you added only for the import if you do not need them.
- Revoke extra Baserow tokens.
- Keep Baserow until the retention date.
- Turn on Airtable snapshots for the new base.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Baserow: export a tableAccessed 2026-11-05
- Airtable: CSV import extensionAccessed 2026-11-05
- Airtable: importing third-party dataAccessed 2026-11-05