Intro to formulas
In a Notion database, you can add a formula property that lets you run all kinds of calculations and functions based on other properties. You can use formulas to manipulate existing data and arrive at many other helpful values 🔮
Notion formulas can perform calculations on your existing database properties and help give you better understanding of your data.
For a comprehensive tutorial on formulas and how you might use them, check out these resources:
To start writing a formula, add a formula property to your Notion database:
Click the
•••
menu on your databaseSelect
Properties
and click+ Add a property
Select
Formula
Click
Edit
and begin writing your formula
Writing a formula
Formulas 2.0
We've recently updated our formula language! Your existing formulas will be automatically migrated for this update and should behave the same.
For more information, check out our guide:
Notion’s formula syntax might look familiar if you’ve done any programming before! You’ll choose functions (which accomplish different tasks) and inputs (data to manipulate). An output (the result) will be computed and displayed in the new formula property for every row in your database.
For example, in this formula: dateSubtract(prop("Date"), 14, "days")
The function is
dateSubtract()
dateSubtract()
takes in a date, number, and then a unit text, which can be"days"
,"hours"
, etc.The inputs are
Date
(property),14
(number), and"days"
(unit of time).The output will be a date representing 14 days before your
Date
property
Formula editor
Notion’s formula editor contains several helper features to assist in writing formulas.
The editor automatically provides suggestions of functions or properties based on what's in your formula.
You can navigate this suggestions panel with
up
&down
arrows and useEnter
to accept a suggestion.
Long formulas will wrap once you’ve exceeded the width of the editor, but you can also use
Shift
+Enter
to create a new line!To navigate between lines, you can use
alt/option + up/down
.
If you open the formula editor from a database row, you'll see a live preview of the result of the formula for that row.
Note that the result preview will not display line breaks, which can be added using
"\n"
in the formula, e.g."Hello" + "\n" + "World"
The editor will display errors and highlight the erroneous code, so you can better identify the source of issues.
Formulas can manipulate and return different data types. Other property types are supported but their data type will be converted.
Text
For example,
"Hello world"
Number
For example,
1, -2.5
Can be displayed using the formatting options of the Formula property (e.g. as a percentage, currency, or with a ring or bar).
Date
Displays as a date with time (like August 29, 2023 1:33 PM) and can be reformatted to text using the
dateFormat()
function.Dates can be date ranges, which can be constructed using the
dateRange()
function.Dates cannot store seconds or milliseconds.
People
You can use
name()
oremail()
to retrieve data off any People types.Displays as people’s names with their photos.
Booleans
Can be
true
orfalse
.Displays as a filled or unfilled checkbox.
Pages
Represents Notion pages, like relations.
You can retrieve the properties of a given Notion page by using
.
on them!Displays as a rich page link with the page's icon.
Lists (or arrays)
Lists can hold items of any type, including more lists. Multi-select, People, Relation, and most Rollup properties will return list values.
You can use list functions like
at()
,filter()
,map()
to manipulate lists.Use the
includes()
function to check whether these values contain a specific value instead of equality checks.Example:
prop("Tags").includes("Movie")
List items display comma-separated for texts, numbers, and dates. For people, checkboxes, and pages, they display space-separated.
Empty
The empty value is not displayed in the output of a formula property, but can be used in the computations themselves.
You can check for emptyness on any piece of data with the
empty()
function.For example,
toNumber("")
orparseDate("Not a date")
will returnEmpty
.