Airtable → Baserow
Copy an Airtable base into Baserow with the share-link importer, then rebuild the formulas, lookups, rollups, automations, and permissions the importer leaves behind.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
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
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
Baserow: Open-source tables, views, and an Airtable importer give you a database you can host yourself. This removes a major source-side concern: Scale, automation, and permission needs can become expensive or awkward.
What you lose: Approachable relational tables combine spreadsheet familiarity with lightweight apps. What you inherit: Formulas, lookups, rollups, automations, interfaces, and permissions still need rebuilding after import.
Jump to a section
Know the shape of the move.
This timeline assumes
- You can publish a share link for the whole Airtable base, or you can paste the session cookies Baserow documents when the base asks for a login.
- The Baserow workspace has room for the tables and the attachment files.
- Airtable stays the place people edit until the import report is cleared and a second row count matches.
- Someone on the team can rebuild formulas, lookups, rollups, automations, and interfaces after the copy.
- You keep a record of every blocking check.
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 |
|---|---|---|---|---|
| Tables and records | partial | critical | Baserow's importer reads a public share link to a base or a view and creates a new database. You import one base at a time. The Airtable base is only read. | Import into a test database first. Compare table counts and row counts before anyone edits Baserow. |
| Direct field types | partial | high | Baserow documents direct conversions for single line text, long text, single and multiple select, checkbox, URL, date, phone, email, rating, attachment, link to another record, created time, and last modified time. Select colors can differ. | Spot-check selects, dates, and links on each table. Adjust colors only after the counts match. |
| Currency, percent, and duration | partial | high | Baserow converts these to number fields. A currency symbol becomes a prefix, a percent sign becomes a suffix, and a duration becomes a number of seconds or minutes. Large-number abbreviations such as 1K are not kept. | Record the original format, then check a sample of money, percent, and duration cells after import. |
| Formulas, lookups, and rollups | manual | critical | Baserow says these field types are not imported. Formula fields show up empty. You can change them to text or number in Airtable first if you need the current calculated values in the copy. | Snapshot the calculated values you must keep, then recreate the fields in Baserow and compare them. |
| Collaborators, buttons, and barcodes | manual | high | Collaborator, created by, last modified by, button, and barcode fields are on Baserow's not-imported list. Created-by and last-modified-by can be recreated as Baserow fields, but the old values do not come across by themselves. | Export any person or barcode values you need as text before the import, then map them by hand. |
| Grid views | partial | medium | Baserow says grid views move with their filters, sorts, and grouping. The current import page does not list gallery, kanban, calendar, or form views as transferred. | List every view people use. Rebuild the ones that are not grids. |
| Attachments | partial | critical | Files are copied unless you turn on Skip importing files. Baserow warns that a base with many files is slow, and that files over 100MB may need a manual upload. | Leave the Airtable share available until the file count matches, or upload the large files yourself. |
| Automations, interfaces, and integrations | manual | critical | Baserow's reconfiguration list includes automations, Application Builder interfaces, and integrations. None of those run because the rows arrived. | Write down each automation and interface, rebuild it, and run it once on test data. |
| Comments, history, and field descriptions | lost | medium | Row comments, revision history, and field descriptions are not imported. Baserow says you start comments again and add descriptions yourself. | Export any comment thread you still need before you treat Airtable as read-only. |
| Access controls | manual | critical | The importer does not copy Airtable collaborators or permissions. You add Baserow members and roles after the database exists. | Invite people only after the test database passes. Give each person the smallest role that works. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Airtable base | Baserow database | automatic | One share-link import creates one database. |
| Table | Table | automatic | Import the whole base when you need every table. |
| Record | Row | automatic | Compare row counts per table. |
| Link to another record | Link to table | automatic | Baserow says relationships are maintained for this field type. |
| Attachment | File | automatic | Turn off Skip importing files when the files must move. |
| Formula, lookup, or rollup | Empty field, then a rebuilt field | manual | These types are not imported. |
| Currency, percent, or duration | Number | transform | Symbol, percent sign, or unit is presentation, not a separate field type. |
| Grid view | Grid view | automatic | Filters, sorts, and grouping are the documented pieces. |
| Automation or interface | No destination | unsupported | Rebuild in Baserow automations or Application Builder. |
Make the move recoverable.
Create the source-of-truth backup
Keep a restorable Airtable copy that the Baserow import cannot change.
- Duplicate the base or take an Airtable snapshot before you share it.
- Download a CSV of each table with filters cleared, so the file is the full table.
- Download attachments if the base holds files you cannot fetch again.
- Write down automations, interfaces, and who can edit the base.
Proof to capture: You can open the snapshot or the CSV set without using the Baserow database.
Share-link import
Let Baserow build the tables, rows, links, grid views, and files from the Airtable base.
- Create the share link for the whole base.
- In the workspace, add a database and open Import from Airtable.
- Paste the link. Leave Skip importing files off unless you are doing a structure-only trial.
- Read the Airtable import report table before you call the copy done.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Rebuild calculated fields
Put formulas, lookups, and rollups back after the importer skips them.
- Change critical formula fields to text in a copy of the Airtable base if you need the current results preserved.
- Recreate each formula in Baserow syntax.
- Compare the new results with the CSV, cell by cell, on a sample and on the rows that drive decisions.
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 view share link imports a slice of the base
The database is missing tables or rows that a filtered view hid.
- Consequence
- People work from an incomplete copy.
- Mitigation
- Use a share link to the entire base for the production import.
Stop if: Any production table is missing.
Calculated fields look blank
Formula, lookup, and rollup columns have no values.
- Consequence
- Reports and automations that depended on those values go quiet.
- Mitigation
- Rebuild and compare them before you switch editors.
Stop if: A decision-making formula has no checked Baserow equivalent.
Files time out
The import report lists missing attachments, or a file over 100MB never arrives.
- Consequence
- Records point at files that are not in Baserow.
- Mitigation
- Keep Airtable online and upload the missing files.
Stop if: A required file is absent after the retry.
Do the work in this order.
- Days 1 to 2 · inventory
Inventory the base
3 to 6 hours active1 to 2 days elapsedOwner review waiting- List tables, views, formulas, automations, and interfaces.
- Decide which calculated values must be snapshotted as text.
Depends on: Airtable editor access
Stop / go checkpointShare the base?
Go when: Every production table has an owner and a disposition.
Stop when: You cannot tell which views are filtered.
- Days 2 to 3 · backup
Snapshot and export
2 to 4 hours active1 day elapsedAirtable snapshot waiting- Take a base snapshot.
- Export full-table CSVs with filters off.
Depends on: Approved inventory
Stop / go checkpointImport?
Go when: The snapshot and the CSV row counts match the live tables.
Stop when: A table export is short of the live row count.
- Days 3 to 6 · pilot
Import a test database
4 to 10 hours active2 to 4 days elapsedFile transfer waiting- Run Import from Airtable into a new database.
- Read the import report and rebuild one formula per critical table.
Depends on: Verified snapshot
Stop / go checkpointImport again for production?
Go when: Row counts match and the rebuilt sample formulas match.
Stop when: The import report shows a missing table or a broken link.
- Days 6 to 8 · cutover
Switch editors
2 to 6 hours active1 to 2 days elapsedPeople moving off Airtable waiting- Stop Airtable edits.
- Re-import or apply the delta you planned.
- Turn on Baserow permissions.
Depends on: Passed pilot
Stop / go checkpointLet people edit Baserow?
Go when: Baserow is the only writable copy and the counts still match.
Stop when: Someone is still editing Airtable.
- Days 8 to 10 · observe
Watch one working week
1 to 4 hours active2 days elapsedA normal editing cycle waiting- Run the rebuilt automations once.
- Keep Airtable read-only until the owners sign the checks.
Depends on: Verified cutover
Stop / go checkpointClose Airtable?
Go when: No blocking check fails during the watch period.
Stop when: A formula, file, or permission check regresses.
Cut over with a way back.
Cutover
Make the Baserow database the copy people edit, with Airtable frozen.
- Stop creates and edits in the Airtable base.
- Run a fresh import, or apply the delta method you already rehearsed.
- Compare row counts, links, and the import report.
- Enable Baserow members only after those checks pass.
- Leave the Airtable base in place, read-only.
Proof to capture: Baserow row counts match the frozen Airtable tables, and the import report has no unresolved critical row.
Rollback
Send people back to the Airtable base if Baserow is wrong.
- Stop edits in Baserow.
- Point people back at the Airtable base.
- Export any Baserow rows that were created after the switch.
- Review that export before you put anything back into Airtable.
- Re-open Airtable editing only after the row list is understood.
Proof to capture: Airtable is the writable base again, and post-switch Baserow rows are either merged or explicitly dropped.
- A production table's row count does not match
- A required attachment is missing
- A rebuilt formula changes a decision relative to the Airtable snapshot
- The wrong people can edit the Baserow database
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 each Airtable table with the Baserow table. | Every scoped table matches. | Count sheet | |
V-02Blocking | Linked records | Open linked rows on both sides for each link field. | Links point at the same records. | Link sample | |
V-03Blocking | Attachments | Compare file counts and open a sample, including any file near 100MB. | Required files open. | File sample | |
V-04Blocking | Rebuilt calculations | Compare formula, lookup, and rollup results with the snapshot. | Critical calculations match. | Formula sheet | |
V-05Blocking | Grid filters | Run each production grid view. | Filters, sorts, and groups match the Airtable grids you kept. | View checklist | |
V-06Blocking | Roles | Sign in as each role you created. | Editors and viewers match the access list. | Access notes | |
V-07Blocking | Rebuilt jobs | Fire each automation once with test rows. | The job does the thing you wrote down. | Automation log | |
V-08Blocking | Import report | Read every row in Airtable import report. | Each gap is fixed or accepted in writing. | Import report |
Remove the scaffolding safely.
Safe after: A week of normal editing in Baserow, with Airtable still readable and every blocking check signed.
- Archive the Airtable snapshot and the CSV exports.
- Remove the public share link.
- Revoke any Airtable tokens you created for the move.
- Keep the Airtable base until the retention date you agreed.
- Put Baserow backups on a schedule and restore one backup before you rely on it.
When the plan met reality.
First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.
makeprivacy.org says they moved their own records from Airtable to Baserow on a small server they rent, using the Airtable API rather than a share link. They loaded a test workspace first, rebuilt formulas where a direct conversion failed, and compared every value. They report 2,245 values on the first base and 8,131 on the second, with zero differences after that check. A number field set to whole numbers rejected a batch of 200 rows because one stored value was 22.5. A year-count formula rounded a span they measured as 8.87 years up to 9, which pushed a renewal date out by a year. They kept the old Airtable base read-only after the switch and gave each program its own token.
- Load the copy into a test workspace and compare values field by field before you switch people or automations.
- Size number fields from the values Airtable stored, not from the display setting, and rebuild year-count formulas from calendar parts.
- They found both errors only because they compared every value. The row copy itself did not surface them.
- The old base stayed read-only for a while, and each program that used to write to Airtable got a separate Baserow token.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Baserow: import an Airtable baseAccessed 2026-11-05
- Baserow: import a CSV, JSON, XML, or spreadsheetAccessed 2026-11-05
- Airtable: CSV import extensionAccessed 2026-11-05