Nunjucks é um poderoso motor de template (templating engine) para JavaScript, fortemente inspirado pelo Jinja2 (Python). Arquivos que utilizam a extensão .njk são arquivos de modelo Nunjucks. Estes arquivos são compostos por uma combinação de HTML (ou outras linguagens de marcação), CSS, JavaScript e a sintaxe específica do Nunjucks. Esta sintaxe permite aos desenvolvedores incorporar conteúdo dinâmico, como variáveis, laços de repetição (loops) e instruções condicionais, diretamente na estrutura do modelo.
Quando o modelo é processado pelo motor Nunjucks, estes elementos dinâmicos são avaliados e substituídos pelos seus valores correspondentes, resultando em um arquivo de saída final (tipicamente HTML) que está pronto para ser servido ao navegador do usuário. Modelos Nunjucks são amplamente utilizados no desenvolvimento web para gerar páginas dinâmicas, e-mails e outros tipos de conteúdo. Eles promovem a reutilização de código e o princípio de separação de preocupações (separation of concerns), permitindo que a lógica de apresentação seja separada da lógica da aplicação. O motor suporta recursos avançados como herança de modelo (template inheritance), auto-escaping e filtros personalizados, tornando-o uma ferramenta versátil para a construção de aplicações web complexas. Nunjucks é frequentemente utilizado em conjunto com Node.js, mas também pode ser executado diretamente no navegador (browser).