You want a Notion database cell to display a specific emoji based on the value of another property. For example, a green checkmark when a task is complete and a red X when it is not. Notion formulas do not support emoji characters directly inside the formula editor. The solution is to use the if() function combined with a property that contains the emoji text. This article explains how to set up a separate property to hold emoji icons and write a formula that returns the correct one based on your conditions.
Key Takeaways: Conditional Emoji in Notion Formulas
- Select or Title property with emoji: Stores the emoji character that the formula will reference.
- Formula property with
if(): Checks a condition (like a Checkbox or Status) and returns the matching emoji from the Select property. - Hide the helper property: Keep your database clean by hiding the Select property that holds the emoji after the formula is working.
Why You Cannot Type Emoji Directly Into a Notion Formula
Notion’s formula editor only accepts plain text and numeric values. It strips out emoji characters when you paste them. The formula engine also does not support Unicode escape sequences for emoji. To work around this limitation, you store the emoji in a separate property and use the formula to pull it from that property. The formula then acts as a bridge: it reads the condition you set and returns the emoji text from the helper property.
The helper property must be a Select or a Text property. A Select property is better because you can label each emoji option clearly. The formula uses the if() function to check a condition — for example, whether a Checkbox property is checked — and then returns the value of the corresponding Select option. The result is a formula cell that displays the correct emoji based on the condition.
Steps to Create a Conditional Emoji Formula
- Create a Select property for the emoji options
Open your Notion database. Click the + button in the last column header. Choose Select as the property type. Name it “Emoji Options” or any label you prefer. Add the emoji characters as individual options. For example, add “✅” as one option and “❌” as another. You can add as many emoji options as you need for your conditions. - Add the condition property
If you do not already have a Checkbox, Status, or another property that represents your condition, add one now. For a simple true/false scenario, add a Checkbox property. For more than two states, use a Status or Select property. Name this property “Is Complete” for example. - Write the formula
Click the + button in the last column header and choose Formula. Name it “Status Emoji” or similar. Click into the formula editor and enter a formula usingif(). For a Checkbox condition, the formula is:if(prop("Is Complete"), prop("Emoji Options").at(0), prop("Emoji Options").at(1)). This checks if the Checkbox is true. If true, it returns the first emoji option (✅). If false, it returns the second option (❌). - Test the formula
Check and uncheck the Checkbox in a row. The formula cell should change between the two emoji. If it does not, verify that the option order in the Select property matches theat()index. The first option is index 0, the second is index 1, and so on. - Hide the helper property
Once the formula works, you can hide the “Emoji Options” property to keep your database clean. Click the property name in the column header, select Hide from the menu. The formula will continue to work because it references the hidden property internally.
Common Mistakes and Limitations
Formula returns “undefined” or empty
This happens when the at() index does not match an existing option. If your Select property has three options but you use at(3), the formula fails because indexing starts at 0. The valid indexes for three options are 0, 1, and 2. Double-check the number of options and adjust the index accordingly.
Emoji does not display in the formula cell
The formula cell itself may show the emoji as text if the cell width is too narrow. Drag the column wider. If the emoji still appears as text, the helper property might be a Text property instead of Select. Text properties return the full string, but Select properties return the option label properly. Switch to a Select property if you are using Text.
Formula with multiple conditions is too long
Notion formulas have a character limit. If you have many conditions, use nested if() statements or the ifs() function. For example: ifs(prop("Priority") == "High", prop("Emoji Options").at(0), prop("Priority") == "Medium", prop("Emoji Options").at(1), prop("Priority") == "Low", prop("Emoji Options").at(2)). This keeps the formula readable and within the limit.
Select property options cannot be reordered easily
The order of options in a Select property determines which index corresponds to which emoji. If you need to change the order, you must delete and recreate the options in the desired order. Plan your options carefully before writing the formula to avoid rework.
Formula Property vs Select Property: Key Differences
| Item | Formula Property | Select Property |
|---|---|---|
| Purpose | Computes a value dynamically based on other properties | Stores a fixed value chosen from a predefined list |
| Emoji support | Cannot contain emoji directly in the formula text | Can hold emoji as option labels |
| Conditional logic | Built-in if(), ifs(), and comparison operators |
No logic — requires manual selection per row |
| Automation | Updates automatically when referenced properties change | Does not change unless manually edited |
The formula property is the correct choice when you need the emoji to change automatically based on data. The Select property alone cannot react to changes. Combining both gives you the dynamic behavior you need.
You can now add conditional emoji to any Notion database formula. Start by creating a Select property with your emoji options. Write an if() or ifs() formula that references that property with the at() function. Test with a few rows and then hide the helper property. For advanced use, combine this technique with Rollup properties to display emoji based on data from linked databases. Use the formatDate() function to show calendar emoji based on due dates for a more visual dashboard.