Skip to main content

Azure ARM Template Validator

Validate your Azure ARM template JSON for structural errors and best-practice violations — without running az deployment. Catch missing required fields, insecure parameter types, hardcoded locations, and more before deployment.

✓ 60K+ developers trust DevPlaybook ✓ Runs 100% in your browser ✓ 9 validation checks

Frequently Asked Questions

What is an Azure ARM template?▼

An Azure Resource Manager (ARM) template is a JSON file that declaratively defines the Azure resources you want to deploy. The template describes the desired end state, and ARM handles the deployment order, parallel operations, and idempotency. ARM templates support parameters (for reusability), variables (for internal calculations), resources (the infrastructure to deploy), and outputs (values returned after deployment). They're the foundation of Infrastructure as Code on Azure.

What is the $schema field in an ARM template?▼

The $schema field points to the JSON Schema definition for the template, which enables IDE validation and IntelliSense. Different schemas apply to different deployment scopes: 2019-04-01/deploymentTemplate.json# for resource group deployments (most common), 2018-05-01/subscriptionDeploymentTemplate.json# for subscription-level deployments (policy, RBAC), 2019-08-01/managementGroupDeploymentTemplate.json# for management group deployments, and 2019-08-01/tenantDeploymentTemplate.json# for tenant-level deployments.

What is the difference between ARM templates and Bicep?▼

Bicep is a domain-specific language (DSL) that compiles to ARM JSON. It offers cleaner syntax (no JSON boilerplate), better type safety, modules for reusability, and a simpler parameter file format. Bicep is now the recommended way to write Azure IaC — the Azure docs increasingly show Bicep first. ARM JSON is still valid and supported but verbose. You can convert existing ARM templates to Bicep with 'az bicep decompile'. Terraform is another popular alternative that supports Azure alongside other clouds.

Why should sensitive parameters use securestring?▼

Parameters with type 'string' are logged in deployment history, Azure Monitor logs, and visible in the Azure Portal. Using 'securestring' tells Azure to never log or display the value — it's treated as a secret throughout the deployment pipeline. Always use securestring for passwords, API keys, connection strings, and certificates. Combine with Azure Key Vault parameter references to avoid passing secrets on the command line at all: ARM can retrieve values directly from Key Vault at deploy time.

How should I avoid hardcoding locations in ARM templates?▼

Hardcoding a location like 'eastus' makes the template non-portable — it fails if deployed to a subscription with restrictions or a different preferred region. Instead, use '[resourceGroup().location]' to automatically use the resource group's region (most common), or add a 'location' parameter with a default of '[resourceGroup().location]' to allow overrides. This makes the same template deployable to any region without modification.

What are ARM template outputs and when should I use them?▼

Outputs return values from a deployment, such as resource IDs, connection strings, storage account keys, or public IP addresses. They're essential for chained deployments (where one template consumes outputs from another), CI/CD pipelines (capturing connection strings for configuration), and cross-resource-group deployments. Common outputs: storage account connection string, Key Vault URI, App Service default hostname. Access outputs with 'az deployment group show --query properties.outputs'.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →