
Airtable to NocoDB: The 2026 Migration Guide
Moving a working Airtable base to NocoDB is a decision about cost, data access, and operational work, not just a tool swap. This guide covers what both products cost as of November 2026, what the Airtable API and NocoDB’s importer carry across, and what tends to break along the way.
Treat it as a planning document. Every figure is dated, and any cutover should start from your own record counts, automation volume, and formula count.
How This Guide Was Built
This guide draws on Airtable’s pricing page, NocoDB’s pricing page, the Airtable List records reference, and NocoDB’s importer and licence documents, all linked inline. The author has not used either product or run a migration, so treat the runbook as a plan to check against your own base.
Every price, limit, and command comes from those sources. Calculations are labelled as our arithmetic. Where the documentation is silent, the tables show a dash rather than an estimate, and untested behaviour is framed as something to expect or plan for.
What the migration actually costs
As of November 2026, Airtable Team costs $20 per seat per month billed annually, while NocoDB Cloud Plus offers unlimited seats for $108 per month. The right choice depends on seat count, so the worked example below uses ten seats.
| Option (as of November 2026) | Seats | Stated price | Annual cost |
|---|---|---|---|
| Airtable Team, billed annually | 10 | $20/seat/month | $2,400 (our arithmetic: 10 × $20 × 12) |
| Airtable Team, billed monthly | 10 | $24/seat/month | $2,880 (our arithmetic: 10 × $24 × 12) |
| Airtable Business, billed annually | 10 | $45/seat/month | $5,400 (our arithmetic: 10 × $45 × 12) |
| NocoDB Cloud Plus, unlimited seats | Unlimited | $108/month | $1,296 (our arithmetic: $108 × 12) |
| NocoDB Cloud Business, billed annually | 10 | $24/seat/month | $2,880 (our arithmetic: 10 × $24 × 12) |
| NocoDB Cloud Business, unlimited seats | Unlimited | $216/month | $2,592 (our arithmetic: $216 × 12) |
| NocoDB Community, self-hosted | Unlimited | $0 licence | Server only, see below |
For ten seats, Airtable Team costs $2,400 a year on annual billing, and Business costs $5,400. NocoDB Cloud Business costs $2,880 for ten seats on per-seat billing, or $2,592 on the unlimited-seat price — the flat option is cheaper at this size. Self-hosted Community has no licence fee. If a 4 vCPU, 8 GB VPS costs about $24 a month, that is an assumed $288 a year (our arithmetic, not a vendor price), plus your own time.
Price is only one input. Cloud Plus caps a base at 50,000 records and 30,000 automation runs a month, and does not support external database connections. Check your volumes against the target tier before comparing invoices.
What the Airtable API says about your exit
The Airtable API allows 5 requests per second per base and 50 per second across all traffic from one user’s personal access tokens or service account. Exceeding those limits returns a 429, and requests must wait 30 seconds before succeeding. A large export is a paced job, not a single pull.
The List records endpoint returns one page at a time. The default pageSize is 100, it cannot exceed 100, and each response carries an offset you pass into the next request until the table ends. Empty fields are omitted from returned records, so your export script must treat a missing key as a blank value. If an encoded formula pushes the URL past 16,000 characters, the same parameters go in a POST to the listRecords path.
Authentication uses a personal access token with the data.records:read scope, available on all plans. For a 100,000-record base, the arithmetic is 1,000 calls at pageSize 100, or roughly 200 seconds of request time at 5 requests per second before retries and overhead (our arithmetic). Team’s 100,000 monthly API calls covers that job comfortably; the Free tier’s 1,000 calls would be used up entirely.
What NocoDB’s Airtable importer carries across, and what it drops
NocoDB’s importer carries tables, views, links, and lookups from a shared Airtable base, but the documentation states it “does not support the import of Formula fields at this time”. Plan to rebuild formulas by hand rather than expect them to move.
The importer needs a shared base URL plus a personal access token, or a shared view URL with no token. Turning Import data off imports only the schema, which makes a useful dry run. Import secondary views can be switched off to bring in only each table’s primary grid view. Rollup, lookup, and attachment columns can each be toggled.
The import does not stop at the first failure. Each item is recorded as skipped, approximated (imported but behaving differently), or failed, and the report downloads as a CSV with one row per item.
A shared view import behaves differently from a full-base import. It brings one table, only the records the view shows, and no linked tables:
| Airtable field in a shared view | What arrives in NocoDB |
|---|---|
| Link to another record | Single line text |
| Lookup | Long text |
| Rollup | Field of the result type, holding static values |
| Count | Field of the result type, holding static values |
| Formula | Field of the result type, holding static values |
Gallery, kanban, and calendar views arrive as Grid views. Because the shared-view docs describe formulas as static values while the full-base import has no formula support, test both paths against your own schema.
Self-hosting NocoDB: the four-container reality
Community self-hosting has no licence fee, but the self-hosting guide sets a minimum of 2 vCPU, 2 GB RAM, and 10 GB disk, with 4 vCPU, 8 GB RAM, and 50 GB or more recommended for production. The quickstart installs with one command:
curl -fsSL https://install.nocodb.com/noco.sh | bash -s -- --quick
It writes a Compose stack into nocodb/ and starts four containers: nocodb (web app and API), worker (imports, exports, and automations), db (PostgreSQL), and redis (cache and job queue). The app serves on http://localhost:8080, and the first user to sign up becomes super admin. Data lives in three named volumes, postgres_data, redis_data, and nocodb_data, which survive docker compose down. A plain Compose example is available if you prefer not to run the installer.
A $0 self-host does not include everything. NocoDB’s pricing FAQ says premium features such as advanced form configurations and AI features “are only available in the cloud and enterprise self-hosted versions.” SSO, audit logs, row-level security, and priority support require a purchased licence on self-hosted Business and above. The quickstart shows a pull-and-restart command, but nothing about backups, TLS termination, or testing upgrades. Budget that work yourself.
The licence change nobody mentions
From 2026-01-09, NocoDB moved from AGPL-3.0 to a Sustainable Use License. Internal use is permitted for organisations of all sizes, and self-hosting and modification are allowed. Offering NocoDB itself as a paid or managed service, or redistributing it inside a commercial platform, is restricted.
A commercial licence is required if you offer NocoDB as a hosted or managed service, provide direct NocoDB access to external customers, resell or redistribute it in a paid offering, or embed it in a platform where customers use NocoDB itself. Consider an agency that builds client portals and gives each client a direct NocoDB login. That setup matches the “direct access to external customers” trigger. An agency that uses NocoDB only as an internal back office does not. Confirm with NocoDB before relying on either reading. For wider context, see our open-source automation licence comparison.
A migration runbook
A safe move runs in nine steps, each verified before the next starts. The importer report from step six is the main checkpoint, and the importer documentation defines its categories.
-
Freeze and inventory. Stop schema changes for the migration window. List every table, view, formula, automation, and link. Verify: Record counts per table match what the Airtable UI shows, and the inventory is written down.
-
Confirm your export path. Use our platform exit audit guide to check what each table can export. Verify: Every table has a known export route, and any gaps are logged.
-
Create the token. Generate a personal access token with
data.records:read, following Airtable’s token guide. Verify: A test list request returns a first page with the expected record count. -
Run a schema-only dry run. Import with Import data switched off. Verify: The report lists every table and view, and each skipped or approximated item has a note.
-
Import to staging. Import with records enabled into a non-production NocoDB instance or Cloud base. Verify: Each table’s record count matches Airtable.
-
Review the report CSV. Check every row for kind, category, table, view, field, Airtable type, and reason. Verify: Every failed row has an owner and a fix.
-
Rebuild formulas and approximated fields. Recreate formulas in NocoDB and correct lookups, links, and rollups. Verify: Rebuilt formulas match Airtable’s output on a sample of rows you check by hand.
-
Rewire and run in parallel. Reconnect automations and integrations, then run both systems side by side. Track automation runs against your tier’s monthly allowance. Verify: Daily reconciliation totals match, and run volume stays under the plan’s cap.
-
Cut over. Point users and integrations at NocoDB and stop editing in Airtable. Keep Airtable intact for a named rollback window. Verify: The final reconciliation shows zero differences, and a named person signs off the end of the rollback window.
When not to migrate
Stay on Airtable if your base depends heavily on formulas, if automation or API volume exceeds the NocoDB tier you would buy, or if you need SSO or external database connections below Business. Cloud Plus does not support external database connections. Also stay put if no one on the team can run Docker or handle upgrades.
If you want a lighter alternative, Baserow’s pricing lists a Free tier with 3,000 rows per workspace and 2,000 automation credits, Premium at $10 per user per month billed yearly for 50,000 rows, and Advanced at $18 per user per month billed yearly for 250,000 rows with audit logs. Its user documentation covers the setup. For a side-by-side view, read our Airtable vs NocoDB vs Baserow comparison.
FAQ
Can NocoDB import Airtable formula fields?
No. NocoDB’s importer documentation says it “does not support the import of Formula fields at this time,” and the setting is greyed out. A shared-view import brings formula results in as static values. Plan to rebuild live formulas in NocoDB yourself, then check the output against Airtable on real records.
Is self-hosting NocoDB free for a company?
The Community edition has no licence fee, and internal use is permitted for organisations of any size under the Sustainable Use License. A commercial licence applies if you offer NocoDB as a hosted service or give external customers direct access. Server costs and staff time remain yours to budget.
How long does an Airtable API export take?
At 5 requests per second per base, a 100,000-record base needs about 1,000 calls at pageSize 100, or roughly 200 seconds of request time (our arithmetic). Retries, paging overhead, and any 429 waits add to that. The rate limit reference sets the per-base ceiling.
Which NocoDB plan fits a ten-person team?
It depends on needs more than seat count. Cloud Business for ten seats costs $2,880 a year on per-seat billing, or $2,592 on the unlimited-seat price, while unlimited-seat Cloud Plus costs $1,296 a year. Choose Business if you need SSO or external database connections, since Plus does not offer them. Check record and automation caps before you decide.
The Bottom Line
Migrate if your base is mostly tables, views, and simple links, your automation and API volume fits the target tier, and someone on your team can run and maintain a Docker stack. Stay on Airtable if your work depends on live formulas, SSO, or external database connections below Business, or if nobody wants to own the server. Consider Baserow if you want a lighter hosted option with a simpler operational footprint than self-hosting NocoDB.