Audit your Airtable base before you migrate to PostgreSQL
See every table, field, and relationship — with data quality analysis, dictionary candidates, and cardinality detection. Everything you need to design your PostgreSQL schema.
One command. Full migration readiness report.
Get a full report you can feed directly to your AI coding agent — or read yourself. Markdown and HTML, runs locally.
Data Quality Audit
- •Per-field null rates, cardinality, value distributions
- •Dictionary candidates (text fields with few unique values)
- •Unused and rare select choices flagged for cleanup
- •Similar choice / typo detection via word-overlap analysis
- •Composite value warnings (commas/semicolons in choices)
Relationship Mapping
- •Many-to-One vs Many-to-Many detection from real data
- •Dependency graph with topological sort
- •Circular dependency warnings
- •Cross-base link detection
Migration Readiness Score
- •Low / Medium / High complexity rating
- •Full PostgreSQL schema specification (MIGRATION.json)
- •Airtable → PostgreSQL type mapping with validation constraints
- •Import order based on dependencies
- •Computed fields inventory (what to recreate as app logic)
Get started in 60 seconds
# Claude Code
/plugin marketplace add mperlak/airtable-migration-audit
/plugin install airtable-migration-audit
# OpenAI Codex
$skill-installer install https://github.com/mperlak/airtable-migration-audit/tree/main/skills/airtable-migration-audit
# Any Agent Skills-compatible agent (agentskills.io)
npx skills add mperlak/airtable-migration-audit
# Set your Airtable token (required for all methods):
export AIRTABLE_API_KEY=patXXXXXXXX
# Then ask your agent:
"Audit my Airtable base"
# → The tool lists your bases and lets you pick oneNeed an Airtable API token? Get one at airtable.com/create/tokens (scopes: schema.bases:read + data.records:read for full analysis, or just schema.bases:read for a fast schema-only audit)
What a real audit looks like
Interactive preview of a report from a 5-table Airtable base with 37,000+ records. Click around — everything works.
Airtable Migration Audit
High complexityFull analysisappXXXXXXXXX appXXXXXXXXX · 2026-03-14 12:02:56
by straktur.com · Runs locally · report stored on your machine
Summary
Migration Readiness
| Tables to migrate | 5 (5 with data, 0 empty) |
| Computed fields | 18 — recreate as app logic |
| Select fields | 22 → enum types or lookup tables |
| Relationships | 3 Many-to-One (FK), 5 Many-to-Many (junction) |
| Data quality warnings | 69 — fix before migrating |
| Circular dependencies | 1 |
| Cross-base links | 0 |
Recommended Target Schema
Data Quality Warnings 69
Data cleanup needed
Schema decisions
Low-priority cleanup
Import Order
Your report will be customized to your actual data — field types, relationships, and quality issues unique to your base.
What most Airtable bases reveal
Select fields that should be lookup tables
Airtable select fields are convenient but become a problem at scale. When a Status field has the same 5 choices across 3 tables, that's 3 copies of the same data. The audit detects these and recommends normalizing them into shared lookup tables with foreign keys.
Linked records that lie about cardinality
Airtable shows every linked record field as if it could hold multiple values. But in practice, most linked record fields are used as single-value foreign keys. The audit checks actual data — if no record ever has more than one link, it's a Many-to-One, not Many-to-Many. This distinction determines whether you need a simple FK column or a full junction table.
Computed fields you'll need to recreate
Formulas, rollups, lookups, and counts in Airtable are calculated server-side. They don't export as data — they export as snapshots that go stale immediately. The audit inventories every computed field so you know exactly what application logic or database views to build in your new system.
Hidden data quality issues
Fields with 60% null values. Text fields storing what should be numbers. A text field with only 4 unique values across 1,631 records — that's not free text, that's a dictionary that should be a lookup table. These issues are invisible in Airtable's UI but critical for a clean migration. The audit surfaces them automatically.
Ready to build? Skip 2 weeks of boilerplate.
The audit tells you what to build. Straktur gives you where to build it.
Straktur is a Next.js boilerplate for internal business apps — the kind of app you'd build to replace Airtable. It comes with authentication, CRUD generators, Drizzle ORM with PostgreSQL, and an architecture optimized for AI coding agents.
The audit generates a MIGRATION.json file that maps your Airtable structure to Drizzle schema, lookup tables, and junction tables — including Airtable-to-PostgreSQL type mapping and validation constraints. Feed it to Straktur and start with a working app skeleton instead of a blank project.
One-time fee. No per-seat pricing. No subscription.
Airtable Base
Migration Report
+ MIGRATION.json
Next.js App
with Drizzle Schema
Your Airtable base is waiting
npx skills add mperlak/airtable-migration-auditBuilt by Marcin — who migrated his own company off Airtable after 6 years and 49,000+ records.