Menu
Sign up

Airtable formulas: a cheat sheet for text, dates and logic, with the reference's own examples

The Airtable formulas you use most — joining and cleaning text, formatting and comparing dates, IF and SWITCH — with examples from Airtable's reference.

Published November 7, 2026 · 6 min read

Airtable formulas are spreadsheet-style expressions in a formula field: they read other fields of the same record and compute a value — a joined name, a clean headline, a formatted date, a status label. This cheat sheet covers the functions that do most of the everyday work, grouped by job. Every function on this page comes from Airtable's formula field reference, as we read it on 2026-11-07, and outputs marked "⇒" are the reference's own examples. The combinations we suggest (a length limit, days to go, a status badge) use only those functions, but we did not run them in a base ourselves — test them on a copy of your table first.

Fields are referenced by name in curly braces — {Due Date} — and text is written in double quotes. A formula field's result is read-only; to change data, edit the fields it reads.

Joining text

The & operator joins values; CONCATENATE() does the same with commas:

Name & " - " & Age                    ⇒ Jane - 28
CONCATENATE("Bob", " - ", 43)         ⇒ Bob - 43

For a list of values — a linked record's names, a multiple-select field — ARRAYJOIN() joins them with a separator:

ARRAYJOIN(values, "; ")               ⇒ 1; 2; 3

A quote mark inside text is escaped with a backslash: CONCATENATE("\"", {Name}, "\"") ⇒ "Bob".

Cleaning and trimming text

Data typed by people or imported from forms is untidy. These functions clean it before it goes anywhere else:

Function Does Reference example
TRIM(string) Removes spaces at the start and end TRIM(" Hello! ") ⇒ Hello!
UPPER() / LOWER() Changes case UPPER("Hello!") ⇒ HELLO!
LEFT(string, n) First n characters LEFT("quick brown fox", 5) ⇒ quick
LEN(string) Number of characters LEN("quick brown fox") ⇒ 15
SUBSTITUTE(string, old, new) Replaces text SUBSTITUTE("gold mold", "old", "et") ⇒ get met
REGEX_EXTRACT(string, regex) First match of a pattern REGEX_EXTRACT("Hello World", "W.*") ⇒ World
REGEX_MATCH(string, regex) 1 if it matches, else 0 REGEX_MATCH("Hello World", "Hello.World") ⇒ 1
ENCODE_URL_COMPONENT(string) Makes text safe in a URL ENCODE_URL_COMPONENT("chicken & waffles") ⇒ chicken%20%26%20waffles

Two combinations come up all the time:

  • A length limit with an ellipsis — a headline that must fit a card or a subject line:

    IF(LEN({Title}) > 60, LEFT({Title}, 57) & "…", {Title})
    
  • Digits only — from a phone number or a price typed with symbols, as the reference suggests: VALUE(REGEX_REPLACE({Price}, "\\D", "")).

Dates

Function Does Reference example
DATETIME_FORMAT(date, 'format') Date as text in a format DATETIME_FORMAT("07/10/19", "YYYY") ⇒ 2019
DATEADD(date, n, 'unit') Adds days, hours… DATEADD("07/10/19", 10, "days") ⇒ 2019-07-20
DATETIME_DIFF(date1, date2, 'unit') Difference in a unit DATETIME_DIFF("04/06/2019 12:00", "04/05/2019 11:00", "hours") ⇒ 25
IS_BEFORE(date1, date2) 1 if date1 is earlier IS_BEFORE("1/1/1979", "1/1/2000") ⇒ 1
DATESTR(date) Date as YYYY-MM-DD DATESTR("12/13/21") ⇒ 2021-12-13
TODAY() / NOW() Current date / date and time —

Format specifiers follow Airtable's list of supported format specifiers: MMMM D, YYYY gives "June 8, 2016", D MMMM YYYY the day first.

Another language. SET_LOCALE changes the language of month and day names: DATETIME_FORMAT(SET_LOCALE("07/10/19", 'es'), 'LLLL') ⇒ miércoles, 10 de julio de 2019 0:00. SET_TIMEZONE does the same for the time zone, so an event time shows in the venue's time, not the server's.

Days to go, for a countdown or a reminder: DATETIME_DIFF({Event date}, TODAY(), 'days'). The reference notes that DATETIME_DIFF returns whole numbers.

When NOW() updates. Not continuously. Airtable says it updates "when the formula is recalculated, when a base is loaded, or otherwise roughly every 15 minutes when a base is open"; with the base closed, about every hour and only when time-dependent automations or syncs depend on it. Do not build anything that needs to-the-minute accuracy on it.

