Azure Virtual Machines vs Hetzner Cloud

Azure Virtual Machines is a hyperscaler: hundreds of sizes, GPUs, Windows, Arm and 77 regions, billed per minute. Hetzner Cloud rents plain Linux servers by the hour with a monthly cap, in a few locations, and bills them until you delete them.

The companies and products

Azure Virtual Machines

Azure Virtual Machines is Microsoft's general-purpose cloud VM service: you rent Linux or Windows machines by the minute in Azure regions worldwide.

It is a hyperscaler IaaS product, not a sandbox API. Each VM runs on Microsoft's Hyper-V hypervisor with its own kernel, root and SSH, and you pick from hundreds of sizes, including Arm, burstable and GPU families. Networking, disks, images, firewalls and any agent tooling are separate pieces you set up yourself, so it suits teams that already run on Azure and want full control.

Hetzner Cloud

Hetzner is a German hosting company founded in 1997; Hetzner Cloud rents virtual servers, storage and networking by the hour.

A Hetzner Cloud server is a Linux VM picked from shared vCPU lines (cost-optimized CX and CAX, regular CPX) or dedicated vCPU (CCX), with local NVMe disk, a public IP and up to 20 TB of traffic in the EU. You add volumes, private networks, firewalls and load balancers, and run everything yourself through the Console, the Cloud API, the hcloud CLI or Terraform. It is general infrastructure, not an agent sandbox, so this page compares the two where they overlap: giving an agent its own Linux machine.

Certifications
ISO/IEC 27001:2022

Which use cases each one fits

For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “3rd cheapest of 364” means 2 of the other 363 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.

Use case and its workloadAzure Virtual Machines: price rankHetzner Cloud: price rankboat: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
Both give a full VM with root and Docker, but Hetzner has no nested virtualization and Azure has it only on x86 D and F sizes; boat has /dev/kvm, agents and HTTPS URLs on every machine.
83rd of 367, with limits
$730 a month
46th of 367, with limits
$287 a month
3rd cheapest of 367
$634 a month
Always-on AI employees
50 machines 24/7 · 2 vCPU / 4 GB
Either can run an assistant around the clock, but you build the agent setup, HTTPS and backups yourself; boat has them built in.
113th of 366, with limits
$644 a month
94th of 366, with limits
$325 a month
5th cheapest of 366
$657 a month
Code interpreter bursts
100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month
Azure suits short code runs better than Hetzner, because it bills per minute while Hetzner bills every started hour in full.
114th of 345, with limits
$222 a month
156th of 345, with limits
$649 a month
186th of 345, with limits
$2,000 a month
Sandboxes for your users
300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month
Hetzner ranks 46th and Azure 63rd here, and on both you build the sandbox layer (URLs, auth, cleanup) yourself; boat ranks first and gives you that through its API.
63rd of 361, with limits
$500 a month
46th of 361, with limits
$314 a month
Cheapest of 361
$209 a month
RL rollouts
1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month
Azure Spot VMs make large RL fleets cheap if rollouts can survive eviction with 30 seconds of notice; Hetzner has no spot or per-minute billing.
19th of 360, with limits
$1,039 a month
104th of 360, with limits
$6,490 a month
34th of 360, with limits
$2,000 a month
Agent evals
250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month
Azure fits eval batches very well thanks to per-minute billing and a huge size range; Hetzner fits too, but each short run is billed a full hour.
3rd cheapest of 364
$173 a month
51st cheapest of 364
$1,010 a month
10th cheapest of 364
$200 a month
CI runners
40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month
35th cheapest of 377
$335 a month
83rd cheapest of 377
$788 a month
4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
Both fit a 24/7 dev box: a Hetzner server is a classic always-on machine with a monthly cap, and boat keeps the disk with snapshots every minute.
72nd cheapest of 368
$94 a month
32nd cheapest of 368
$42 a month
18th cheapest of 368
$26 a month
Computer-use agents
50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month
Neither Azure nor Hetzner has a desktop stream or computer-use API; on boat a 60fps desktop and Chromium come with every machine.
100th of 369, with limits
$192 a month
134th of 369, with limits
$320 a month
6th cheapest of 369
$200 a month
Browser-use agents
50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month
168th of 367, with limits
$107 a month
227th of 367, with limits
$312 a month
7th cheapest of 367
$200 a month
Scraping & bots (startup scale)
50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month
194th of 346, with limits
$116 a month
157th of 346, with limits
$62 a month
6th cheapest of 346
$90 a month
Mass scraping & bots (undetectable)
1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month
81st of 338, with limits
$2,044 a month
45th of 338, with limits
$1,248 a month
71st of 338, with limits
$1,800 a month
Parallel red teaming
200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month
110th of 360, with limits
$46 a month
114th of 360, with limits
$52 a month
2nd cheapest of 360
$200 a month
GPU eval jobs
10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month
Can't run itCan't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Can't run itCan't run itCan't run it

