NocoDB: A Self-Hosted Airtable Alternative Built on Your Own Database
Airtable is genuinely good software. The problem is the pricing. A team of five people doing basic database work will pay $100 a month or more once you need anything beyond the free tier's row limits. And then there is the fundamental issue every SaaS database tool shares: your data lives on someone else's server, in a format you cannot easily export in full fidelity, locked behind a subscription you cannot cancel without losing access.
Photo by Rob Wingate on Unsplash
NocoDB takes a different approach. Rather than being a database in disguise, it is a spreadsheet-style frontend that connects to an actual database you already own — PostgreSQL, MySQL, SQLite, or SQL Server. You get the familiar grid interface, form views, gallery views, and Kanban boards, but all the data stays in your database in plain tables you can query directly. No black-box proprietary format. No row limits. No per-user pricing.
NocoDB vs. the Competition
Before committing to NocoDB, it helps to see how it stacks up against the tools people typically compare it to.
| Feature | NocoDB | Airtable | Baserow | Grist |
|---|---|---|---|---|
| Self-hostable | Yes | No | Yes | Yes |
| License | AGPL-3.0 | Proprietary | MIT | Apache 2.0 |
| Connects to existing DB | Yes (Postgres, MySQL, etc.) | No | No | No |
| Formula engine | Basic | Advanced | Basic | Python-based |
| API access | REST + Swagger | REST | REST | REST + Python |
| Kanban view | Yes | Yes | Yes | No |
| Calendar view | Yes | Yes | No | No |
| Gallery view | Yes | Yes | Yes | No |
| Form view | Yes | Yes | Yes | No |
| Real-time collaboration | Yes | Yes | Yes | Partial |
| Pricing (cloud) | Free tier / $15/mo | $10-20/user/mo | Free tier / $5/user/mo | $10/user/mo |
The key differentiator for NocoDB is the "connects to existing DB" row. Baserow and Grist are self-hostable, but they manage their own internal database. NocoDB is a UI layer — your PostgreSQL tables stay as PostgreSQL tables. A query you write in psql returns the same data NocoDB shows in its grid.
What NocoDB Actually Is
NocoDB is best understood as a visual database client with collaboration features bolted on top. You point it at a database, and it renders your tables as editable spreadsheet-style views. Every change you make in the NocoDB interface executes real SQL queries against your database. There is no intermediate storage layer.
This architecture has real consequences:
- Existing applications keep working. If you already have a PostgreSQL database powering an app, you can connect NocoDB to it and give non-technical teammates a way to view and edit records without touching the app or writing SQL.
- Data migrations are just SQL. Import/export from NocoDB is the same as backing up PostgreSQL — because it is PostgreSQL.
- You own the schema. NocoDB does not rename your columns, add hidden metadata columns in confusing ways, or require a proprietary table structure.
The downside of this approach is that NocoDB cannot do everything Airtable can. Its formula engine is limited, linked record relations are less fluid, and some features that Airtable makes trivial (complex rollups, automation) require workarounds.
Installing NocoDB with Docker Compose
NocoDB is straightforward to deploy. For production use, connect it to PostgreSQL rather than the default SQLite metadata store.
services:
nocodb:
image: nocodb/nocodb:latest
container_name: nocodb
ports:
- "8080:8080"
environment:
NC_DB: "pg://nocodb-db:5432?u=nocodb&p=${NOCODB_DB_PASSWORD}&d=nocodb"
NC_AUTH_JWT_SECRET: "${NC_JWT_SECRET}"
NC_PUBLIC_URL: "https://nocodb.example.com"
volumes:
- nocodb_data:/usr/app/data
depends_on:
nocodb-db:
condition: service_healthy
restart: unless-stopped
nocodb-db:
image: postgres:16-alpine
container_name: nocodb-postgres
environment:
POSTGRES_DB: nocodb
POSTGRES_USER: nocodb
POSTGRES_PASSWORD: "${NOCODB_DB_PASSWORD}"
volumes:
- nocodb_pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U nocodb"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
nocodb_data:
nocodb_pg_data:
Create a .env file with strong values for NOCODB_DB_PASSWORD and NC_JWT_SECRET, then:
docker compose up -d
The UI will be available at http://your-server:8080. The first user to register becomes the admin.
Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.
Connecting an Existing Database
This is where NocoDB earns its place. Navigate to Team & Settings > Integrations > Add New Base and choose "Connect to existing external database." NocoDB supports:
- PostgreSQL
- MySQL / MariaDB
- SQL Server
- SQLite
Enter your connection credentials. NocoDB will scan the schema and present all tables as workable sheets. It does not modify the database — it reads the schema and creates its own metadata (stored in the NocoDB application database, not your target database).
A few practical notes:
- Give NocoDB a dedicated read-write user with permissions only to the tables it needs. You probably do not want NocoDB users deleting rows from critical production tables.
- NocoDB respects existing foreign key relationships and can display linked records, though the UX for managing relations is less polished than Airtable.
- If you have a large schema (100+ tables), the initial scan can take a few minutes. Subsequent loads are fast.
Views: Five Ways to Look at the Same Data
NocoDB's view system is one of its strongest features. Any table can have multiple views, each with its own filters, field visibility settings, and sort order. Views are non-destructive — they are just saved configurations, not copies of the data.
Grid view is the default. An editable spreadsheet showing all rows and columns. You can resize columns, pin fields, hide fields, sort by any column, and filter with multi-condition logic. Feels familiar if you have used Airtable.
Gallery view renders each row as a card with a primary image field. Good for visual databases like product catalogs, portfolios, or media libraries.
Form view generates a data entry form from your table fields. Share the link with external contributors who need to submit records without seeing the full table. Useful for bug reports, intake forms, survey responses.
Calendar view requires a date field. Renders rows as calendar events across a month or week grid. Straightforward for scheduling, content calendars, and deadline tracking.
Kanban view requires a single-select field with predefined options. Each option becomes a column, and rows become draggable cards. Reasonable for basic workflow management.
API Access
Every NocoDB table gets a REST API automatically. Navigate to Toolbar > Swagger on any table to see the auto-generated API docs. You get standard CRUD endpoints:
GET /api/v1/db/data/noco/{projectId}/{tableId}
POST /api/v1/db/data/noco/{projectId}/{tableId}
PATCH /api/v1/db/data/noco/{projectId}/{tableId}/{rowId}
DELETE /api/v1/db/data/noco/{projectId}/{tableId}/{rowId}
Authentication uses API tokens, which you create under user settings. This makes it practical to use NocoDB as a lightweight backend for small internal tools — you get a proper REST API without writing any server code, and the data lives in your database.
Use Cases That Work Well
Internal tools for non-technical teams. A marketing team that needs to manage a content calendar, a customer success team tracking accounts, or an ops team logging vendor contacts — these are exactly the workflows NocoDB handles well. The grid view is intuitive for anyone who has used a spreadsheet, and you avoid the expensive "build a custom CRUD app" path.
Replacing shared spreadsheets. If your team is collaborating through a Google Sheet connected to nothing, NocoDB is a substantial upgrade. Data lives in a real database with real relationships. Multiple people can edit simultaneously without stepping on each other.
Giving a UI to an existing database. If you have a PostgreSQL database that an application writes to, connecting NocoDB gives you an admin panel for free. Read through app data, make manual corrections, add records for testing — without writing a separate admin interface.
Small team databases. For teams that do not need Airtable's advanced automation or formula engine, NocoDB covers the majority of use cases without the cost.
Trade-offs to Be Honest About
NocoDB is not a drop-in Airtable replacement for every workflow.
Formula support is limited. Airtable's formula engine is powerful. NocoDB has basic formulas for computed fields, but complex rollups, lookups, and conditionals that are trivial in Airtable may require moving logic into database views or materialized columns instead.
Some features require a cloud account. NocoDB's community edition is fully functional for most use cases, but certain collaboration features and their cloud sync functionality require signing into a NocoDB cloud account. This is not a hard blocker but it is worth knowing upfront.
Relations are less polished. Airtable's linked records and lookups across tables are genuinely excellent. NocoDB's linked records work, but the UI for setting up and navigating relations is clunkier. If your primary use case is a relational database with complex cross-table references, Grist may actually handle this better.
Automation is limited. Airtable's automations (trigger on record change, send email, call webhook) are reasonably capable. NocoDB has basic automations, but anything beyond simple webhooks needs to be handled externally, such as through n8n or Zapier.
Should You Use NocoDB?
NocoDB is the right choice if you already have a PostgreSQL or MySQL database and want a collaborative UI over it without building an admin panel. It is also a strong choice for small teams that need Airtable-like functionality without the per-seat pricing, and do not need advanced formulas or automation.
If you are starting from scratch with no existing database, Baserow is worth comparing — it is also self-hostable and has a smoother onboarding experience for teams that want a blank slate rather than a database connection. If your workflow heavily depends on complex formulas and computed fields, Grist's Python-based formula engine is more capable.
But if the pitch of "a spreadsheet UI that sits on top of a real database you own" resonates with your use case, NocoDB is mature enough to depend on. The project is actively developed, the Docker deployment is reliable, and the API access opens up genuinely useful automation paths. It fills a real gap between "everyone edits a shared spreadsheet" and "we need to build a custom internal tool."
