GiGs said: Interesting! Would Mustache have been a better solution than Handlebars? I gave it some thought, and I still like Handlebars better. In fact, I would contend that Roll20's roll templates should have used Handlebars too. The primary distinction between the two is that Mustache is explicitly "logic-less", just putting the values from the source data directly into the output. Handlebars split from Mustache to be able to include logic. The helper functions created by Roll20 for Mustache actually violate the "logic-less" principle, and are implemented in a sort of hacky way. In Mustache, helper functions only receive the inner content and the renderer as parameters; they do not accept additional tokens inside the {{ }} as tokens. I'm pretty sure Roll20 took version 0.8 (from 7 years ago) and modified it to identifier their helpers and provide additional arguments - I can't find a Mustache version that has the same `renderTokens` function that's bundled in the Roll20 app.js. All the other things that Mustache does, Handlebars also does with the same syntax. (Handlebars doesn't have all of that documented, like using `#<property>` or `^<property>` for conditional sections or iterating over arrays, but those do still work. Handlebars documentation presents `#if`, `#unless`, and `#each` built-in helpers, which are more robust versions of the same thing.) I suppose file size and runtime performance *might* have been concerns. Handlebars' file is larger, and I'm sure it runs slower, but I expect the difference is a matter of milliseconds. edit : Actually, the Handlebars homepage promotes faster execution than most other templates. I didn't realize that Mustache doesn't precompile templates like Handlebars does. Handlebars is likely faster, so long as Roll20 actually precompiles the rolltemplates. The "logic" supported in Handlebars and not in Mustache ranges from simple conditions - basically what Roll20 hacked Mustache to do - to transformations of the source data. The Mustache's design philosophy is those conditions and transformations should be run to generate the source data passed to the template, but Roll20's implementation doesn't have such a step. The closest it has are the auto-calc formulas, which themselves are pretty limited. On the other hand, since custom sheet authors still won't be able to register their own helper functions anyway, the result is effectively the same. Using Handlebars would just mean Roll20 won't have to use a customized version of the template renderer. (That the Roll20 Mustache is 7 years and 4 major versions out-of-date is kind of concerning.) Maybe if they were using Handlebars, they can import libraries of helpers like I did in my sheet generator, but maybe that would overwhelm amateur contributors.