Get AI summaries of any video or article — Sign up free
Notion Formulas for Beginners: The Complete Course thumbnail

Notion Formulas for Beginners: The Complete Course

Thomas Frank Explains·
6 min read

Based on Thomas Frank Explains's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Create formula properties to replace wide or redundant fields with cleaner UI outputs, such as turning a URL into a compact clickable icon.

Briefing

Notion formulas can turn a basic database into interactive, data-driven tools—starting with clickable links, then building real progress indicators, calendar-ready dates, cross-linked “latest activity” sorting, and finally an automated YouTube timestamp generator. The through-line is that formulas unlock capabilities Notion’s standard no-code controls can’t match, especially once you start converting data types, using conditionals, and iterating over related records.

Level one focuses on replacing a bulky URL column with a clean “button” icon. A formula property is created to output an emoji as text, then wrapped in Notion’s link function so the emoji becomes a clickable hyperlink. To make it look more like a button, the link output is further styled using the style function with code formatting. The lesson isn’t just the final formula—it’s how to think about function arguments and execution order: parentheses run first, so the hyperlink is created before styling is applied. The level also introduces method chaining (dot syntax) as a more compact way to apply functions like link and style to the same value.

Level two builds a habit-tracking “day score” progress ring. The key challenge is that habit checkboxes are boolean values (checked/unchecked), not numbers. The solution uses the two number function to convert each checkbox into 1 or 0, sums them to get the count completed, and divides by the total number of habits to compute a percentage. Parentheses are again crucial to enforce order of operations so division happens after the sum. Once the formula outputs a numeric value, Notion’s number formatting and progress ring UI become available, letting the database render the computed percentage directly.

Level three solves a birthday calendar problem where stored birth years are far in the past, so birthdays don’t appear when expected. The formula constructs “next birthday” dates by extracting month/day from the original date, combining them with the current year (using today, year, string concatenation, and parse date), and then using an if conditional to decide whether to keep the current year or advance to next year if the birthday has already passed. The result is a true date output that can be used in calendar views.

Level four refines the birthday logic using variables (let/lets) to avoid repeating long expressions and reduce error risk. It then escalates to a project tracker sorting problem: projects should sort by the most recent activity across connected tasks and notes, not just the project page’s own edited timestamp. The solution iterates through related task pages and note pages, maps each to their edited/updated timestamps, concatenates all dates into one list, sorts it, and returns the latest date (using list operations like reverse, first, and method chaining). That latest activity date becomes a sortable field for the projects view.

Level five culminates in a practical automation: generating YouTube timestamps from related “chapter marker” pages. The formula filters B-roll items down to those marked as chapter markers, sorts them chronologically by time code, maps each to a “timecode - title” string, and uses regular expressions to strip frame counts from timestamps. It then ensures the list includes a required “0000 introduction” entry using regex test logic and conditional concatenation. Finally, join turns the list into a newline-separated string ready to paste into a YouTube description. The overall impact is a repeatable pattern: convert data types, iterate through relations, apply conditionals, and use string/date tooling to make Notion behave like a lightweight application layer.

Cornell Notes

The course shows how to use Notion formulas to build features that normally require manual work or custom tooling: clickable URL icons, habit progress rings, calendar-ready “next birthday” dates, project sorting by latest cross-linked activity, and automated YouTube timestamp lists. Early levels emphasize data type conversion (checkbox → number, date → formatted date → parsed date) and execution order via parentheses. Mid levels introduce conditionals (if) and variables (let/lets) to keep logic correct and maintainable. The highest level combines iteration (filter/map), list operations (concat/sort/reverse/first), and regular expressions (replace/test) to transform related chapter-marker records into a paste-ready timestamp string.

How does a Notion formula turn an emoji into a clickable “URL button” without adding a wide URL column?