Logic: IF, SWITCH, BLANK

IF({Sales} > 50, "Win", "Lose")
IF({Price} > 1000000, "Wow, that's pretty expensive", BLANK())

IF(expression, value1, value2) returns the first value when the expression is true, the second otherwise; IFs can be nested. BLANK() returns an empty value, so the field counts as empty for filters and other formulas.

When one field decides among several outcomes, SWITCH reads better than nested IFs:

SWITCH({Status},
  "To Do", "Get this started!",
  "In Progress", {Due Date},
  "Done", "Work complete!")

The last unpaired argument, if you give one, is the default. The comparison operators are the usual ones — equals =, not equals !=, greater than >, and the less-than and or-equal forms — and conditions combine with AND(…) and OR(…).

Formulas, automations or scripts?

Formulas are the first tool to reach for, but not the only one, and choosing the right one saves a lot of contorted expressions.

  • A formula field computes a value from fields of the same record, every time those fields change. It is ideal for anything that can be described as "this record's text, cleaned up or combined": a display name, a headline with a length limit, a date in another format, a label chosen from a status. It cannot change other fields, look at other records except through linked-record lookups and rollups, or call anything outside the base.
  • An automation reacts to an event — a record is created, a field changes, a form is submitted — and does something: updates a record, sends an email, posts a message, runs a script. Use it when something should happen, not just be shown.
  • A script (inside an automation, or the scripting extension) is for logic that formulas cannot express: loops over many records, calls to other services, writing results back into fields.

A good rule of thumb: if you find yourself nesting a fifth IF, or copying the same formula into several fields with small changes, step back and ask whether a lookup table in a linked table, a SWITCH, or a short script would be clearer for the next person who opens the base.

Formulas that prepare content

Formula fields are a good place to shape text before another tool uses it — a newsletter, a CMS, a social post, an image. Three patterns from content bases:

  1. A display headline: the title trimmed, limited to 60 characters with an ellipsis, as above.
  2. A date line in the reader's language: DATETIME_FORMAT(SET_LOCALE({Date}, 'de'), 'D. MMMM YYYY').
  3. A status badge: SWITCH({Stage}, "Live", "NOW LIVE", "Soon", "COMING SOON", "").

Keep the original fields untouched and do the shaping in formula fields: when a rule changes, you change one formula, and every record follows.

Where images come in

Airtable formulas work on text, numbers and dates; they do not draw images. If your base holds content that should become images — an event card per session, a quote card per testimonial, a product card per item — the formula fields above make the text right, and something else renders the picture.

That is where we fit, and only there: Shareglint is not an Airtable app and adds nothing inside Airtable. An Airtable automation with a short script (or Zapier, Make or n8n) sends a record's fields — the formula fields included — to our API, gets back an image URL, and writes it into an attachment field; Airtable then downloads the file from that URL. The Airtable recipe has the script and the table layout, and works with the formula fields from this page: map a template's title field to the 60-character headline field and its date field to the localized date field.

Common mistakes

  • Smart quotes. Copying a formula from a word processor can turn " into “ ”, which breaks the formula. Type quotes in the formula editor.
  • Field names. A formula copied from a tutorial or another base needs your base's exact field names inside the curly braces.
  • Dates as text. DATETIME_FORMAT returns text; compare and add with the original date field, not the formatted one.
  • Too much in one formula. Split long logic into helper formula fields; each one is easier to check than one giant expression.

FAQ

How do I combine text from two fields in Airtable?

Use the & operator or CONCATENATE: {Name} & " - " & {City}, or CONCATENATE({Name}, " - ", {City}). Airtable's reference shows Name & " - " & Age giving "Jane - 28".

How do I format a date in an Airtable formula?

DATETIME_FORMAT({Date}, 'format'), for example DATETIME_FORMAT({Date}, 'D MMMM YYYY'). For another language, wrap the date in SET_LOCALE: Airtable's reference shows DATETIME_FORMAT(SET_LOCALE("07/10/19", 'es'), 'LLLL') giving "miércoles, 10 de julio de 2019 0:00".

What is the difference between IF and SWITCH in Airtable?

IF(expression, value1, value2) tests one condition and can be nested. SWITCH(expression, pattern, result, …, default) compares one value against a list and is easier to read than several nested IFs.

How often does NOW() update in Airtable?

According to Airtable, when the formula is recalculated, when the base is loaded, or roughly every 15 minutes while the base is open; with the base closed, about every hour and only if time-dependent automations or syncs depend on it.