Contact Book a call

Guide · Databases

How to move from Airtable to Supabase without downtime

A seven-step Airtable to Supabase migration: decide it is time, design the Postgres schema, extract data within API limits, load, secure with RLS and cut over.

Pranav MahaveerFounder, SBD

Updated

Reading time3 minutes

Markdown version

The short answer

Inventory what you have, design a Postgres schema that makes Airtable's implicit rules explicit, extract every table through the API within its rate limits, load parents before children and resolve linked record IDs into foreign keys, verify counts, turn on row level security, give the team a front end, and cut over after a parallel run with Airtable kept read-only.

Airtable is a good place for operations data to start. Supabase is where it goes when the data has to carry the business: more records, more systems writing to it, outside users, and permissions enforced row by row. The move is predictable if you treat it as a schema project first and a data transfer second.

If you are still deciding, read Airtable or Supabase first.

1. Decide it is time to move

Four signs, any two of which justify costing a move:

  • Volume. Records are approaching your plan’s limits, or bases have slowed down.
  • Syncs. Other systems write to the base constantly, and the API limit of five requests per second per base, with a 30 second wait after a 429, has started to shape how integrations are built.
  • Outside users. Customers, suppliers or partners need logins and must see only their own rows.
  • Permissions. Rules about who can see or change what must be enforced, not just hidden in a view.

If none apply, stay on Airtable and keep the data model tidy.

2. Inventory bases, tables, fields and automations

List every table and field the team actually uses, with its type, plus every linked field, formula, rollup, lookup, view and automation, and who relies on each. Mark what to keep, merge or retire. Views often encode business rules (“Orders to dispatch today”) that must become queries or screens later.

3. Design the Postgres schema

Each table becomes a Postgres table with a real primary key. Linked record fields become foreign keys, or join tables for many-to-many links. Single selects become constrained text or lookup tables. Add an airtable_id column to every table: it makes loading, verification and the parallel sync far simpler, and it can be dropped later.

Formulas and rollups do not move as data. Decide for each whether it becomes a view, a generated column or application logic.

4. Extract the data within the API limits

Create a personal access token with read scopes for the bases you need; API keys no longer work. Page through each table 100 records at a time using the offset the API returns, keep to five requests per second per base, and back off for 30 seconds on a 429. Save the raw JSON before transforming anything, so you can always rerun the load.

Linked record fields come back as arrays of record IDs, which is exactly what you need to rebuild relationships. CSV exports show linked records as display names instead, which is why the API is the safer route for linked tables.

Load parent tables first, then children, translating each linked record ID into the parent row’s primary key through the airtable_id column. For small flat tables the dashboard’s CSV import is fine; for larger loads use a script, COPY or pgloader.

Then verify: row counts per table, totals of key numeric fields, and a sample of records checked by someone who knows the data.

6. Secure the data and rebuild the front end

Enable row level security on every table in an exposed schema. Once it is on, nothing is readable through the API with the publishable key until you write policies, so write one per role and per action. Review the default grants new tables receive, and keep secret keys, which bypass row level security, on the server only.

Serverless functions should connect through Supabase’s transaction pooler on port 6543, with prepared statements turned off in the driver.

Then give the team an interface: Retool, Softr, Noloco or custom code, depending on who uses it and how. Parity first: every task they did in Airtable must work on day one.

7. Run in parallel and cut over

Keep a one-way sync from Airtable to Supabase running while the team tests the new front end on real data. When everyone agrees, run a final sync, switch users over in one step, and set Airtable to read-only rather than deleting it. Watch the first full working days closely and keep the raw export archived.

Related: Airtable consulting, Supabase consulting, Moving off Retool and Modernise.

Checklist

0 of 13 done

Ticks are saved in this browser only.

Sources

  1. Airtable Web APIRate limits: 5 requests per second per base, 50 per second per user token, 30 second wait after a 429, checked 29 October 2026
  2. Airtable Web APIList records: pageSize up to 100, offset pagination, linked records returned as record ID arrays, checked 29 October 2026
  3. Airtable SupportAPI key deprecation: personal access tokens and OAuth replaced API keys, completed 1 February 2024, checked 29 October 2026
  4. Supabase DocsRow level security: enable on exposed tables, review default grants, secret keys bypass RLS, checked 29 October 2026
  5. Supabase DocsConnecting to Postgres: direct connection, session and transaction pooler, port 6543 for serverless, checked 29 October 2026
  6. Supabase DocsImport data: dashboard CSV import up to 100MB, pgloader, COPY and the API, checked 29 October 2026

Questions

Can I export Airtable to CSV and import it into Supabase?

For a small, flat table, yes: the Supabase dashboard imports CSV files up to 100MB. For linked tables it loses the relationships, because CSV exports show linked records as names rather than IDs. Extracting through the API keeps the record IDs you need to rebuild foreign keys.

Will the team lose the Airtable experience?

Only if you give them a bare database. A front end such as Retool, Softr, Noloco or a custom interface on top of Supabase keeps daily editing familiar, and can be better for the job than a grid.

What happens to Airtable automations and formulas?

They are rebuilt. Formulas and rollups become database views, generated columns or application code. Automations become database triggers, scheduled jobs or workflows in n8n or Make that read from Postgres.

How long does it take?

One base with a handful of tables can move in days. Several bases with many linked tables, formulas and automations take weeks, most of it on schema design, verification and the front end rather than on moving rows.

Should every Airtable user move?

No. If a small team edits records by hand and volume fits the plan, Airtable is a good tool to stay on. Our comparison of Airtable and Supabase lists the signs that it is time.

Next

Put it to work.

Cookie preferences

Choose what this site may use on your device. You can change this at any time from “Cookie settings” in the footer.

Strictly necessary

Keep the site working and remember the choices you make here. These cannot be switched off, and none of them track you.

Always on
What this includes (4)
NameProvider PurposeDuration
sbd-consentThis site Remembers your cookie choices12 months
Vercel Web AnalyticsVercel Inc. Counts page views in aggregate. Sets no cookie and stores nothing on your deviceNone
ticker-dismissed, sbd-note-offThis site Remembers that you closed a notice or language tipUntil the tab closes
sbd-voice-resume, sbd-voice-prefillThis site Carries a voice conversation across pages, only if you start oneUntil the tab closes

Analytics

Tell us which pages are read and where visitors leave, so we can improve them. IP addresses are anonymised and nothing is used for advertising.

What this includes (2)
NameProvider PurposeDuration
_gaGoogle Analytics (Google LLC) Distinguishes visitors with a random ID13 months
_ga_FPXDMQPRV1Google Analytics (Google LLC) Keeps the session state for this site13 months

Functional

Embedded services that set their own cookies. Without them the site still works; you get a link to open the service instead.

What this includes (1)
NameProvider PurposeDuration
Booking calendarCal.com Inc. Shows live availability and books the call on the booking pageSet by Cal.com

Advertising

Not used. This site has no advertising, retargeting or social media tracking, and we never sell data.

Not used

Questions about your data: hello@smallbaydigital.com