A formula property outputs a text value (an emoji label) and then wraps it with link(labelText, url). The URL comes from referencing the database’s URL property. To make it look like a button, the link result is wrapped in style(value, C) where C applies code-style formatting, producing a rounded box around the emoji. Parentheses matter: the link call must be evaluated before style formats the resulting hyperlink. The same output can be written more compactly using method chaining (value.link(url).style(C)).

Why can checkbox-based habit tracking be turned into a progress ring, and what’s the core math?

Checkboxes behave like boolean values: unchecked/checked map to false/true, which can be converted to numbers. Passing a checkbox into two number converts it to 0 or 1. Summing all converted values gives the number of habits completed. Dividing that sum by the total number of habits yields a fraction, which is then formatted as a percent and rendered as a progress ring. Parentheses enforce that the sum is computed before division.

How does the “next birthday” formula make past birth years appear on a calendar at the right time?

It extracts month/day from the stored birthday date using format date(birthday, "mm-dd"). Then it rebuilds a date in the current year by concatenating the current year (today → year) with the month/day string, and casting it back into a date using parse date. An if conditional checks whether today is later than the birthday in the current year; if so, date add advances the result by 1 year. The output becomes a real date type so the calendar can use it.

What does the project “latest activity” formula do differently from sorting by a project’s edited time?

It gathers timestamps from connected records instead of relying on the project page’s own edited property. Using lets, it creates tasks = map(tasksRelation, current.edited) and notes = map(notesRelation, current.updated). It concatenates both lists plus the project’s own edited date (wrapped as a single-element list) using concat, sorts the combined list, reverses it, and returns the first element (latest date). That latest activity date then drives descending sorting in the projects view.

How does the YouTube timestamp generator build a newline-separated list ready for a video description?

It filters B-roll relation pages to those where a multi-select meta property includes "chapter" (using includes inside filter). It sorts by time code, then maps each item into a string like "timecode - title". Regular expressions (replace) strip the frame count from timestamps by removing the last two digits at the end of the string. It uses regex test to check whether the first entry starts with "0000"; if not, it prepends "0000 - introduction". Finally, join(list, "\n") converts the list into a single string with newline separators for easy pasting.

Review Questions

  1. In the URL icon formula, what role do parentheses play when nesting link inside style?
  2. For the habit progress ring, why is order of operations critical when computing percentage from checkbox-derived 0/1 values?
  3. In the latest activity formula, how do concat and list indexing (first/last) determine which timestamp becomes the sort key?

Key Points

  1. 1

    Create formula properties to replace wide or redundant fields with cleaner UI outputs, such as turning a URL into a compact clickable icon.

  2. 2

    Use function arguments and parentheses to control evaluation order when nesting functions like link and style.

  3. 3

    Convert checkbox booleans into numbers (via two number) to enable arithmetic and unlock progress ring/progress bar formatting.

  4. 4

    Build calendar-ready dates by reconstructing month/day with the current year and using if + date add to handle birthdays that already passed.

  5. 5

    Use let/lets variables to eliminate repeated logic and reduce the risk of inconsistent edits in complex formulas.

  6. 6

    When sorting by activity across related records, iterate with map, combine timestamps with concat, sort/reverse, and return a single list element (first/last) as the sort key.

  7. 7

    For automation outputs like YouTube timestamps, combine filter/map with regular expressions (replace/test) and finish with join to produce a paste-ready string.

Highlights

A clickable “URL icon” can be built by outputting an emoji as text, wrapping it with link(label, url), then styling the result with style(..., C).
Habit progress rings become possible by converting checkbox states into 0/1 numbers, summing them, and dividing by the total—then formatting the result as percent.
The “next birthday” calendar fix relies on reconstructing dates in the current year (today + year + parse date) and using an if conditional to advance to next year when needed.
Project sorting by latest activity is achieved by mapping connected tasks/notes to edited/updated timestamps, concatenating lists, sorting, and returning the latest element.
The YouTube timestamp generator uses filter/map plus regular expressions to strip frame counts and conditionally prepend a required 0000 introduction entry, then join with newlines for easy pasting.

Topics