Open Source Alternative to Airtable 2026
TL;DR
NocoDB is the best open source Airtable alternative in 2026 — AGPL-3.0, 50K+ GitHub stars, and built to connect to existing databases (PostgreSQL, MySQL, SQLite, Microsoft SQL Server) rather than reinventing storage. It gives you Airtable's spreadsheet-to-database UI — grid views, gallery, kanban, forms, automations — on top of databases you already own. Airtable charges $20–54/user/month on paid plans; NocoDB on a $10/month VPS costs nothing in licensing.
Key Takeaways
- NocoDB (AGPL-3.0, 50K+ stars) connects to existing SQL databases and wraps them in an Airtable-like UI — no vendor lock-in on storage
- Baserow (MIT, 9K+ stars) is the cleanest UI of any Airtable alternative — no technical setup required beyond Docker, fully browser-based
- Grist (Apache 2.0, 7K+ stars) combines spreadsheet formulas with relational tables — the closest to Excel power-users moving to Airtable
- Teable (AGPL-3.0, 15K+ stars) is the newest entrant with real-time collaboration and Postgres-native storage
- Airtable's free tier caps you at 1,000 records per base; self-hosted alternatives have no record limits
- NocoDB can be added to an existing Postgres database — you can give your team an Airtable-like interface without migrating data
Why Teams Leave Airtable
Airtable's pricing is per-seat and per-row, which creates cost spikes as data grows:
| Plan | Price | Record Limit |
|---|---|---|
| Free | $0 | 1,000 records/base |
| Plus | $10/user/month | 5,000 records/base |
| Pro | $20/user/month | 50,000 records/base |
| Business | $45/user/month | 125,000 records/base |
| Enterprise | Custom | Custom |
A 10-person team on Pro with 30 bases hitting the 50K record limit pays $2,400/year — and still has per-base record caps. Once a team outgrows those caps, the Business tier at $45/user/month ($5,400/year for 10 users) is the only option before custom Enterprise pricing.
Self-hosted alternatives have no record limits, no seat-based pricing, and store data in standard SQL databases that you can query directly.
NocoDB vs Baserow vs Grist vs Teable
| Feature | NocoDB | Baserow | Grist | Teable |
|---|---|---|---|---|
| License | AGPL-3.0 | MIT | Apache 2.0 | AGPL-3.0 |
| GitHub Stars | 50K+ | 9K+ | 7K+ | 15K+ |
| Connects to Existing DB | ✅ | ❌ | ❌ | ❌ |
| Grid / Spreadsheet View | ✅ | ✅ | ✅ | ✅ |
| Gallery View | ✅ | ✅ | ❌ | ✅ |
| Kanban View | ✅ | ✅ | ❌ | ✅ |
| Calendar View | ✅ | ✅ | ❌ | ✅ |
| Gantt View | ✅ | ❌ | ❌ | ❌ |
| Forms | ✅ | ✅ | ❌ | ✅ |
| Automations | ✅ | ✅ | Basic | ✅ |
| API | REST + Swagger | REST | REST | REST |
| Real-time Collab | ✅ | ✅ | ✅ | ✅ |
| Spreadsheet Formulas | ✅ | Basic | ✅ Full | ✅ |
| Record Limit | Unlimited | Unlimited | Unlimited | Unlimited |
| Min RAM | 512 MB | 512 MB | 512 MB | 1 GB |
NocoDB wins for teams with existing databases — connect it to a Postgres or MySQL database you already have and immediately get an Airtable-like interface without migrating a byte. Baserow wins for simplicity — cleaner setup, better UI, and MIT license. Grist wins for spreadsheet power users who need full formula support. Teable wins for teams that want a modern, real-time Airtable clone built natively on PostgreSQL.
Setting Up NocoDB
Prerequisites
- Docker and Docker Compose
- Optional: An existing PostgreSQL database to connect to
Docker Compose (Standalone with SQLite)
# docker-compose.yml
version: "3"
services:
nocodb:
image: nocodb/nocodb:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
NC_DB: "pg://postgres:5432?u=nocodb&p=${POSTGRES_PASSWORD}&d=nocodb_meta"
NC_AUTH_JWT_SECRET: "${JWT_SECRET}"
NC_ADMIN_EMAIL: "admin@yourdomain.com"
NC_ADMIN_PASSWORD: "${ADMIN_PASSWORD}"
volumes:
- nocodb_data:/usr/app/data/
depends_on:
- postgres
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
POSTGRES_DB: nocodb_meta
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
nocodb_data:
postgres_data:
# .env
POSTGRES_PASSWORD=changeme-strong-password
JWT_SECRET=changeme-random-string
ADMIN_PASSWORD=changeme-admin-password
docker compose up -d
# Access NocoDB at http://localhost:8080
Connecting to an Existing Database
After logging in to NocoDB:
- Click New Base → Connect to External Database
- Enter your existing PostgreSQL, MySQL, or MS SQL connection details
- NocoDB reads your schema and creates views for each table automatically
- Your data stays in place — NocoDB is just a UI layer
This is NocoDB's killer feature. If your team has a Postgres database already used by your application, you can add NocoDB alongside it to give non-engineers an Airtable-like interface to the same data — no migration, no duplication.
Add Nginx Reverse Proxy
server {
listen 443 ssl;
server_name data.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/data.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/data.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Self-Hosting Experience
NocoDB is straightforward to run — a single Docker container stores metadata in PostgreSQL or SQLite, and the UI is fully web-based. The initial setup takes about 20 minutes including reverse proxy configuration.
The main operational consideration is backups: back up the NocoDB metadata database separately from any external databases NocoDB connects to.
Baserow's self-hosting is even simpler but requires all data to live in Baserow's own database (no external connection option). For a team migrating from Airtable and starting fresh, Baserow's import functionality handles CSV imports cleanly.
For the Teable self-hosting guide and setup walkthrough, see how to self-host Teable, a modern Airtable alternative.
For a full roundup of all Airtable alternatives including NocoDB, Baserow, Grist, and Teable, see Best Open Source Alternatives to Airtable in 2026.
When to Use Which
Choose NocoDB if:
- You have an existing PostgreSQL or MySQL database and want a no-code interface on top of it
- Your team needs Gantt/timeline views
- You want to keep data in a database you already manage (backup, query, migrate independently)
Choose Baserow if:
- You're starting fresh and want the cleanest, most polished Airtable-like UI
- You need MIT license (vs AGPL) for integration into commercial products
- Non-technical users will be setting up the bases themselves
Choose Grist if:
- Your users are heavy spreadsheet users who need Python or Excel-style formulas
- You need reference columns and relational links between tables with formula lookups
Choose Teable if:
- You want native PostgreSQL storage with real-time collaboration
- You're building a new data workflow and want the most modern codebase
Migrating Data from Airtable to NocoDB
Airtable's CSV export (available on all plans) is the most reliable migration path. Every base can export each table as a CSV — download them all before starting your NocoDB setup.
What migrates cleanly via CSV:
- All field values (text, numbers, checkboxes, select options)
- Attachment filenames (but not the files themselves — Airtable hosts those on their CDN)
- Multi-select field contents (exported as comma-separated strings, need splitting on import)
- Single and collaborator fields (exported as plain text)
What requires manual recreation:
- Linked record relationships — Airtable's linked records export as plain text. NocoDB supports linked records natively, but you'll need to recreate the relationship definitions and re-link records manually or via the API.
- Formula fields — Airtable formulas use a proprietary syntax. NocoDB formula syntax differs; most formulas need rewriting. NocoDB's formula system supports most common operations (IF, CONCATENATE, DATEADD, arithmetic) but uses different function names.
- Views and filters — Grid/gallery/kanban view configurations don't export; recreate each view's filters and sorts manually.
- Automations — Airtable automation workflows need to be rebuilt in NocoDB's automation editor or replaced with external tools (n8n, Zapier).
Import process in NocoDB:
- Export each Airtable table as CSV (Base → Download CSV)
- In NocoDB, create a new base or connect to an existing database
- Click Import → CSV and upload each table's file
- NocoDB auto-detects column types — review and correct any mismatches (especially date fields)
- After import, add linked record fields between tables and re-establish relationships
For bases with complex linked record structures, a scripted migration using NocoDB's REST API is more reliable than the UI importer. The NocoDB API supports bulk record creation (POST /api/v1/db/data/noco/{baseId}/{tableId}/bulk) which handles large datasets without hitting UI timeouts.
NocoDB Automations and Webhook Integrations
NocoDB's built-in automation engine handles trigger-action workflows natively — no third-party tool required for common patterns.
Available triggers:
- Record created
- Record updated (specific field or any field)
- Record deleted
Available actions:
- Send webhook (HTTP POST to any URL)
- Send email notification (via configured SMTP)
- Trigger another automation
Webhook integration pattern:
// n8n receives NocoDB webhook, processes and writes back
// NocoDB webhook payload structure
{
"type": "records.after.insert",
"data": {
"table_name": "Projects",
"record": {
"Id": 42,
"Name": "New Project",
"Status": "Active",
"Created At": "2026-04-14T10:30:00.000Z"
}
}
}
The webhook action in NocoDB sends this payload to any URL — your n8n instance, a Slack webhook, a custom API endpoint, or a Zapier webhook if you're in a hybrid setup.
NocoDB REST API for custom integrations:
# List all records in a table
curl "https://data.yourdomain.com/api/v1/db/data/noco/{base-id}/{table-id}" \
-H "xc-auth: your-api-token"
# Create a record
curl -X POST "https://data.yourdomain.com/api/v1/db/data/noco/{base-id}/{table-id}" \
-H "xc-auth: your-api-token" \
-H "Content-Type: application/json" \
-d '{"Name": "New Record", "Status": "Active"}'
# Update a record
curl -X PATCH "https://data.yourdomain.com/api/v1/db/data/noco/{base-id}/{table-id}/{record-id}" \
-H "xc-auth: your-api-token" \
-H "Content-Type: application/json" \
-d '{"Status": "Done"}'
The API token is generated in NocoDB's Team & Auth → API Tokens section. Each token has read or read-write scope. For integrating NocoDB with CI/CD pipelines or internal tools, the API token approach avoids hardcoding admin credentials.
For teams that need more complex automation than NocoDB's built-in triggers support, connecting NocoDB's webhooks to an n8n workflow unlocks the full range of available integrations (400+ connectors in n8n). The pattern: NocoDB sends a webhook on record change → n8n receives, transforms, and routes to Slack, email, a CRM, or any other endpoint.
Role-Based Access Control and Team Permissions
NocoDB's permission system controls access at the base, table, and view level — covering most team access management scenarios without Enterprise licensing.
Permission levels (per base):
| Role | Can Create Tables | Can Edit Records | Can View | Can Share Base |
|---|---|---|---|---|
| Owner | ✅ | ✅ | ✅ | ✅ |
| Creator | ✅ | ✅ | ✅ | ✅ |
| Editor | ❌ | ✅ | ✅ | ❌ |
| Commenter | ❌ | ❌ (comments only) | ✅ | ❌ |
| Viewer | ❌ | ❌ | ✅ | ❌ |
View-level sharing is NocoDB's standout access control feature. Instead of sharing an entire base with external stakeholders, you can share a filtered, read-only view:
- Create a filtered Grid or Gallery view that shows only the records and columns appropriate for the recipient
- Click Share on that view → enable public link
- The public link shows only the filtered view — recipients cannot see other tables, columns, or unfiltered records
This is equivalent to Airtable's "shared view" feature, available without any paid plan on NocoDB self-hosted.
SSO integration: NocoDB supports Google OAuth and OIDC-based SSO providers out of the box. For teams using Okta, Azure AD, or Keycloak, configure the OIDC provider in NocoDB's environment variables:
NC_GOOGLE_CLIENT_ID=your-google-client-id
NC_GOOGLE_CLIENT_SECRET=your-google-client-secret
For OIDC providers beyond Google, set NC_OIDC_CLIENT_ID, NC_OIDC_CLIENT_SECRET, and NC_OIDC_ISSUER in your .env file. After SSO setup, team members can log in with their organizational identity — no separate NocoDB passwords needed.
API token scoping: Each API token created in NocoDB is scoped to the generating user's permission level. An Editor-level user can only create API tokens with Editor permissions. This prevents privilege escalation via API tokens and makes it safe to give developers API access without granting them schema-modification rights.
Methodology
GitHub star counts from each project's repository as of April 2026. Airtable pricing from airtable.com/pricing. NocoDB feature comparison from nocodb.com/docs and direct deployment testing on a Hetzner CX21 (2 vCPU, 4 GB RAM, Ubuntu 22.04). Record limits and API rate limits from Airtable's published pricing page. NocoDB API documentation from NocoDB's Swagger UI (/swagger).
Cost Comparison
| Scenario | Airtable Pro | NocoDB (Self-Hosted) |
|---|---|---|
| 10 users | $2,400/year | ~$120/year (VPS) |
| 25 users | $6,000/year | ~$120/year (same VPS) |
| Record limit | 50,000/base | Unlimited |
| Data ownership | ❌ | ✅ |
| API rate limit | 5 req/sec | Unlimited (self-hosted) |
Explore this tool
Find nocodbalternatives on OSSAlt →