Key features

FeatureAzure Virtual MachinesHetzner Cloudboat
IsolationFull Hyper-V VM with its own kernelFull VM with its own kernelFull VM with its own kernel
CPU speed (Node.js build-and-test, 4 vCPU / 8 GB)Not measured in the public benchmark8.88 runs/s on a shared CX33; CPX and CCX not measured26.69 runs/s on dedicated AMD Ryzen 9 9950X (Zen 5) hosts
Docker and nested virtualizationRoot and Docker on any size; nested virtualization on Intel and AMD D and F sizes, not on Arm or B-seriesRoot and Docker; nested virtualization is "not possible on cloud server"Docker, root, systemd and /dev/kvm on every machine
Billing and stoppingPer full minute; a deallocated VM stops compute billing, but disks and static IPs keep billingEvery started hour, with a monthly cap; a powered-off server bills at the full rate until you delete itPer second from a monthly plan; a stopped sandbox costs nothing and keeps its disk
SnapshotsDisk snapshots you take; scheduled ones need Azure Backup, a separate paid serviceSnapshots you take, or daily backups in 7 slots for 20% of the server priceAutomatic snapshots every minute and on stop
Pause with memoryHibernation saves memory on supported sizes up to 64 GB of RAMDisk snapshots only, no memoryResume reboots from disk (no memory snapshots)
Fork and cloneCapture an image or disk snapshot, then boot new VMs cold; image capture needs the VM stoppedTake a snapshot, then create a new server from it (shutting down first is recommended)Fork a running sandbox in one call
Reaching the machinePublic IPv4 and any port through security groups; HTTPS is yours to run, or add a gatewayPublic IPv4 and IPv6 on any port; HTTPS needs your own certificates or a paid load balancerHTTPS URLs for up to 50 ports, token-protected; raw TCP; own IP
Outbound rulesSecurity group rules by IP, and domain allowlists with the paid Azure FirewallFree Cloud Firewalls with outbound rules by IP, port and protocolOpen internet on every plan; no provider-side allowlist
Desktop and computer useNone built in; you install a VNC or RDP serverNone built in; a VNC console for admin, and you install a desktop yourself60fps desktop and Chromium, computer use and browser control, embeddable stream
Coding agents and keysNo agents built in; Key Vault fetches secrets into the VM, where code can read themNo agents built in; secrets go on the server through cloud-init, files or env varsClaude Code, Codex, OpenCode and more with a prompt, steer and events API; AI credentials proxy keeps keys out of the machine
Machines, GPUs and operating systemsLinux and Windows on Intel, AMD and Arm; GPU families such as NC with Nvidia H100 and A100Linux on shared or dedicated vCPU, up to 48 vCPU / 192 GB (CCX63); no GPUsLinux up to 16 vCPU / 32 GB on dedicated AMD Ryzen 9 9950X hosts; no GPUs
Regions77 regions worldwide, available or coming soon, including many in the EUGermany and Finland, plus Ashburn, Hillsboro and SingaporeEU only: Germany, Finland, France
Every feature Battleships tracks (43)
FeatureAzure Virtual MachinesHetzner Cloudboat
Full VM (own kernel)YesYesYes
Docker insideYesYesYes
Nested virtualizationYesNoYes
RootYesYesYes
SystemdYesYesYes
Desktop GUINoNoYes
BrowserNoNoYes
Computer-use APINoNoYes
SSHYesYesYes
Persistent diskYesYesYes
Pause/resumeYesYesYes
Automatic snapshotsNoNoYes
Fork/cloneYesYesYes
Live fork (no pause)NoYesYes
Memory forkNoNoNo
Custom image (Docker or snapshot)YesYesYes
≥24 h sessionsYesYesYes
Idle auto-stopNoNoNo
Wake on requestNoNoNo
HTTPS preview URLsNoNoYes
Raw TCP inboundYesYesYes
Public IPv4YesYesNo
Egress allowlistYesYesNo
Secret proxyNoNoYes
Secret proxy for any APINoNoYes
Preinstalled agentsNoNoYes
Agent harness APINoNoYes
MCP serverYesNoNo
GPUYesNoNo
WindowsYesNoNo
Arm64YesYesNo
Self-hostingNoNoNo
BYOCNoNoNo
Open sourceNoNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsNoNoYes
Usage per sandbox (API)YesNoYes
Audit logsYesNot publishedNo
SSOYesNoNo
SOC 2YesNoNo
HIPAAYesNoNo
EU data residencyYesYesYes
Zero data retentionNot publishedNot publishedYes

