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.

Context: A FEEL context literal; the expression sees its entries as variables
Result
Function library: click a name for full docs, or run its example directly

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.