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.