Performance

Azure Virtual MachinesNot measured
Hetzner Cloud8.88 runs/s
boat26.69 runs/s

There is no comparable measurement for Azure Virtual Machines: the public benchmark we use did not include it. Hetzner's only number comes from a shared CX33 that ran boat's temporary fallback capacity on 2026-08-24, at 8.88 Node.js build-and-test runs per second. boat did 26.69 runs per second at 4 vCPU / 8 GB on 2026-09-29, about three times the CX33.

Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Hetzner Cloud measured on: Shared vCPU, Cost-Optimized (CX, Intel/AMD), EU. Azure Virtual Machines has no published run in this suite yet, so there is no like-for-like number to compare.

Pricing in five scenarios

Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.

ScenarioAzure Virtual Machines, a monthHetzner Cloud, a monthboat, a month
One coding agent, workdays
4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days
$26 · Pay-as-you-go subscription (no plan fee)$3 · Pay-as-you-go (postpaid) · with limits$20 · $20/mo
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$48 · Pay-as-you-go subscription (no plan fee) · with limits$10 · Pay-as-you-go (postpaid) · with limits$26 · $20/mo
50 agents in parallel
50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside
$1,168 · Pay-as-you-go subscription (no plan fee)$141 · Pay-as-you-go (postpaid) · with limits$317 · $20/mo × 3 seats
Sandboxes for your users
2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once
$225 · Pay-as-you-go subscription (no plan fee)$312 · Pay-as-you-go (postpaid) · with limits$200 · $100/mo × 2 seats
1,000 short jobs at once
2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month
$483 · Pay-as-you-go subscription (no plan fee) · with limits$2,080 · Pay-as-you-go (postpaid) · with limits$2,000 · $2000/mo · with limits

Azure Virtual Machines: Azure bills each VM per full minute while it runs, with no plan fee; disks, public IPv4 and egress are extra, and disks keep billing while the VM is deallocated. The always-on price here needs a 3-year reservation.

Hetzner Cloud: Hetzner bills every started hour with a monthly cap and keeps billing until you delete the server, even when it is off. The prices here use the cheapest CX servers, which are currently out of stock.

Hetzner Cloud: You pick a monthly plan from $20, and all of it becomes usage credit spent per second on running sandboxes. A stopped sandbox costs nothing and keeps its disk.

Limits in those scenarios

Every Hetzner scenario is priced on the CX line, which hetzner.com marks as currently unavailable, so none fit as priced today; Hetzner also does not publish its server limits and raises them by a request reviewed by hand. Azure limits vCPUs per region and per VM family, stopped VMs still count, and the always-on price only works with a 3-year commitment. For 1,000 short jobs at once, Azure's figure uses B-series burstable VMs that guarantee 30% of each vCPU, while Hetzner bills each 3-minute job as a full hour. On boat the same burst is queued by starts per minute and per day, even on the $2,000 plan.

ScenarioAzure Virtual MachinesHetzner Cloudboat
One coding agent, workdaysNone that bite
  • stock-limited: all CX types "currently unavailable" on hetzner.com (2,026-09-28)
None that bite
One agent that never stops
  • 3-year commitment
  • stock-limited: all CX types "currently unavailable" on hetzner.com (2,026-09-28)
None that bite
50 agents in parallelNone that bite
  • stock-limited: all CX types "currently unavailable" on hetzner.com (2,026-09-28)
None that bite
Sandboxes for your usersNone that bite
  • stock-limited: all CX types "currently unavailable" on hetzner.com (2,026-09-28)
None that bite
1,000 short jobs at once
  • burstable CPU: 30% of each vCPU guaranteed, throttled above that
  • stock-limited: all CX types "currently unavailable" on hetzner.com (2,026-09-28)
  • max 2,400 starts/day (needs ~6,667)
  • max 600 starts/hour (needs ~1,000)
  • bursts above 90 starts/min are queued (a burst of 333 takes ~4 min to start)

