Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.
Docs

Everything, written down.

How to do anything in Tabla — and the questions that come up on the way there. Every guide describes the product as it works today; nothing here is braver than the code.

Start here

The first hour: signing in, the first database, the shape of the thing.

Tables & databases

Creating, arranging, coloring — and deleting without surprises.

Field types

One page per type: what it stores, how it edits, filters and reads over the API.

Field types: every kind of column, on one page

The twenty field types, grouped the way the field editor groups them, one line each — and why swapping between types that share storage is free.

Read →

The single line text field

Plain text on one line: what it stores, the require-unique option, how it edits, filters and sorts, the API shape — and when long text is the better call.

Read →

The long text field, plain and rich

Paragraphs in a cell: the grid preview, what rich formatting adds (bold, italic, lists, links), markdown storage, and what comes back over the API.

Read →

The number field

The number field: decimals, separators, and what the display rounds. How blank differs from zero in sorts and summaries, and the JSON a cell returns.

Read →

The currency field

A number wearing a symbol. Symbol, position, decimals and separators; filters and summaries behave like any number; the API returns the bare figure.

Read →

The percent field: 50 means 50%

Type 50 and the cell reads 50%, and the stored value is 50. What that means for formulas, filters, and 0-1 fractions arriving from Airtable's API.

Read →

The rating field

Whole numbers drawn as clickable stars: a maximum from 1 to 10, seven shapes, clicking the current value to clear, and filtering above or below a rating.

Read →

The duration field: reads h:mm, stores seconds

Type 1:30, 1m 24s or 90s; Tabla stores seconds, which keeps sums and averages exact. The three formats — h:mm, h:mm:ss, mm:ss — and the API shape.

Read →

The date field, with or without time

Date or date-and-time is fixed when the field is created, and why. The five display formats, how the database timezone decides today, and the API shapes.

Read →

The checkbox field

On or off, one click: the eight icons and their colors, why filtering for unchecked also catches never-set cells, and the true/false API shape.

Read →

The select field: one choice per cell, or many

Named choices with colors, one field for single and multi: renaming a choice touches no records, sorting follows choice order, and multi is a one-way door.

Read →

Email, phone and URL fields

Email, phone and web address fields: what each one checks, why a wrong-looking value is marked but never blocked, and which ones are clickable.

Read →

Attachment fields: files on a record

Attach files to a record: drag them in, thumbnails in the grid, images in a lightbox. The 100 MB per-file cap, and the hour-long signed URLs over the API.

Read →

Linked records: connect two tables

A link field holds records, not text. Creating one creates its mirror on the other table, and a column of typed names becomes links in one pass.

Read →

Member fields: assign people to records

A member field holds a person from the database's member list. It stores their email, groups a grid, stacks a board, and survives them leaving.

Read →

Button fields: a press, an action

One action on every row: open a URL built from the record's own values, or fire a webhook. Making one, who is allowed to press, and pressing over the API.

Read →

Formula fields: computed from the record itself

Arithmetic, text joining, date math, IF and SWITCH, computed by the database itself so nothing drifts. The builder, the text mode, the function list.

Read →

Lookup fields: a window onto a linked value

A lookup shows a field from the records at the other end of a link — read-only, always current, never copied. What it can surface, and how it filters.

Read →

Rollup fields: arithmetic across a link

Sum, count, average, earliest or latest across every linked record, derived at read time so the number can't drift. The five aggregations and their guards.

Read →

Changing a field's type: what converts, what refuses

Which field type changes are free, which convert your values and count the cost first, which route through text, and which are refused by name.

Read →

Require unique values

Stop two records sharing a value: a real Postgres unique index, set when you add the field. The nine types that can carry it, and what a violation returns.

Read →

The display field: what names a record

One field names each record — in link chips, search results and the record panel title. Which fields qualify, how to change it, why it can't be hidden.

Read →

Records & editing

Editing, pasting, searching — and the trash, undo and conflict-safety behind it.

Adding and editing records in the grid

No Save button: every cell commits the moment you finish it. The add-record row, the type-Enter-Tab-Escape grammar, and what Saved. actually promises.

Read →

The record panel: one record, all of it

Expand a record into a panel of every field in one column, editable in place. Four ways to open one, duplicating a record, and the link straight to it.

Read →

Pasting into the grid: what lands, what refuses

