DMN FEEL expression tester - online evaluator / debugger
loading wasm module…
This FEEL interpreter runs entirely in your browser via WebAssembly, no data is transmitted to any server.
Open the full function reference with syntax, parameters and examples for every built-in, or browse the FEEL examples cheat sheet.
What is FEEL?
FEEL (Friendly Enough Expression Language) is the expression language defined by the OMG Decision Model and Notation (DMN) standard. It powers the conditions and outputs of DMN decision tables and literal expressions, and is executed by DMN decision engines and business rule platforms. FEEL is designed to be readable by business analysts while remaining precise enough for automated execution: it has first-class dates, times and durations, lists, contexts (structured records), ranges, and a rich built-in function library.
What is DMN?
Decision Model and Notation (DMN) is the OMG standard for modeling and automating business decisions:
credit scoring, pricing, eligibility checks, routing rules. Decisions are modeled as decision tables and
decision requirement diagrams; FEEL is the language used inside them. Decision table cells contain
unary tests, conditions like < 10, [1..10] or value lists that are matched
against the inputs. Because FEEL is a vendor-neutral OMG standard, expressions you test here run
unchanged on any conformant DMN decision engine or business rules platform. This tester evaluates the current
DMN 1.6 Beta 1 version of FEEL.
What is B-FEEL?
B-FEEL is the business-friendly dialect of FEEL introduced with DMN 1.6 (defined in chapter 11
of the specification). Standard FEEL propagates null through type errors, which can
make a whole decision collapse to null; B-FEEL instead substitutes type defaults and coerces
mixed-type arithmetic, so decisions keep producing usable values:
1 + null yields 1, "total: " + 5 yields
"total: 5", and 1/0 yields 0.
This tester evaluates both dialects; use the FEEL / B-FEEL toggle next to the expression input, or
browse every difference between FEEL and B-FEEL.
How this tester works
Type any FEEL expression and hit Evaluate. The context editor below the expression supplies variables as a
FEEL context literal; the expression sees its entries as variables, so
customer.age * 2 works against {customer: {age: 34}}.
The interpreter is a Java-based FEEL interpreter compiled to WebAssembly with GraalVM, and the syntax
highlighting uses the interpreter's own lexer: what you see highlighted is exactly what gets parsed.
FAQ
What does FEEL stand for?
FEEL stands for Friendly Enough Expression Language. It is the expression language defined by the OMG Decision Model and Notation (DMN) standard, designed to be readable by business users while remaining precise enough for automated execution by decision engines.
Is my data sent to a server?
No. The FEEL evaluator runs entirely in your browser as a WebAssembly module. Expressions and context data never leave your machine.
Which FEEL version is supported?
FEEL as defined by OMG DMN 1.6 Beta 1, including the full built-in function library and temporal types. The interpreter also implements the business-friendly B-FEEL dialect (DMN chapter 11); the function library below shows where the two dialects differ.
Is this FEEL tester free?
Yes, free to use, no signup, no account, no limits.
What interpreter evaluates the expressions?
The Impulse FEEL interpreter developed by Nvaria GmbH, a Java based FEEL interpreter compiled to WebAssembly with Truffle/GraalVM. The syntax highlighting uses the same lexer as the evaluator, so it always matches the executed grammar.
Can I use these expressions in my DMN engine?
Yes. FEEL is a vendor-neutral OMG standard, so any conformant DMN decision engine or business rules platform executes the same expressions. Test and debug an expression here, then paste it into your decision table or literal expression. This evaluator supports FEEL 1.6 Beta 1; some newer language features may not yet be available in other FEEL interpreters.
What can I test with it?
Any FEEL expression: arithmetic, strings, lists, contexts, ranges, dates, times and durations, filters, if/for/some/every expressions, and all FEEL built-in functions. This evaluator supports FEEL 1.6 Beta 1; some newer language features may not yet be available in other FEEL interpreters.