Which one should you use?

Use Azure Virtual Machines when

you need GPUs, Windows, Arm, hibernation or a region outside Europe, or your company already runs inside Azure.

  • GPUs, Windows and Arm. Useful if agents train or test models, or need Windows or Arm: Azure rents all of these as plain VMs.
  • Regions almost everywhere. Useful if data must stay in a given country: Azure lists 77 regions worldwide, against six Hetzner Cloud locations.
  • Per-minute billing, Spot and hibernation. Useful for short batches, big jobs that can survive eviction, or machines that must resume with their memory.

Use Hetzner Cloud when

you want plain long-lived Linux servers you run yourself, with a monthly price cap, big dedicated machines and free outbound firewall rules.

  • Simple long-lived servers. Useful for machines that run all month: a monthly price cap and 20 TB of included EU traffic per server keep bills predictable.
  • Free outbound firewall rules. Useful if an agent's machine must reach only a few addresses: Cloud Firewalls are free and drop all other outbound traffic.
  • Big dedicated machines. Useful for heavy single machines: dedicated CCX servers go up to 48 vCPU and 192 GB of memory.

Where boat fits

Azure and Hetzner both rent general servers, and you build everything an agent needs on top. If what you are really running is agents, boat gives each one a full VM that already has /dev/kvm, a desktop, HTTPS URLs, snapshots every minute, forks and coding agents you drive from outside, in the EU.

/dev/kvm on every machine

Hetzner Cloud cannot run VMs inside a server at all. Azure can only on x86 D and F sizes, and the Arm Dplsv6 sizes priced here for one agent and for 50 agents have no nested virtualization.

Free stops, snapshots every minute

A powered-off Hetzner server bills in full until deleted, and a deallocated Azure VM still bills its disks and IPs. The workaround on both is scripting snapshot, delete and recreate, and a crash can lose work since the last manual snapshot.

Agents, a desktop and keys handled for you

Neither has a coding agent API, a desktop stream or a credentials proxy. You install and supervise each agent over SSH, and keys placed by Key Vault or cloud-init sit inside the VM where agent code can read them.

Use boat when the machines are for agents: a full VM with /dev/kvm, a desktop, HTTPS URLs, snapshots every minute, forks of running sandboxes and coding agents built in, with stops that cost nothing. Compare it one to one: boat vs Azure Virtual Machines and boat vs Hetzner Cloud.

Questions people ask

Is Azure cheaper than Hetzner Cloud?

Usually not on paper: one agent on workdays is $3 a month on Hetzner (if you delete the server each night) against $26 on Azure, and 50 agents in parallel are $141 against $1,168. Azure wins for 300 user sandboxes ($225 against $312) and 1,000 short jobs ($483 against $2,080), because Hetzner bills every started hour. All Hetzner prices use the CX line, which is currently out of stock; boat comes to $20, $317, $200 and $2,000 for the same four.

Which is faster, Azure or Hetzner?

Azure Virtual Machines has no comparable measurement in the public benchmark we use. A shared Hetzner CX33 did 8.88 Node.js build-and-test runs per second, and boat did 26.69 at the same 4 vCPU / 8 GB size.

Can Azure and Hetzner run Docker and nested virtualization?

Both run Docker, since each server is a full VM with root. Azure supports nested virtualization on Intel and AMD D and F sizes, not on Arm or B-series; Hetzner says it is not possible on cloud servers. boat documents Docker, systemd and /dev/kvm on every machine.

Do I pay for a stopped server?

On Hetzner, yes: a server bills at the full rate until you delete it. On Azure, a VM stopped from inside the OS keeps billing compute; a deallocated VM stops compute billing, but disks and static IPs still bill. A stopped boat sandbox costs nothing and keeps its files.

Do Azure or Hetzner have GPUs?

Azure has GPU families such as NC with Nvidia H100 and A100, and Windows and Arm sizes too. Hetzner Cloud has no GPU servers, and neither does boat.

Where does my data run?

Azure lists 77 regions worldwide, including many in the EU. Hetzner Cloud runs in Germany and Finland, and also in Ashburn, Hillsboro and Singapore, outside the EU. boat runs only in the EU (Germany, Finland and France), with EU data residency.

Try boat

Install the CLI, then run boat new.

7-day free trial

More comparisons