Loading Bicep to ARM Converter...
Please wait a moment

How to Convert Bicep to ARM Templates - Step by Step Guide

Step 1

Input Your Bicep Code

Start with your Bicep file. While Bicep is the modern approach, sometimes you need ARM templates for tooling compatibility or pipeline requirements:

•
Paste directly: Copy your Bicep code and paste into the editor
•
Upload file: Click "Upload" to select your .bicep file
•
Try sample: Click "Sample" to see an example Bicep file

Example: Bicep Code

Clean and readable Bicep syntax:

targetScope = 'resourceGroup'

@description('Storage account name')
param storageAccountName string

param location string = resourceGroup().location

var storageAccountType = 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}
Step 2

Automatic Conversion to ARM Template

The converter automatically transforms your Bicep code into standard ARM template JSON:

•
Parameters: Bicep params with decorators become ARM parameters with metadata
•
Variables: Bicep var declarations convert to ARM variables
•
Resources: Bicep resource declarations become ARM resources with full syntax
•
References: Symbolic names convert to resourceId() and reference() functions
•
Outputs: Bicep outputs become ARM template outputs

Example: Converted ARM Template

Standard ARM template format:

{
  "$schema": "https://schema.management.azure.com/...",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "metadata": {
        "description": "Storage account name"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "variables": {
    "storageAccountType": "Standard_LRS"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('storageAccountType')]"
      },
      "kind": "StorageV2"
    }
  ]
}
Step 3

Review Generated ARM Template

Review the generated ARM template and verify the conversion:

•
Schema validation: Ensure $schema and contentVersion are correct
•
Parameter metadata: Check that descriptions and defaults are preserved
•
Resource dependencies: Verify dependsOn arrays are properly generated
•
Functions: Ensure template functions are correctly formatted with brackets
Step 4

Deploy Your ARM Template

Download and use your ARM template for deployment:

•
Download: Click "Download" to save as azuredeploy.json
•
Portal deployment: Use Azure Portal's custom template deployment
•
CLI deployment: Run az deployment group create --template-file azuredeploy.json
•
CI/CD integration: Use in Azure DevOps or GitHub Actions pipelines

Frequently Asked Questions

Why would I convert Bicep back to ARM templates?

While Bicep is recommended for new development, ARM templates are still needed for: legacy tooling compatibility, certain CI/CD pipelines that don't yet support Bicep natively, sharing templates with teams not using Bicep, or integrating with third-party tools that require ARM JSON format.

Is the conversion lossy or does it preserve all features?

Bicep is designed to be a transparent abstraction over ARM templates. The official az bicep build command produces ARM templates with 100% feature parity. This browser-based tool handles common Bicep patterns, though complex features may require the Azure CLI for full fidelity.

Can I still use Bicep modules after conversion?

Bicep modules compile to nested ARM template deployments. When you convert a Bicep file with modules, each module reference becomes a nested deployment resource in the ARM template. The module files themselves need to be converted separately or referenced as linked templates.

What's the difference between this and az bicep build?

Azure CLI's az bicep build is the official tool with full Bicep language support. This browser-based converter provides quick, client-side conversion for common scenarios without requiring Azure CLI installation. For production deployments, we recommend the official Azure CLI tool.

Are ARM templates still supported by Microsoft?

Yes! ARM templates remain fully supported and are the foundation of Azure Resource Manager. Bicep compiles to ARM templates under the hood. Microsoft will continue supporting ARM templates indefinitely, though they recommend Bicep for new projects due to its improved developer experience.

Can I convert ARM templates to Bicep?

Absolutely! We offer the reverse converter: ARM to Bicep. You can also use Azure CLI's az bicep decompile command for official Microsoft conversion with full language support.