Plan Tiers Overview
| Tier | vCPU | RAM | Custom Domain | SSL | Auto-Scale | Slots | SLA |
|---|---|---|---|---|---|---|---|
| Free (F1) | Shared | 1 GB | ❌ | ❌ | ❌ | 0 | None |
| Shared (D1) | Shared | 1 GB | ✅ | ❌ | ❌ | 0 | None |
| Basic (B1-B3) | 1–4 | 1.75–7 GB | ✅ | ✅ | ❌ (manual only) | 0 | 99.95% |
| Standard (S1-S3) | 1–4 | 1.75–7 GB | ✅ | ✅ | ✅ | 5 | 99.95% |
| Premium v3 (P0v3-P3v3) | 2–8 | 4–32 GB | ✅ | ✅ | ✅ | 20 | 99.95% |
| Isolated v2 (I1v2-I6v2) | 2–32 | 8–128 GB | ✅ | ✅ | ✅ | 20 | 99.95% |
Free and Shared Tiers
The Free (F1) and Shared (D1) tiers run on shared infrastructure — your app shares CPU with other customers' apps. There is no SLA, limited compute, and the app may be suspended when compute quotas are exceeded.
- Free (F1) — 60 CPU minutes/day limit, no custom domain, no SSL. Dev/test only.
- Shared (D1) — 240 CPU minutes/day, supports custom domain. Still no SLA.
Basic Tier
The entry-level dedicated tier — your app runs on its own VMs not shared with other customers. Basic provides:
- Dedicated compute (B1: 1 vCPU, 1.75 GB RAM; B2: 2 vCPU, 3.5 GB RAM; B3: 4 vCPU, 7 GB RAM)
- Custom domains and SSL certificates
- Manual scaling up to 3 instances
- 99.95% SLA
- No deployment slots, no auto-scale
Standard Tier
The most commonly used production tier. Standard adds auto-scaling and deployment slots over Basic:
- Auto-scale — scale out to 10 instances based on metrics
- 5 deployment slots (staging environments)
- Daily backups
- Traffic Manager integration
- Same VM sizes as Basic (S1/S2/S3)
Premium Tiers
Premium v3 provides significantly more powerful VMs and additional features for high-traffic production apps:
- Up to 20 deployment slots
- Scale out to 30 instances
- Larger VMs (P1v3: 2 vCPU/8 GB RAM up to P3v3: 8 vCPU/32 GB RAM)
- VNet Integration (built-in, not add-on)
- Zone redundancy — deploy across Availability Zones
- Private endpoint support
Isolated Tier (ASE)
The Isolated tier runs in an App Service Environment (ASE) — a fully dedicated, single-tenant environment deployed into your own VNet. Every aspect is dedicated exclusively to your apps.
- Complete network isolation — deployed entirely within your VNet
- No public internet exposure (unless you configure it)
- Scale to 100+ instances
- Largest VMs (I6v2: 32 vCPU, 128 GB RAM)
- Required for regulatory compliance (PCI-DSS, HIPAA) needing network isolation
- Much more expensive — the ASE itself has a fixed hourly charge plus per-instance charges
Sharing Plans Across Apps
Multiple apps can run on the same App Service Plan — sharing compute resources. This reduces cost but means all apps compete for the same CPU and memory.
| Strategy | When to Use |
|---|---|
| Share one plan for multiple apps | Low-traffic apps, dev/test, apps with complementary usage patterns |
| Separate plan per app | High-traffic apps, apps requiring different scale settings, production isolation |
Scale-Up vs Scale-Out
| Scale Up (Vertical) | Scale Out (Horizontal) | |
|---|---|---|
| What changes | Move to a bigger VM size (B1 → B2 → B3) | Add more instances of the same VM size |
| How | Change the plan tier/size | Manual or auto-scale rules |
| Downtime? | Brief restart | No downtime |
| Limit | Max VM size in tier | Max instances for tier (10–100+) |
Choosing the Right Tier
| Scenario | Tier |
|---|---|
| Learning, development, prototyping | Free (F1) |
| Low-traffic production app, no auto-scale needed | Basic (B1/B2) |
| Standard production app needing auto-scale and slots | Standard (S1/S2) |
| High-traffic app, needs more VMs, more slots | Premium v3 (P1v3/P2v3) |
| Compliance, network isolation, single-tenant | Isolated v2 (ASE) |
Creating a Plan via CLI
# Create App Service Plan (Standard S1, Linux)
az appservice plan create \
--name myAppServicePlan \
--resource-group myRG \
--location centralindia \
--sku S1 \
--is-linux
# Create Web App on this plan
az webapp create \
--name mywebapp-2026 \
--resource-group myRG \
--plan myAppServicePlan \
--runtime "NODE:20-lts"
# Scale up to S2
az appservice plan update \
--name myAppServicePlan \
--resource-group myRG \
--sku S2
# Manually scale out to 3 instances
az appservice plan update \
--name myAppServicePlan \
--resource-group myRG \
--number-of-workers 3