Design systems
Airtable design system
Copy code Dark mode Open the rebuilt screens
Study copy
Views Overview Find a section

Airtable design system

Airtable's colours, type, 580 real icons and components, in light and in its real dark mode. Almost every value was read from Airtable's own app on 3 Oct 2026 (public shared views, no login) or from its stylesheet. The few estimates are marked est. Study copy for our team only.

live = read from the appreal = Airtable's own fileshot = measured on a screenshotest. = our estimate

Airtable at a glance

A dense, spreadsheet-like workspace. The computer's own font at 13px, thin grey grid lines, row numbers and soft pill-shaped options in 10 colours. Each base wears its own colour in the top bar. A tool turns a pale colour while it is switched on. Almost nothing moves: hovers fade in 85ms, and menus and records open with no animation.

What you notice first

A coloured top bar in the base's own colour. Under it, a strip of table tabs. The open table is a white tab that joins a white toolbar, so you always see which table you are in.
Small, tight controls: 26px toolbar buttons, 32px rows, grey icons and grey labels. A tool that is on shows its own pale colour: cyan for hidden fields, purple for groups, and (in Airtable's help centre) green for filters and orange for sorts.
The grid is the main screen. Hairline lines, row numbers, rounded options in soft colours with dark text, and linked records as small blue-grey chips. Menus open with no animation at all.

Product screens

Left: the real Airtable app, captured live on 3 Oct 2026. Right: our copy, built only from this design system. The copies work. Open one full size to try the tables, groups, rows and menus. You can also open a record, switch to dark, or wipe against the original with the bar at the bottom.

Screen 1 · grid view (grouped)

Real Airtable grid view: Product planning base, All stories grouped by sprint
Original · live Airtable, public shared base "Product planning" · 1440 × 900
Our copy · open full size · difference map
99.1% of all pixels match98.6% in dark mode96.2% on edges only (text, lines, icons): the stricter check5 rounds of compare and fixHow to read it: the original was captured on this laptop with the same browser and Windows font, which makes a high score easier. A blank page in the main colour would already score 45 to 72%, so the edges number is the honest one.

Screen 2 · expanded record

Real Airtable expanded record over the grid
Original · live Airtable, the first story opened full size
Our copy · open full size · difference map
99.5% of all pixels match99.3% in dark mode94.3% on edges only3 rounds of compare and fixOnly story S143 was captured in full; the arrows step to other stories with the fields we have.

Both screens in Airtable's dark mode

This time the dark originals are real too: Airtable's own dark CSS, switched on in the live app. Our dark copies are measured against them.

Real Airtable grid view in dark mode
Original · Airtable dark
Our copy · dark · open full size
Real Airtable expanded record in dark mode
Original · Airtable dark
Our copy · dark · open full size
98.6% grid · 99.3% record, against Airtable's real dark mode (edges only: 96.1% and 94.1%)Difference maps: grid · record

Airtable today (live, 3 Oct 2026)

Live Airtable grid with photos and coloured options
Team grid: options, photos, row colours
Live Airtable gallery view
Gallery view: cards with a cover image
Live Airtable gallery view in dark mode
The same gallery in dark mode
Live Airtable field (column) menu
Field menu: grouped rows split by thin lines
Live Airtable hide fields menu with switches
Hide fields: a switch per field
Live Airtable sort field picker
Sort: pick a field, with search on top
Live Airtable empty filter menu
Filter: empty state with a blue "Add condition"
Live Airtable hide fields menu in dark mode
Hide fields in dark mode
Airtable home screen from Airtable's help centre
Home screen (Airtable help centre, 2025). The numbers are Airtable's own labels.

Colours real

Airtable names each colour by its job: foreground = text and icons, background = fills, border = lines. subtle / subtler / subtlest get fainter step by step. Values below are read live from the token file (Airtable's list of named colours), so they are always the real ones.

Core roles

The 10 option colours

Every select option, row colour and base colour comes from the same 10 families. Each family has 4 strengths. The pale two carry near-black text, which is how most bases use them. In dark mode the fills turn deep and the text takes the family's pale tint.

Light
Dark

Base colours

A base takes one colour for its top bar. The table-tab strip below it is the same family at its palest, under a see-through layer (10%) of the darker shade. Light families (cyan, teal, yellow) use dark text; the others use white.

Full palette

Light3 to Light1 are pale fills, the plain name is the colour itself, Dusty is a muted version, Dark1 is for text on a pale fill. The grey scale runs from 25 (almost white) to 900 (almost black).

Typography live

Airtable's app has no custom font. It uses the computer's own: Segoe UI on Windows, San Francisco on a Mac. We measured 981 visible elements on the grid screen, and 980 use it. Weights in use: 400, 500 and 600. This page follows the same rule, so you see what Airtable shows on your laptop.

Everything · system font
Aa Gg
-apple-system, system-ui, "Segoe UI", Roboto…
Code and formulas
Aa Gg
IBM Plex Mono, Menlo, Courier
Heading font in the stylesheet
Inter Display
Declared in the stylesheet for headings. Its font rule lists the real file, then a second, empty source that overrides it in Chrome, and no shared-view screen uses it. Shown for completeness.
S143: Improve adapter saltwater resistance
Record title23px · 400 · line 32px live
Product planning
Base name (top bar)21px · 500 · line 31.5px live
Madison Taub
Gallery card title16px · 500 · line 24px live
S143: Improve adapter…
Record header (on scroll)15px · 400 live
Backlog — required
Group value14px · 600 live
Story name   User want   Server points
Column header · view names · tabs13px · 500 live
Improve adapter saltwater resistance. Cells wrap to 2 lines in medium rows, then cut off with "…".
Cell text · menus · toolbar13px · 400 · line 18–19.5px live
1   2   3   10
Row numbers12px · grey gray500 live
14 records  ·  Summary  ·  4
Small11px · counts, footers, "Summary" live
Sprint
Group field label9px · capitals · 0.9px letter spacing live

Airtable's size scale (stylesheet): body 9, 11, 13, 15 · headings 13, 15, 17, 21, 23, 27, 31, 35. Most of the app lives at 13px.

Icons real

All 580 of Airtable's own app icons, copied from its icon file (icon_definitions.svg). None are redrawn; numbers are rounded to 0.001 and checked against the original. They are drawn on a 16px square and filled with the text colour. Many names match the open-source Phosphor icon family. View icons take a colour: blue grid, pink form, purple gallery and so on.

The ones you see on the grid screen

All icons

Shape & size live

Airtable uses three corner sizes plus a full round, and keeps everything low so a table fits a lot on screen.

3px · defaulttoolbar buttons, tabs, chips, menus
6px · bigbuttons, record window, cards, inputs
12px · hugelarge containers
roundoptions, top-bar buttons, switches

Heights and spacing

PartSizeDetails
Base top bar56px16px sides · base name 21px · round 28px buttons
Table tabs32px12px sides · open tab white with 3px top corners
View bar (toolbar)44px1px line below · tools 8px apart
Toolbar button26px4px × 8px padding · 16px icon · 4px gap
Views list item32.25px8px padding · 16px icon · 8px gap · 3px corners
Views sidebar281pxwhite · search row 36px · list padded 8 × 12px
Grid header32px13px/500 names · line #D1D1D1 below
Grid rows32 / 56 / 88 / 128pxshort, medium, tall, extra tall (stylesheet) · cells padded 6px
Row number column32px+ 4px row colour bar + 24px expand button (72px in all)
Group header48px32px caret column · 9px field label · 14px/600 value
Select option22px10px sides · full round · 13px text
Linked-record chip22px6px sides · 3px corners · 4px apart
Buttons24 / 28 / 32 / 36pxextra small, small, default, large (stylesheet) · 6px corners
Menu row34px / 26pxfield menu rows / field-picker rows · 12px icon gap
Record window800px wide48px header · 32 × 40px padding · 640px content · 160px labels
Switch · checkbox19 × 12px · 16px8px knob · 3px checkbox corners

Shadows real

Airtable calls them elevations: how high a thing seems to float. Most start with a sharp 1px edge, so cards stay crisp on white, then add a soft blur. In dark mode the low ones add a faint white ring and the medium and high ones a grey ring (#31353E), because shadows hardly show on dark.

Components

Live and clickable, built with airtable.css. Hover, click and use the keyboard: the states and timings are Airtable's real ones. Under each one: the exact numbers and Airtable's token names.

Buttons live
Copy baseReport abuse
Top-bar buttons are round and quiet, on the base colour.
Primary fill --colors-background-primary-control #166EE1, hover …-emphasis #0D52AC in 150ms (--motion-standard-fast) · white 13px/500 text · 6px corners. Secondary white raised control with --elevation-low, hover --colors-background-raised-control-hover. Heights 24 / 28 / 32 / 36 from Airtable's .button-size-* rules. Top-bar button 28px, full round, 12px sides, hover = the base's dark shade at 10%. Side padding 12px est.
Options, chips & checks live
AdapterGloveboxBacklog — required
Select option 22px · full round · 10px sides · 13px · fill --at-choice-[colour][strength] · dark text on pale fills, white on strong ones. Dark mode fills from Airtable's dark-mode-darken-row-color rules, text = the family's Light2. Linked record 22px · 3px corners · 6px sides · #E9EEF9 (dark: see-through blue-white 18%). Checkbox field shows Airtable's own shapes: a green star, a red flag. Row checkbox 16px · 3px corners · 1px grey gray400 edge.
Table tabs & toolbar live
Tools
Views All companies 2 hidden fields Filtered by Status Grouped by 1 field Sort
Table tabs 32px, on the base's palest tint. Tabs have 12px sides and grey text rgba(0,0,0,.65); hover darkens the text on an 8% grey. The open tab is white, 500 weight, with 3px top corners. View bar 44px white, 1px line below. Tool 26px · 4×8px padding · grey --colors-foreground-subtle · hover 5% grey in 85ms ease-in. Tool that is on takes its own pale colour and ink text, hover adds a 2px inner ring. Click Sort to switch it on.
Grid live
Header 32px · 13px/500 · line --cell-borderColor-header #D1D1D1. Cells white, lines --cell-borderColor #DDE1E3 · 6px padding · 2 lines then "…". Row hover --row-background-cursor #F8F8F8 · the row number becomes a checkbox and a 24px expand button appears. Selected --cell-background-selected #F1F6FF · active cell 2px blue ring. Group header 48px, caret turns 90° in 200ms ease-out. Try: hover, tick a row, click a cell, fold a group.
Gallery cards live
Card 6px corners · --elevation-medium, hover --elevation-medium-hover in 85ms ease-in · 16px apart · title 16px/500 starting 22px in. Cover height and inner spacing est.
Sidebar & top bar live
AltLeads pipeline
Copy baseReport abuse
Home
Starred
Shared
Workspaces
Base top bar 56px in the base colour · 16px sides · base name 21px/500 · info button 28px · 1px divider with 16px either side · round buttons. Views sidebar 281px, white. "Find a view" is 36px with a 1px line. Items are 32.25px with a coloured view icon, 13px/500. The open view takes the base's pale tint at 70% plus a grey tick; hover is 5% grey. Home navigation (right) is from Airtable's help-centre picture of the 2025 home screen shot est. sizes.
Expanded record live
Window 800px · 6px corners · --elevation-high · opens with no animation (measured frame by frame; closing was not measured). Header 48px with up/down arrows (next/previous record) and a round close button. Body 32 × 40px padding · 640px column · the record's name at 23px · then one row per field: 160px label at 75% strength, value box 32px, light grey --colors-background-subtler, 6px corners, 1px inner line. Linked record is a small card with three looked-up fields.
Menus & controls live

Try them. Click a toolbar button to open Airtable's real menu, hover the rows, use the arrow keys and Enter, press Esc or click outside to close. Note there's no fade or zoom: Airtable's menus appear and vanish instantly.

Popover white --colors-background-raised-popover · 3px corners · --elevation-high · no animation live. Header 13px/500 grey + a 1px line. Field menu 12px padding, rows 34px with 8px padding, 16px icon + 12px gap, groups split by a 1px 5% line. Field pickers (Sort, Group) rows 26px. Hide fields a 19 × 12px switch per field, blue when on. Hover row 5% grey --colors-background-selected. Tooltip Airtable's dark menu tooltip: #444, white 12px text, 5 × 7px padding (stylesheet). It shows after 0.2s with a 0.2s fade, the timing of the hint captured live (which is white with grey text).

Try it: mini CRM live

One working base, built only from this design system. Switch tables, search, filter, group, sort and hide fields. Tick rows and delete them (with a confirm and Undo), add a record, or open one full size and edit it. Keyboard: click a cell, then the arrow keys move the blue outline, Space opens the record, Delete removes ticked rows, Esc closes.

Tools
All companies
Everything here is the same component set as above: table tabs, tools that take their colour when on, the grid, option colours, linked records, the expanded record and Airtable's menus (no animation). Add record row 32px at the end of the grid, and the delete confirm (shown only when more than one record goes) are est.: we could not open them on a read-only shared view.

States & motion live

Every clickable thing has the same small set of looks. Each state is shown frozen below, so you can compare them without hovering. Airtable's hover is a 5% grey wash; pressing looks the same as hovering (we held the mouse down on a real toolbar button to check).

Hover = --colors-background-selected (black 5%, white 5% in dark). Focus = a 2px solid blue outline #166EE1 with a 2px gap, shown when you use the keyboard (measured by tabbing through the real toolbar). Disabled = 50% strength.

Motion

Airtable barely moves. Hovers fade in 85ms, the blue button in 150ms, and a group's arrow turns in 200ms. Menus and the record window have no animation: we sampled every frame, and the first frame they appear in, they are already full size. (Ease-in = starts slowly, ends fast; ease-out = the opposite.) Press "Play" to watch each one.

What movesHow longCurveWhat changesSourceTry it
Toolbar tools, view items85msease-ingrey wash appearsliveHover me
Tool that is on85msease-ina 2px inner ring appearsliveHover me
Primary button150msstandard (0.2, 0.1, 0.2, 1)blue gets darkerreal
Group arrow200msease-outturns 90° when a group foldslive
Menus, popovers0msnoneappear and vanish instantlylivesee Menus above
Record window0msnoneopens at full size on the first framelivesee Product screens
Record header title85msease-infades in once you scroll the recordlive
Search line in the sidebar160mseaseunderline turns blue while typinglive

Airtable's motion tokens

The stylesheet defines a full set of curves and speeds, even though the views above use only the fastest ones. The four numbers describe how the speed changes along the way. Press a card to see it move.

If someone turns on "reduce motion" on their computer, every transition here switches off.

Dark mode real

Airtable has a real dark mode (public beta since May 2025: Account › Appearance). Same token names, dark values: page #1D1F25, behind the grid pure black, text white. Only the token file switches; the components are unchanged. Flip this whole page with the switch at the top.

Light
Dark

What changes in dark mode

Surfaces3 greys + black#1D1F25 page and cells, #31353E toolbar and open tab, #111215 tab strip, black behind the grid
Textwhitepure white for content; grey #91959C for labels
Lineswhite 10%the same strength as light mode, just flipped
Optionsdeep fillseach colour gets a deep fill (green #3E5A3C) and its pale tint as text (#CFF5D1)
Tools that are ondark tintnear-black tint of the colour, text in the colour's Light1 (cyan and purple measured, others est.)
Shadowsring firstlow shadows add a white 15% ring, medium and high ones a grey #31353E ring, because shadows barely show on dark
Blue button, focusunchanged#166EE1 stays the same in both modes
Base top barunchangedkeeps the base colour in our captures; we could not check the signed-in app est.

Do & don't

Checked against the live app on 3 Oct 2026. The small grey label after each rule names the Law of UX it comes from. Click it to jump to that law in the scorecard. A red bullet marks a rule where Airtable itself falls short.

Do

  • Keep the grid quiet: 13px text, grey hairlines, grey row numbers. Put colour only in options, row colours and view icons. Von RestorffSelective attention
  • Show which tools are on. Airtable paints a tool in its own pale colour and rewrites its label ("2 hidden fields", "Grouped by 1 field"), so nobody wonders why rows are missing. Working memorySimilarity
  • Use the same 10 colour families everywhere, and keep text dark on the pale ones. Similarity
  • Group long lists and show the count on each group ("Backlog — required · 4"). ChunkingCommon region
  • Let people open any row full size with one click, then step to the next record with the arrows. Fitts's lawFlow
  • Answer clicks at once: hover in 85ms, menus with no animation. Doherty threshold
  • Put a search box on top of any long field list (Sort, Group, Hide fields all have one). Hick's law
  • Offer row heights (32, 56, 88, 128px) so people choose between density and reading. Cognitive load

Don't

  • Don't add colour to headers, borders or text. Airtable's chrome stays grey and white; the base colour lives only in the top bar. Occam's razor
  • Don't use big corners. Airtable is 3px on small parts and 6px on windows and buttons; round only for options and switches. Similarity
  • Don't animate menus for show. Airtable shows that a work tool feels faster when things just appear. Doherty threshold
  • Don't hide key actions behind hover only. Airtable's expand button and row checkbox appear only on hover, so touch users never see them. Fitts's law
  • Don't rely on grey-on-grey. The toolbar labels pass in light (5.8:1) but reach only 4.1:1 in Airtable's dark mode, and the 9px group labels and 11px counts are tiny. Cognitive load
  • Don't drop new users into a blank base with more than 25 field types. Airtable's templates help, but the empty builder still stalls people. Choice overloadActive user
For AltLeads: Airtable is the closest app to our lead lists. Ideas to borrow: the toolbar that shows by colour which filter, group and sort are on; groups with counts; one-click expand to a full record; row height choices. Something to skip: the coloured base bar, because it takes height a caller needs for the list.

UX principles, in plain words

The rules behind Airtable's feel, for AltLeads too. Each card names the UX law, explains it simply, and shows where Airtable follows it. All 29 laws are checked one by one in the scorecard below.

Instant beats pretty

Doherty threshold (answer in under 0.4s)

In a tool people use all day, speed matters most. Skip animations that make people wait.

Airtable: menus and records open with no animation; hovers take 85ms.

Show what's switched on

Visibility of system status

If a filter hides rows, say so where people look, in words and colour.

Airtable: "Filtered by Status" in green, "2 hidden fields" in cyan, right in the toolbar.

Group and count

Chunking · common region

Break a long list into groups with a label and a count, and let people fold them.

Airtable: 48px group headers with the field name, the value chip and the number of records.

One meaning per colour

Law of similarity

Pick a colour for each status once, and use it on every screen.

Airtable: an option keeps its colour in the grid, the record, the card and the filter.

Big detail, one click away

Fitts's law · flow

Keep the list dense, and open one row big when people need detail.

Airtable: the expand button sits on every row; arrows in the record step to the next one.

Search long lists

Hick's law (more choices = slower)

Any list longer than about 7 items needs a search box on top.

Airtable: "Find a field" on Sort, Group and Hide fields; "Find a view" in the sidebar.

Let people choose density

Cognitive load

Some people scan, some read. Offer both.

Airtable: four row heights, from 32px to 128px, one click in the toolbar.

Works without a mouse

Keyboard access · visible focus

Tab reaches every tool, and a clear outline shows where you are.

Airtable: a 2px blue outline on every toolbar button; Enter explores the grid, Esc leaves it.

Readable for everyone

WCAG contrast (4.5:1 for text)

Grey text looks calm but can be too faint. Check every text colour; see the live check below.

Airtable: its grey #616670 passes on white; its faintest grey is kept for hints.

Let people undo

Error prevention and recovery

Prefer Undo over "Are you sure?". Confirm only what can't be undone.

Airtable: Ctrl+Z undoes edits; deleted records go to a trash you can restore from (help centre).

Live contrast check

Checklist before any screen ships

Laws of UX scorecard

All 29 laws from lawsofux.com, each checked against Airtable. Every card says what the law means in plain words, what Airtable really does, and what AltLeads should take from it. Click a coloured bar to jump to a law, or filter by result.

UI is the look. UX is how it works and feels.We copy the look (UI) to learn the feel (UX). The laws explain why one screen feels easy and another feels heavy.
Looks still count.The Aesthetic-Usability Effect says people believe a polished screen is easier to use. That is why we copy every pixel, state and timing.
Rules of thumb, not maths.The laws come from psychology research. Use them to explain and check a design, then confirm with real callers using AltLeads.

Copy & use

Add four files to any HTML page, then use the classes. Add at-dark to any parent for dark mode, and a base colour such as at-base-cyan for the top bar.

<link rel="stylesheet" href="airtable/airtable-tokens.css">  <!-- Airtable's own tokens, light + dark -->
<link rel="stylesheet" href="airtable/airtable.css">         <!-- components (.at-…) -->
<body class="at-root at-base-cyan">                          <!-- add at-dark for dark mode -->
<script src="airtable/airtable-icons.js"></script>          <!-- 580 real icons -->
<script src="airtable/airtable-kit.js"></script>            <!-- draws <svg data-i="…"> -->

<span class="at-token greenLight1">Customer</span>
<span class="at-tool on green"><svg class="at-i" data-i="FunnelSimple"></svg>Filtered by Status</span>
<button class="at-btn primary">Share</button>

Where it came from

Tokens89 + 113 + 78Palette, light and dark values copied 1:1 from Airtable's app stylesheet, 3 Oct 2026
Option colours40 + 40Light from Airtable's colour classes, dark from its dark-mode-darken-row-color rules
Component sizesliveComputed styles of about 1,000 elements per screen, light and dark, grid, record and 8 menus
States and motionliveReal hover, pressed and keyboard focus; menus and record sampled every frame
Icons580Airtable's own icon_definitions.svg, plus its inline star, flag, base icon and wordmark
Screens4 bases + 35Four public shared bases (the real app, read-only) and 35 help-centre screenshots
Dark modereal CSSAirtable's own .theme-dark switched on in the live app (public views don't follow the system setting)
Estimated, not measuredest.Gallery cover height, home navigation sizes, the tab divider, the toast, dark tints for filter and sort
Not measured livesigned-in screensThe home screen and interface pages come only from help-centre pictures. We never logged in, signed up or bypassed a bot check. Details: SOURCES.md