azurecafnaming conventionsbest practices

Azure Naming Conventions: The Complete CAF Guide (2026)

A practical guide to Microsoft's Cloud Adoption Framework naming conventions for Azure resources — components, separators, length limits, and real examples.

AzureNamer Team ·

Inconsistent Azure resource names are more than an aesthetic problem. They make automation scripts brittle, dashboards confusing, and cost reports impossible to filter by workload. Microsoft’s Cloud Adoption Framework (CAF) addresses this with a structured naming standard — and it’s the closest thing the Azure ecosystem has to an official convention.

This guide covers the full CAF naming standard: its components, ordering rules, character restrictions, and real examples you can use today.

Why naming conventions matter

Once an Azure resource is deployed, most names cannot be changed. A Storage Account named mystorageaccount123 is stuck that way — renaming it means deleting and recreating it, which means downtime and data migration. Getting naming right before deployment is far cheaper than fixing it later.

Beyond immutability, consistent names enable:

  • Cost allocation — filter by workload or environment in Cost Management
  • Automation — scripts and pipelines can derive names programmatically
  • Governance — Azure Policy can enforce naming patterns
  • Onboarding — new team members can infer what a resource is from its name alone

The CAF naming components

CAF defines five standard components that combine to form a resource name:

ComponentDescriptionExample
Resource typeCAF abbreviation for the servicekv, st, aks
Workload / ApplicationThe system or app this resource servespayments, api
EnvironmentDeployment environmentprod, dev, stg
Azure regionWhere the resource is deployedeus, weu
InstanceDifferentiates multiple identical resources001, 002

CAF intentionally keeps the component list short. Two additional components — company and department — are common extensions for larger organisations that need to namespace resources across business units.

Component order and separator

The recommended order is:

{type}-{workload}-{environment}-{region}-{instance}

With company and department added:

{type}-{company}-{department}-{workload}-{environment}-{region}-{instance}

The separator is a hyphen (-) for most resources. Some resource types (Storage Accounts, for example) don’t allow hyphens — in those cases, components are concatenated directly.

Environment abbreviations

CAF doesn’t mandate specific abbreviations but community consensus has settled on:

EnvironmentAbbreviation
Productionprod
Developmentdev
Stagingstg
Testtest
UATuat
QAqa

Region abbreviations

CAF uses full region names in its official documentation (eastus, westeurope), but practitioners almost universally shorten them to save characters — especially important for resources with tight length limits. Common community abbreviations:

RegionAbbreviation
East USeus
East US 2eus2
West USwus
West Europeweu
North Europeneu
UK Southuks
Southeast Asiasea
Australia Eastaue

When characters are tight, the abbreviated form is preferred. When names have room, full region names (eastus) are unambiguous and match what the Azure portal shows.

Character rules and length limits

Every Azure resource type has its own rules. The most common restrictions:

Resource typeAbbreviationMax lengthCharacters allowed
Key Vaultkv24Alphanumerics + hyphens
Storage Accountst24Lowercase alphanumerics only
Virtual Machine (Windows)vm15Alphanumerics + hyphens
AKS Clusteraks63Alphanumerics + hyphens
Resource Grouprg90Alphanumerics + hyphens + underscores
App Serviceapp60Alphanumerics + hyphens

The 24-character limits on Key Vault and Storage Account are the most common pain points. A name like kv-contoso-payments-prod-eus-001 is 32 characters — over the limit. The solution is to drop lower-priority components: remove department, then company, then shorten the workload until it fits.

Real naming examples

Assuming: company contoso, workload payments, environment prod, region eus, instance 001:

ResourceGenerated name
Resource Grouprg-contoso-payments-prod-eus-001
Key Vaultkv-contoso-payments-prod-001
Storage Accountstcontosopaymentsprod001
AKS Clusteraks-contoso-payments-prod-eus-001
App Serviceapp-contoso-payments-prod-eus-001
SQL Serversql-contoso-payments-prod-eus-001
Virtual Networkvnet-contoso-payments-prod-eus-001

Notice that Key Vault dropped the region to fit within 24 characters, and Storage Account has no hyphens and is all lowercase.

Common mistakes

Using free-form descriptions instead of abbreviations. Names like production-key-vault-for-payments are longer, inconsistent, and don’t sort well. Use the CAF abbreviation as the type prefix.

Ignoring length limits until deployment. A naming template that works for most resources will break on Storage Accounts and Key Vaults. Design for the tightest limits first.

Mixing conventions across teams. Half the organisation uses prod and the other half uses prd. Standardise environment abbreviations in a document before deploying anything.

Not including instance numbers. Even if you only expect one instance, adding 001 now means you never need to rename when a second one appears.

Using a generator

Tracking 203 resource type rules manually is impractical. AzureNamer generates CAF-compliant names for all Azure resource types, applies smart truncation when length limits are hit, and lets you export a full list as CSV.

Try AzureNamer →

Try AzureNamer

Generate CAF-compliant names for all 203 Azure resource types — free, no login required.

Open the Generator →