Paste a block from Excel or Sheets: one paste adds up to 5,000 new records, values that don't parse leave the cell alone, and it all undoes in one step.

Read →

The record trash: seven days to change your mind

Deleted records go to a per-table trash for 7 days and come back whole, with attachments and links. Where it lives, who can empty it, what it never holds.

Read →

Undo and redo: what Cmd+Z covers, and where it ends

Cmd+Z undoes, Shift+Cmd+Z redoes: 50 steps, this tab only, as real writes. What counts as one step, what was never undoable, and how a delete comes back.

Read →

Two people, one record: how edits don't overwrite each other

If a record changed underneath you, the write is refused and you see the latest instead. The message on screen, and if_updated_at and 409 over the API.

Read →

Seeing who else is in the table

A colored ring and a face on the cell someone else has selected, plus a row of faces for who has the table open. Nothing is stored; a closed tab clears it.

Read →

Searching a table from the view bar

Search runs on the server over the whole table, matching text, select labels, people and linked records by name. Numbers and dates want a filter instead.

Read →

Views

Grid, board, calendar and gallery — and the filters, sorts and colors views remember.

Saved views: one table, many ways of looking at it

One table, many saved views. What a view remembers — filter, sort, hidden fields, row height, color rules — and how to make, rename, switch and delete one.

Read →

The grid: the view where editing happens

Every table opens as a grid: editing in place, four row heights, and why 100,000 records stay quick — real SQL, 200 records a page, drawn on a canvas.

Read →

The board: records as cards you can drag

Stack records into a kanban board by a single select or a member field, drag a card to change its value, and hold before dragging on a phone.

Read →

The calendar: records on the days they name

Place records on a month, week or day range by any date field. Which field anchors an entry, spans with an End field, and hiding weekends.

Read →

The gallery: records as cards, led by their images

Records as cards led by a cover image, taken from the first visible attachment field. Card sizes, cover shapes, field labels, and the eight-field cap.

Read →

Filtering records: conditions that cut a table down

The Filter panel: field, operator, value, one condition per row, joined by and/or. The operator list for every field type, relative dates, nested groups.

Read →

Sorting records: order the server applies, level by level

Multi-level sorts applied by the server as SQL and saved per view: why selects sort in choice order, which field types sort, and where empty cells land.

Read →

Group by: the grid folded into labeled sections

Fold a grid into collapsible sections by status, month, owner, a linked record or a rollup — still fully editable, with per-group counts and summaries.

Read →

Hiding fields: fewer columns, same data

Hide fields per view: the data stays, the record panel still shows them, the API still returns them, and a public view link shares only the visible ones.

Read →

Color rules: paint the records that match a condition

Color every record that matches a condition — a solid marker and a light wash. Twelve colors, first match wins, saved per view, built the way a filter is.

Read →

Column summaries: the numbers under the grid

One summary per column in the grid's footer — sum, average, median, counts — computed on the server over every record the view's filter matches.

Read →

Public view links: share a view with anyone, read-only

Publish one saved view at a link anyone can open, read-only, with no sign-in: your filter, sort and colors. What stays private, and how revoking works.

Read →

Import & export

Files in, whole databases out, and what's inside the export.

Webhooks

Triggers, conditions, the delivery ledger, signatures — and Make and n8n, end to end.

Webhooks: send record changes to any URL

A record changes; Tabla POSTs the before, the after and what changed to your URL. Four triggers, and deliveries signed, logged, retried and replayable.

Read →

Your first webhook, end to end

Ten minutes, no code: take a URL from webhook.site, build the webhook as a sentence, send a test, then change a real record and read the delivery.

Read →

Webhook conditions: fire on the changes you mean

Narrow a webhook to the records that matter, in the Filter panel's grammar. Watched fields, what starts matching means, and conditions a clock can fire.

Read →

The delivery ledger: every send, readable

Every webhook delivery is logged: the payload sent, the response received, the four-attempt retry schedule, auto-pause after 20 failures, and Replay.

Read →

Verify webhook signatures

X-Tabla-Signature is HMAC-SHA256 over the timestamp and the raw body. Verify the exact bytes, compare in constant time — code in Node, Python and PHP.

Read →

Webhook payloads: the reference

One envelope, every trigger. A real captured payload for created, updated, matches and deleted, what each key means, and why a delivery can arrive twice.

Read →

Tabla and n8n: a webhook into a workflow

