This repository provides a User Defined Language (UDL) definition for Notepad++ to enable syntax highlighting for Azure Bicep files (.bicep).
Bicep is a Domain Specific Language (DSL) for deploying and managing Azure resources. It provides declarative syntax and simplifies the authoring experience compared to raw ARM templates.
More information is available here: What is Bicep?
While VS Code with the official Bicep extension offers the best Bicep development experience, this UDL allows you to have basic syntax highlighting in Notepad++ if you prefer a lightweight editor.
- Download the UDL file for your theme: You can either clone this repository or directly save the XML file directly.
- Light theme:
Bicep-UDL.xml - Dark theme:
Bicep-UDL_dark.xml(thanks to @IAmCorbin)
- Light theme:
- Open Notepad++: Launch the application.
- Open User Defined Language Dialog: Go to Language > Define your language....
- Import the UDL: Click the Import... button in the "User Defined Language" dialog.
- Select the XML file: Choose the downloaded XML file.
- Close the Dialog: Close the "User Defined Language" dialog.
- Open a Bicep file: Open a
.bicepfile. The syntax highlighting should now be applied.
| Light Theme | Dark Theme |
|---|---|
![]() |
![]() |
| Bicep-UDL.xml | Bicep-UDL_dark.xml |
This UDL provides highlighting for:
- Keywords: param, var, output, in, targetScope, resource, module, output, existing, import, as, type, with, using, extends, func, assert, extension
- Literals: true, false, null, any
- Logical Operators: and, or, not
- Built-in Functions: for, if, concat, format, replace, split, uniqueString, resourceId, reference, json, int, bool, string, array, object, union, intersection, length, substring, range, toLower, base64
- Directives: # prefixed directives such as
#disable-next-line,adminusername-should-not-be-literal,artifacts-parameters,decompiler-cleanup,explicit-values-for-loc-params, and many more - Additional Keywords: resourceGroup, subscription, tenant, deployment, managementGroup, environment
- Operators:
=,+,-,*,/,%,&,|,^,!,~,<,>,<=,>=,==,!=,??,:,? - Numbers: Integer and decimal numbers, supporting suffixes
f, F, d, Dand scientific notation (e, E) - Strings: Single and double-quoted strings with escape sequence support
- Comments: Single-line (
//) and multi-line (/* ... */) comments - Brackets and Parentheses:
{},[],()
This UDL is a work in progress. Notepad++'s UDL system has limitations compared to the more advanced textmate grammars or Language Server Protocol (LSP) used in VS Code. Therefore, this UDL has the following limitations:
- Complex String Interpolation: The more complex string interpolation (
${...}) and verbatim strings (''') are not fully supported. Basic string highlighting is provided, but nested expressions within strings might not be highlighted correctly. - Advanced Regex: The original Bicep grammar uses complex regular expressions that are difficult or impossible to fully replicate in Notepad++ UDLs.
- No Semantic Analysis: This UDL only provides syntax highlighting based on lexical analysis. It does not provide semantic features like code completion, validation, or go-to-definition.
Contributions are welcome! If you find any issues or have improvements, please feel free to open a pull request or submit an issue.
This project is licensed under the MIT License.

