Notion formulas are powerful for calculations, but they cannot return a multi-value list directly. This limitation appears when you try to use a formula to output a list of related database items, tags, or selections. The formula editor simply does not support array or list return types. This article explains why this restriction exists and provides a working workaround using a combination of Rollup, Relation, and formula properties.
Key Takeaways: Workarounds for Notion Formula List Limitation
- Rollup property with Join function: Combines multiple related values into a single text string that simulates a list.
- Relation + Rollup pattern: Links a secondary database and uses Rollup to aggregate values back into the original database.
- Formula property only returns single values: Use Rollup or aggregation properties instead of a formula to achieve a multi-value output.
Why Notion Formulas Cannot Output Multi-Value Lists
Notion formula properties are designed to return a single value per database row. The formula engine supports text, numbers, dates, booleans, and checks, but not arrays or lists. When you attempt to use functions like map or filter on a relation, the formula cannot output the resulting list to the formula cell. This is an architectural limitation of the formula property itself.
The root cause lies in how Notion stores formula results. Formulas operate on a single row context and cannot produce multiple values for that row. Even if you use a function that processes a list internally, the final output must be a single scalar value. For example, prop("Related Items").map(current.prop("Name")) will not work because the formula expects a single text string, not a list of strings.
To achieve a multi-value output, you must use a combination of Relation, Rollup, and aggregation properties. These properties are designed to handle multiple values from linked databases and can return them as a comma-separated string or a count. The workaround involves creating a secondary database that acts as a bridge, then using Rollup to combine values into a single text field.
Steps to Create a Multi-Value List Using Rollup
Method 1: Using a Relation and Rollup in the Same Database
- Create a secondary database
Create a new database called “Tags” or “Items” that contains the values you want in your list. For example, if you want a multi-select list of tags, create a database with a single text property called “Tag Name.” Add each tag as a separate row. - Add a Relation property in your main database
In your main database, add a Relation property that links to the secondary database you created. Name it “Related Tags.” This relation allows you to select multiple rows from the secondary database. - Add a Rollup property
Add a Rollup property to your main database. Set its Relation to “Related Tags.” Set its Property to “Tag Name” from the secondary database. Set its Calculate to “Join” and enter a separator like “, ” in the text box that appears. - Test the output
Select multiple tags in the Relation property. The Rollup property will display all selected tag names as a single comma-separated string. This text string acts as your multi-value list. - Use the Rollup in a formula (optional)
If you need to further manipulate the list, create a formula property that references the Rollup. For example,prop("Tags Rollup") + " - appended"works because the Rollup value is already a single text string.
Method 2: Using a Rollup with a Filter to Simulate a Dynamic List
- Set up a filtered linked database view
Instead of a formula, create a Linked Database view on the same page. Set the source database to your secondary database. Add a filter to show only items related to the current row. This gives you a visual multi-value list that updates dynamically. - Use a Rollup with a different calculation
If you need a numeric list, such as a count of related items, set the Rollup Calculate to “Count All” or “Sum.” This returns a single number that represents the list size. - Combine multiple Rollups
You can add multiple Rollup properties, each with a different calculation or property from the related database. For example, one Rollup can show all names joined, another can show the count, and a third can show the sum of a numeric property.
If the Workaround Still Does Not Produce a List
Rollup Shows “No Value” or Is Empty
If the Rollup property displays “No Value,” the Relation property is likely empty or the secondary database has no rows selected. Click into the Relation cell and select at least one item from the linked database. The Rollup will update immediately.
Joined Values Are Not in the Expected Order
Notion Rollups do not guarantee the order of joined values. The order depends on how the items were added to the relation. To enforce a specific order, add a “Sort Order” number property to the secondary database. Then create a second Rollup that uses “Join” but sort by that number property before joining. This requires a rollup of a rollup, which is not directly supported. Instead, use a formula in the secondary database to concatenate values in order and roll up that formula.
Formula Cannot Parse the Rollup String Back Into a List
If you need to use individual items from the list in a formula, you cannot split the string back into an array. Notion formulas do not have a split function. Instead, create separate Rollup properties for each item you need. For example, if you always have three tags, create three Relation properties and three Rollup properties. This is manual but works for predictable list sizes.
Notion Formula vs Rollup: Multi-Value Capabilities Compared
| Item | Formula Property | Rollup Property |
|---|---|---|
| Return type | Single value | Single value (aggregated from multiple) |
| Can output a list | No | Yes, as a joined text string |
| Requires a Relation | No | Yes |
| Supports Join calculation | No | Yes |
| Dynamic filtering | No | No (use Linked Database view instead) |
The table shows that a Rollup property is the only native way to aggregate multiple related values into a single cell. A formula property cannot produce a list at all. For a truly dynamic list that users can interact with, use a Linked Database view instead of a Rollup.
You can now create a multi-value list in Notion by using a Relation and Rollup combination. Start by building a secondary database for your list items. Add a Relation to link to it, then a Rollup with the Join calculation. If you need to display the list visually, use a Linked Database view with a filter. For advanced sorting, add a numeric sort property to the secondary database and use a formula there to prepare the values before rolling them up.