Point a Tabla webhook at an n8n Webhook node, read the record from the payload, and write back with an HTTP Request node. The whole loop, by node names.

Read →

Tabla and Make: a webhook into a scenario

Point a Tabla webhook at Make's Custom webhook module, let Send a test teach it the data structure, then write back with an HTTP module. The whole loop.

Read →

The API

Task-first guides that funnel into the full reference at /docs/api.

The API in five minutes: a key, three curls

Mint an API key, then list, create and update records with real curl requests and real responses. Every table you make is already an endpoint.

Read →

API keys: the shape, the naming, the revoking

Choosing which databases a key reaches and whether it can write, what a key is made of, why the secret is shown once, and why revoking is immediate.

Read →

Filtering records over the API

The filter is JSON: field, operator, value, joined by and/or. Every operator by field type, two levels of nesting, plus the sort and search parameters.

Read →

Paging records over the API: bookmarks, not page numbers

The records API pages by bookmark, not page number. The loop in bash and Node, page_size from 1 to 1,000, and why there is no jump to page 40.

Read →

Writing records over the API: create, update, upsert, delete

Create, update, upsert and delete records over the API: 100 to a batch, all-or-nothing, upsert matched on fields you name, delete to a 7-day trash.

Read →

Names and ids: what a rename breaks, and how not to care

Every field has an editable name and a permanent fld_ id. Which to use where, shown by renaming one live: the by-name call breaks, the by-id call doesn't.

Read →

API errors and limits: one envelope, every number

One envelope for every failure, with a machine code and a message — real 400, 401, 403, 404, 409 and 429 captures, and every enforced limit in one table.

Read →

The full API reference

Every endpoint, parameter and error, with the same filter syntax the grid and webhooks use. Signed in, it fills itself in with your own database ids and field names.

Open the reference →

Sharing & members

Roles, invitations, profiles, and sharing a view without inviting anyone.

Account & the honest bits

What's free, every limit that exists, where the data lives, and leaving whole.

Concepts

Written to be useful whether or not you end up using Tabla.

What a no-code database actually is

A real database you operate through a screen instead of SQL. The three ideas it rests on — typed fields, linked records, views — and where it ends.

Read →

When a spreadsheet stops being enough

Five signals that a sheet has become a database: tabs that are tables, load-bearing VLOOKUP, copy-paste as sync, one keeper, the sort that broke a row.

Read →

Tables, not tabs: database design for spreadsheet thinkers

How to structure a database: one thing per table, a field per fact, a link where you'd have made a tab, and nothing typed that the data already knows.

Read →

One-to-many and many-to-many, explained with real tables

One-to-many and many-to-many, with real tables: which side the link lives on, what mirrors back on its own, and when the connection needs its own table.

Read →

Moving a Google Sheet into a database without breaking it

Using Google Sheets as a database: where it works, where it stops, and how to move a sheet into real tables without breaking it.

Read →

How to export an Airtable base — and what doesn't come with it

Airtable exports one grid view at a time, as CSV. How to get that into Google Sheets, Excel, JSON or another database, and what doesn't survive.

Read →

Airtable pricing: the list price, and what a team actually pays

Every published Airtable price: per-seat rates, who counts as a billable seat, the limits on each plan, and what a seat added mid-year costs.

Read →

Airtable's free plan: what you get and where it stops

Airtable's free plan: 1,000 records per base, 1 GB of attachments, 2 weeks of history, 5 editors. What the ceiling actually does when you reach it.

Read →

Lookup vs rollup: which one you actually want

A lookup shows a value from across a link. A rollup does arithmetic on the values it finds. One to one, look it up; one to many, roll it up.

Read →

Formula, lookup or rollup: which one does your math

One question sorts the three computed fields: where do the inputs live? Same record, formula. Across a link, lookup. About the group, rollup.

Read →

Send database changes to Make or n8n with a webhook

Your database POSTs to a Make or n8n URL when a record changes. What a payload needs, verifying the signature on the raw body, and duplicate deliveries.

Read →

Why page 500 is slow: offset vs keyset pagination

OFFSET makes the database count past everything it skips, so deep pages get slower. Keyset paging names the last record; page 500 costs what page 1 costs.

Read →

A database that reads right to left

Arabic in a table: direction detected per value, not per app, a chosen Arabic face, mixed Arabic-English rows. What RTL requires, and how Tabla does it.

Read →

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.