aibrevoBook a call

Part of the monday CRM guide: pricing, setup, integrations, migration and comparisons in one place.

Free tool

monday.com formula builder and checker

Pick what you want the Formula column to calculate, type your column names, and copy a formula written in monday.com's documented syntax. If monday shows "Illegal formula", paste it into the checker below: it finds curly quotes, missing zeros and brackets, Excel-only functions and unsafe blanks, and hands back a fixed version.

Syntax rules and the 56-function library from monday.com's Formula Column articles, checked October 17, 2026. Runs in your browser; nothing is sent anywhere.

What should the formula do?

Type column names exactly as they appear on your board. monday.com treats names and labels as case sensitive, so {Due Date} and {due date} are different columns.

Your formula

ROUND(DAYS({Due Date},TODAY()),0)

Days left until the due date. A negative number means the item is overdue.

In monday.com: click any cell in the Formula column, paste into the editor, then click Set formula.

Check a formula that says "Illegal formula"

Paste the formula exactly as you have it. The checker reads it the way monday.com's rules describe, fixes what can be fixed safely and explains the rest.

    Fixed version

    Common monday.com formulas, ready to copy

    Each one is also a formula type in the builder, where you can swap in your own column names. Column names here are examples.

    What it doesFormula
    Days until a due date (negative means overdue)ROUND(DAYS({Due Date},TODAY()),0)
    Working days between two datesWORKDAYS({To},{From})
    Length of a Timeline in working daysWORKDAYS({Timeline#End},{Timeline#Start})
    Add 15 days to a date, formattedFORMAT_DATE(ADD_DAYS({Start Date},15))
    Text when a column is emptyIF(LEN({Email})=0,"Missing email",{Email})
    Status is not DoneIF({Status}="Done","Closed","Still open")
    Labels to numbersSWITCH({Priority},"High",3,"Medium",2,"Low",1,0)
    Two conditionsIF(AND({Total Sales}>350000,{Deals}>12),250,0)
    Weighted pipeline valueROUND(MULTIPLY({Deal Value},DIVIDE({Probability},100)),2)
    Stale deal flagIF(DAYS(TODAY(),{Last Updated})>14,"Stale","Active")
    Percent changeROUND(MULTIPLY(DIVIDE(MINUS({February Sales},{January Sales}),{January Sales}),100),2)
    Full nameCONCATENATE({First Name}," ",{Last Name})
    Currency formatTEXT({Amount},"$#,##0.00")
    Day of the weekTEXT({Date},"dddd")

    Why does monday.com say "Illegal formula"?

    Because something in the formula breaks one of the column's syntax rules. These are the causes monday.com's own articles describe, plus the Excel habits that produce the same error:

    What you see or didCauseFix
    Curly quotes from Word, Google Docs or Slack: “Done”monday reads them as illegal charactersRetype them as straight quotes: "Done". The checker does this for you.
    A decimal with no zero: MULTIPLY(10,.25)monday requires a 0 before the decimal pointWrite 0.25. The checker adds the zero.
    A red bracket in the editorAn extra or missing parenthesis or braceEvery ( needs a ) and every { needs a }. The checker shows which one is unmatched.
    Column name typed without braces, or with the wrong caseNames must be wrapped in {} and match the board exactly; monday treats values as case sensitiveCopy the name from the column header: {Estimated SP}, not {estimated sp}.
    IFERROR, VLOOKUP, SUMIF or another Excel functionNot in monday's function libraryUse the replacements the checker suggests (an IF with LEN for blanks; a Mirror or Connect Boards column instead of a lookup).
    The formula works on most rows but errors where a cell is emptyThe function gets a blank instead of a number or dateCheck for the blank first: IF(LEN({Column})=0, "", your formula).
    Formula pasted from Excel starting with =monday formulas don't start with an equals sign (none of monday's examples do)Remove the leading =. The checker does this.
    Semicolons between arguments: IF(A;B;C)A European Excel habit; monday's syntax uses commasReplace ; with , outside of quoted text. The checker does this.

    If the checker finds nothing and monday still rejects the formula, the problem is usually a name: a column renamed since you wrote the formula, or a status label in quotes that is spelled differently on the board. "NaN" in a cell means the formula tried to calculate text or an empty value, per monday.com's FAQ.

    How do I check if a cell is blank in a monday.com formula?

    Test its length. monday.com says IFERROR isn't supported and recommends an IF check with LEN to handle empty values before the rest of the calculation runs:

    IF(LEN({Start Date})=0,"",DAYS({Due Date},{Start Date}))

    Tick "Show a blank instead of an error" in the builder and it wraps every formula this way, checking each column the formula reads.

    How do I write "not equal" in a monday.com formula?

    Swap the two results of the IF. monday.com's documentation shows equals, greater than and less than comparisons, so instead of testing "status is not Done", test "status is Done" and put your answer in the false branch:

    IF({Status}="Done","","Still open")

    To compare two columns, EXACT() returns true when they match: IF(EXACT({Owner},{Approver}),"Same person","Different"). The != operator from programming languages is not in monday's documentation; the checker flags it.

    What a monday.com formula can't do

    • It works across one item only. A formula reads the other cells of the same item. It can't add up a whole column or read another item, so use the column summary for totals. monday.com: "Item A cannot pull any information into a Formula Column on Item B."
    • It can't read other boards. No VLOOKUP. Connect the boards with a Connect Boards column and bring the value over with a Mirror column instead.
    • It can't trigger automations or fill other columns. The result is read-only. monday.com's workaround: a workflow copies the result into a regular Numbers or Text column, and the automation, email, chart or dashboard reads that column.
    • It can't set a status. People search for "set status with formula", but the formula only displays a value. Copy the result into a column with a workflow, then use an automation on that column to change the status.
    • TEXT() turns numbers into text. Formatting a number as currency makes the column summary show N/A instead of a total.
    • 10,000 characters is the length limit in the formula builder.

    Which columns can a formula read?

    monday.com's two formula articles list slightly different columns, so check this before you build on a Mirror or World Clock column:

    Column"The Formula Column" article"Available functions" article
    Check, Country, Creation Log, Date, Dependency, Dropdown, Email, Formula, Hour, Item ID, Last Updated, Long Text, Numbers, Person, Phone, Rating, Status, Text, Timeline, Time Tracking, VoteSupportedSupported
    MirrorSupportedListed as incompatible
    Connect Boards / Link to ItemConnect Boards supportedLink to Item supported
    World ClockSupportedListed as both supported and incompatible
    Subitem names and count of subitemsSupportedSupported
    Autonumber, Color Picker, Files, Link, Location, Progress Tracking, Tags, WeekNot supportedNot supported

    monday.com's Formula Use Cases article shows SUM({Mirror}) working when the mirrored column is a Numbers column, which matches the first article. Test a Mirror formula on a copy of your board before you rely on it.

    How do I track how long a deal has been in one stage?

    Stamp the date when the stage changes, then count from it. The Last Updated column changes on any edit, so it measures inactivity, not time in a stage. Add a Date column called Stage Date, create the automation "When status changes to something, set date to today", and use:

    IF(DAYS(TODAY(),{Stage Date})>14,"Stuck","Moving")

    Pick "Stale deal or item age" in the builder to set your own threshold. For the rest of the CRM board design, see monday.com custom fields and formulas, explained, which works through a weighted-pipeline board step by step, and monday CRM automation recipes.

    monday.com formula functions: the full list

    All 56 functions in monday.com's formula library, with monday's own examples. monday.com's use-case examples also use NOW() and WEEKDAY() (WEEKDAY returns 1 for Sunday and 7 for Saturday), which the library page does not list.

    FunctionTypeWhat it doesExample
    CONCATENATETextJoins text values into one valueCONCATENATE("I","love","monday.com") => Ilovemonday.com
    LEFTTextCharacters from the left of a textLEFT("monday.com", 3) => mon
    LENTextNumber of characters in a textLEN("hello") => 5
    LOWERTextConverts text to lowercaseLOWER("Some STRING") => some string
    REPLACETextReplaces part of a text with new textREPLACE("Goat",1,2,"Fl") => Flat
    REPTTextRepeats a text a number of timesREPT("monday",3) => mondaymondaymonday
    RIGHTTextCharacters from the right of a textRIGHT("monday", 3) => day
    SEARCHTextFinds a text inside another textIF(SEARCH("love","I love monday",1)>0,"Exist","Not")
    SUBSTITUTETextReplaces matching textSUBSTITUTE("goodmorning","morning","night") => goodnight
    TEXTTextFormats a value with a format patternTEXT(8500.6,"$#,##0.00") => $8,500.60
    TRIMTextRemoves extra spacesTRIM(" I love MDY ") => I love MDY
    UPPERTextConverts text to uppercaseUPPER("monday.com") => MONDAY.COM
    ANDLogicalTrue if every condition is trueAND(3>1, 4>2) => true
    EXACTLogicalTrue if two values are the sameEXACT({Status},{Status}) => true
    IFLogicalReturns one value if a condition is true, another if notIF({Deal Value}>100,"big deal","small deal")
    ORLogicalTrue if any condition is trueOR(3>10, 4>2) => true
    XORLogicalExclusive or of the conditionsXOR(3>0, 2>9) => true
    SWITCHLogicalReturns the result paired with the matching value, with an optional defaultSWITCH({Priority},"High",3,"Medium",2,"Low",1,0)
    ABSNumericAbsolute valueABS(-1) => 1
    AVERAGENumericAverage of the numbersAVERAGE(1,2,3) => 2
    COUNTNumericCounts the numeric itemsCOUNT(1,2,"a") => 2
    DIVIDENumericOne number divided by anotherDIVIDE(10,5) => 2
    LOGNumericLogarithm of a numberLOG(16,2) => 4
    MAXNumericLargest valueMAX(1,3,5,9) => 9
    MINNumericSmallest valueMIN(1,3,5,9) => 1
    MINUSNumericDifference of two numbersMINUS(5,3) => 2
    MODNumericRemainder of a divisionMOD(10,3) => 1
    MULTIPLYNumericProduct of two numbersMULTIPLY(5,2) => 10
    POWERNumericA number raised to a powerPOWER(2,3) => 8
    ROUNDNumericRounds to a number of digitsROUND(1.123456,2) => 1.12
    ROUNDDOWNNumericAlways rounds downROUNDDOWN(1.1,0) => 1
    ROUNDUPNumericAlways rounds upROUNDUP(1.1,0) => 2
    SQRTNumericSquare rootSQRT(9) => 3
    SUMNumericAdds the numbersSUM(2,3,8) => 13
    ADD_DAYSDate and timeAdds days to a dateADD_DAYS("2019-01-20", 5)
    DATEDate and timeBuilds a date from year, month, dayDATE(2018,5,30)
    DATEVALUEDate and timeTurns a date written as text into a dateDATEVALUE("2025-11-12")
    DAYDate and timeDay of the monthDAY({Creation Log}) => 31
    DAYSDate and timeDays between two dates (end first)DAYS({End Date},{Start Date})
    FORMAT_DATEDate and timeFormats a dateFORMAT_DATE(TODAY(),"YYYY-MM-DD")
    HOURDate and timeHour from 0 to 23HOUR(NOW())
    HOURS_DIFFDate and timeDifference between two Hour columnsHOURS_DIFF("23:00","20:00") => 03:00
    ISOWEEKNUMDate and timeISO week number of a dateISOWEEKNUM({Date})
    MINUTEDate and timeMinute from 0 to 59MINUTE(NOW())
    MONTHDate and timeMonth of a dateMONTH({Creation Log}) => 7
    SECONDDate and timeSecond from 0 to 59SECOND(NOW())
    SUBTRACT_DAYSDate and timeSubtracts days from a dateSUBTRACT_DAYS(TODAY(), 5)
    SUBTRACT_MINUTESDate and timeSubtracts minutes from a date or timeSUBTRACT_MINUTES({Date}, 30)
    TODAYDate and timeThe current dateTODAY()
    WEEKNUMDate and timeWeek number of a dateWEEKNUM({Creation Log}) => 42
    WORKDAYDate and timeAdds working days to a dateWORKDAY({Date}, 20)
    WORKDAYSDate and timeWorking days between two dates (end first)WORKDAYS({To},{From})
    YEARDate and timeYear of a dateYEAR({Creation Log}) => 2018
    PIConstantsThe value of piPI() => 3.14159
    TRUEConstantsLogical trueIF(3>5 = TRUE, "a", "b") => b
    FALSEConstantsLogical falseFALSE

    Dates and times: monday.com says its date functions read date input in day/month order (May 12 as 12/5), show times on a 24-hour clock, and that date output varies. Wrap results in FORMAT_DATE() to control how they look, for example FORMAT_DATE(TODAY(),"YYYY-MM-DD").

    Where the rules come from

    Everything the builder and checker apply is from monday.com's support articles, read on October 17, 2026: The Formula Column (brackets, case, quotes, decimals, compatible columns, the AI assistant, limits, the 10,000-character cap, IFERROR not supported, LEN for blanks), Available functions in the Formula Column (the function library and examples) and Formula Use Cases (date, working-day, timeline, commission, inventory and business-hours examples, and the helper-column workaround for automations). The leading "=", semicolon and Excel-function checks are our additions for formulas pasted from spreadsheets.

    Moving data into monday.com as well? The CRM import file checker tests a CSV against monday's import limits, and importing a CSV into monday.com covers the steps. To see what monday CRM costs for your team, use the monday CRM pricing calculator.

    monday.com formula questions

    How do I write an IF formula in monday.com?

    Use IF(condition, value if true, value if false) and wrap column names in braces. For example IF({Status}="Done","Complete","Open") returns Complete for items marked Done and Open for everything else. Text, including status labels, goes in straight double quotes and must match the label exactly. You can nest IFs or use SWITCH for more than two outcomes.

    How do I check if a column is empty in a monday.com formula?

    monday.com recommends an IF check with LEN, because IFERROR is not supported. IF(LEN({Email})=0,"Missing","OK") returns Missing when the Email cell is blank. Put the same check in front of any calculation that would break on a blank cell, such as a division or a date difference, so empty rows show a blank instead of an error.

    How do you write not equal in a monday.com formula?

    Swap the two results of an IF. To return Open when the status is not Done, write IF({Status}="Done","Closed","Open"). monday.com's documentation only shows equals, greater than and less than comparisons, so the swapped IF is the safe form. EXACT() is another documented option when you compare two columns.

    Why does my monday.com formula say Illegal formula?

    The usual causes are curly quotes pasted from another app, a decimal written without a leading zero, unmatched brackets, a column name without braces or with the wrong case, an Excel-only function such as IFERROR or VLOOKUP, or a blank cell feeding a calculation. Paste the formula into the checker above to find and fix each one.

    Can a monday.com formula change a status or trigger an automation?

    No. A Formula column is read-only and calculated on the fly, so it cannot be an automation trigger and its result cannot be written into another column by itself. monday.com's workaround is to copy the formula result into a regular Numbers or Text column with a workflow, then point the automation, email or chart at that column.

    Can a monday.com formula sum a whole column or read another board?

    No. The Formula column calculates across one item (horizontally), not down a column, and it cannot read other boards, so VLOOKUP-style lookups are not possible. Use the column summary at the bottom for totals, and a Connect Boards plus Mirror column to bring a value in from another board.

    Is there an AI formula builder in monday.com?

    Yes, on accounts with monday AI enabled. In the Formula column editor, open the AI assistant tab, describe the calculation and insert the result. monday.com notes that the AI cannot read your board's labels, so you must replace label text with the exact labels from your board. This page's builder needs no AI credits or login.

    How long can a monday.com formula be?

    Up to 10,000 characters in the formula builder, according to monday.com's Formula Column article. Long nested IF chains are usually easier to maintain as one SWITCH, which also makes the formula shorter.

    Board logic getting out of hand?

    When formulas, mirrors and automations start depending on each other, a board needs a design, not another workaround. We build monday CRM boards with the calculations, helper columns and automations documented.