Our Hetzner CX23 benchmark in short: the 2 vCPU, 4 GB CX23 we rented in Helsinki on 5 November 2026 had fast disks (53,050 random-read IOPS), zero CPU steal and enough RAM for n8n or the full Supabase stack. Its weak spot was the CPU. It reported an Intel Xeon Skylake and scored 913.87 sysbench events/s on one thread, the lowest of the five Hetzner plans we tested that evening.

Why it matters now: after the 2026 price changes the CX23 costs 5.49 euro net per month in the Hetzner Cloud API, still the cheapest 4 GB server Hetzner lists. Whether it is a bargain depends on which CPU you land on.

Most CX23 benchmarks online are single synthetic runs with no context. Below you get the CX23 numbers next to four sibling plans, plus what real apps did on it.

Tested in the Lab Hetzner CX23 (plus CX33, CX43, CAX11, CAX21 for context) · hel1 · Nov 2026

For the whole provider picture, see our Hetzner hub and the full Hetzner review.

The test server

  • Plan: CX23, Helsinki (hel1), shared vCPU, x86
  • CPU reported by lscpu: Intel Xeon Processor (Skylake, IBRS, no TSX), 2 vCPU
  • RAM: 3,819 MiB total, no swap; 444 MiB used on a fresh boot
  • Disk: 38G root filesystem (sold as 40 GB)
  • OS: Ubuntu 24.04.4 LTS, kernel 6.8.0-138-generic
  • Price: 5.49 euro net, 6.64 euro gross for our account, per month (API, 5 November 2026)

MiB is a mebibyte (1,048,576 bytes), about 5 % more than a megabyte. The operating system sees less than the advertised 4 GB because the kernel reserves part of it.

Shared vCPU plans can land on different CPU generations

Hetzner sells the CX line as "Cost-Optimized". Its product page says these plans use "older but reliable processor generations from Ampere, Intel, and AMD", labels CX "Intel/AMD", and recommends them for "workloads that can handle variable CPU performance". In practice that means the CX23 you create can be an Intel or an AMD machine, and you cannot choose.

Public runs show both. A CX23 on VPSBenchmarks from Falkenstein in April 2026 reports the same Skylake string as ours, with a Geekbench 6 single-core score of 710. A CX23 from Nuremberg in February 2026 reports AMD EPYC-Rome with 1,464. Our own CX33 and CX43, created minutes after the CX23, both got EPYC-Rome.

The practical advice: run lscpu | grep "Model name" right after you create a CX23. If it says Skylake and your workload is CPU-heavy, delete it and create another one, or choose the ARM CAX11.

CX23 benchmark results next to four other Hetzner plans

ServerCPU 1 thread
events/s
CPU all threads
events/s
Memory
MiB/s
Disk 4k read
IOPS
Disk 4k write
IOPS
Disk seq. readDownloadCPU stealPrice / mo
Hetzner CX232 vCPU · 4 GB · x86_649141,8234,09853,05047,9962,965 MB/s285 Mbit/s0.0 %6.64 €incl. VAT
Hetzner CX334 vCPU · 8 GB · x86_641,6216,4534,97441,64435,0131,936 MB/s781 Mbit/s0.0 %10.27 €incl. VAT
Hetzner CX438 vCPU · 15 GB · x86_643,47026,6974,96845,00542,1042,338 MB/s835 Mbit/s0.0 %19.35 €incl. VAT
Hetzner CAX112 vCPU · 4 GB · aarch643,2486,5504,17148,55442,0512,370 MB/s567 Mbit/s0.0 %7.25 €incl. VAT
Hetzner CAX214 vCPU · 8 GB · aarch643,30713,2104,26453,79646,0192,490 MB/s381 Mbit/s0.0 %12.69 €incl. VAT

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

CPU

CX23913.9CX331,620.9CX433,470.4CAX113,248.3CAX213,307.3
cpu 1t events s: · x86 ARM

sysbench's CPU test counts prime-number calculations per second. The CX23 did 913.87 events/s on one thread and 1,823.05 with both threads, so the second vCPU almost doubled the result. The CX33 on EPYC-Rome did 1,620.94 on one thread and the ARM CAX11 did 3,248.26. ARM cores do unusually well on this particular test, so do not read the CAX11 figure as "3.5 times faster at everything"; the Ollama results below show a smaller gap. CPU steal, the time the host gave your vCPU to someone else, was 0.0 % over 30 seconds.

Memory

Single-thread memory bandwidth was 4,097.89 MiB/s, close to the CAX11's 4,170.58 and below the AMD plans (4,973.99 on the CX33).

Disk

CX2353,050.0CX3341,644.0CX4345,005.0CAX1148,554.0CAX2153,796.0
disk randread 4k iops: · x86 ARM

IOPS are input/output operations per second. The CX23 did 53,050 random 4k reads and 47,996 random 4k writes per second, both near the top of the group. Sequential 1 MB reads hit 2,965 MB/s, the highest we measured. Sequential writes were the lowest at 1,283 MB/s. For Postgres under n8n, the random numbers matter more, and they are excellent.

Network

A download from Hetzner's Helsinki speed-test server ran at 6,332 Mbit/s, from the CacheFly CDN at 3,854 Mbit/s, and from Hetzner's Falkenstein server at only 285 Mbit/s, the slowest cross-datacenter result of the five plans. Ping to 1.1.1.1 was 1.429 ms. If you back up to Germany from Helsinki, plan for the slower figure.

Real apps on the CX23

Docker and Supabase

Docker installed in 15.1 s. The official Supabase docker compose stack took 110.7 s to pull, the slowest of the five, and 31.5 s to start. After 90 seconds idle, all 11 containers were up with 0 unhealthy; the containers used 1,399 MiB and the whole system 1,594 MiB. That leaves room, but not much: Supabase's own docs give 4 GB RAM and 2 cores as the minimum and recommend 8 GB and 4 cores.

ServerContainersRAM (containers)RAM used (system)Fits?Image pullDisk (images)
Hetzner CX232 vCPU · 4 GB · x86_64111,399 MiB1,594 MiByes111 s9.563GB
Hetzner CX334 vCPU · 8 GB · x86_64111,316 MiB1,732 MiByes50 s9.563GB
Hetzner CX438 vCPU · 15 GB · x86_64111,101 MiB1,870 MiByes29 s9.563GB
Hetzner CAX112 vCPU · 4 GB · aarch64111,562 MiB1,564 MiByes99 s10.14GB
Hetzner CAX214 vCPU · 8 GB · aarch64111,318 MiB1,712 MiByes52 s10.14GB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

Ollama

Tokens/s is how many word pieces a model writes per second. On the CX23, Llama 3.2 1B generated 10.3 tokens/s and read the prompt at 454 tokens/s, using 2,001 MiB of system RAM while loaded. Llama 3.2 3B generated 5.8 tokens/s with 3,002 MiB used and took 8.8 s to load. Llama 3.1 8B did not run: it was OOM-killed after about 50 seconds. Ollama's fit check reported it would leave 1,698 MiB free, then the kernel's out-of-memory killer stopped llama-server. The server has no swap. On the 4 GB CAX11 the same model failed with insufficient memory.

ServerModelGeneration
tokens/s
Prompt
tokens/s
Load timeRAM used (system)Note
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 1B10.3454.03.5 s2,001 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 3B5.8325.28.8 s3,002 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.1 8Bdid not run–––OOM-killed after ~50 s: Ollama fit check reported it would leave 1698 MiB free,
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 1B23.21,322.82.0 s2,205 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 3B13.5776.53.7 s3,068 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.1 8B6.3258.610.0 s5,941 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 1B37.51,910.91.7 s2,293 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 3B21.21,161.33.7 s3,196 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.1 8B9.7447.47.9 s6,023 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 1B15.0835.54.8 s2,203 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 3B6.5376.46.0 s3,214 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.1 8Bdid not run–––llama-server process has terminated: exit status 1: ggml_aligned_malloc: insuffi
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 1B26.81,427.13.2 s2,315 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 3B12.2664.15.2 s3,282 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.1 8B5.7226.512.3 s5,796 MiB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

n8n

Our production n8n runs on a separate CX23 with Ubuntu 26.04. n8n 2.46.6 plus Postgres 16 went from Docker install to a healthy instance in 127 s. At idle n8n used 379.7 MiB, Postgres 69.6 MiB, and the whole server 1,036 MiB, with n8n at 3.16 % CPU. The disk had 4.7G of 38G used after install.

n8n 2.46.6 on Hetzner CX23Measured
Docker install22 s
Image pull + first start to healthy105 s
n8n RAM right after start785.3 MiB
n8n RAM idle (after ~60 s)379.7 MiB
PostgreSQL 16 RAM idle69.6 MiB
Whole server RAM used, idle1036 MiB of 3,814
n8n image size1.94GB
Disk used after install4.7G of 38G

Measured by AI Hosting Lab on 2026-11-05 · docker compose: n8n + postgres:16, docker.io from Ubuntu repo, task runners on · method

On the test CX23 we also ran our n8n load test: a Webhook, Code node and response workflow hit by ApacheBench at 1, 10, 25 and 50 concurrent requests. An execution is one full run of that workflow; p95 is the response time 95 % of requests beat.

ServerConcurrent requestsExecutions/sMedianp95Failedn8n peak RAM
Hetzner CX232 vCPU · 4 GB · x86_64110.1104 ms162 ms0520 MiB
Hetzner CX232 vCPU · 4 GB · x86_641014.8697 ms893 ms0660 MiB
Hetzner CX232 vCPU · 4 GB · x86_642515.01,651 ms1,936 ms0825 MiB
Hetzner CX232 vCPU · 4 GB · x86_645014.23,445 ms3,954 ms01,003 MiB
Hetzner CX334 vCPU · 8 GB · x86_64113.572 ms133 ms0543 MiB
Hetzner CX334 vCPU · 8 GB · x86_641031.9311 ms438 ms0574 MiB
Hetzner CX334 vCPU · 8 GB · x86_642529.5841 ms986 ms0803 MiB
Hetzner CX334 vCPU · 8 GB · x86_645030.11,647 ms1,846 ms01,050 MiB
Hetzner CX438 vCPU · 15 GB · x86_64114.678 ms123 ms0546 MiB
Hetzner CX438 vCPU · 15 GB · x86_641036.1280 ms341 ms0544 MiB
Hetzner CX438 vCPU · 15 GB · x86_642535.0714 ms800 ms0694 MiB
Hetzner CX438 vCPU · 15 GB · x86_645032.41,539 ms1,682 ms01,016 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64110.3113 ms156 ms0585 MiB
Hetzner CAX112 vCPU · 4 GB · aarch641013.9755 ms934 ms0640 MiB
Hetzner CAX112 vCPU · 4 GB · aarch642512.91,909 ms2,279 ms0729 MiB
Hetzner CAX112 vCPU · 4 GB · aarch645013.23,786 ms4,114 ms01,038 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64112.0107 ms128 ms0539 MiB
Hetzner CAX214 vCPU · 8 GB · aarch641025.4402 ms528 ms0579 MiB
Hetzner CAX214 vCPU · 8 GB · aarch642525.8965 ms1,106 ms0824 MiB
Hetzner CAX214 vCPU · 8 GB · aarch645024.52,019 ms2,197 ms0859 MiB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

The CX23 did 10.11 executions/s with one request at a time (104 ms median), rose to 15.04 at 25 concurrent, and held 14.25 at 50, with 0 failed requests in every run. At 50 concurrent the median response was 3,445 ms and p95 3,954 ms: it queues, it does not crash. n8n peaked at 1,003.0 MiB of RAM. The CX33 handled roughly twice the load (31.93 executions/s at 10 concurrent), and the ARM CAX11 slightly less than the CX23 (13.9 at best), despite its much higher sysbench score.

Cost per result

Dividing our measured numbers by the API net prices of 5 November 2026:

PlanNet €/monthLlama 3.2 3B tokens/sTokens/s per euro
CX235.495.81.06
CAX115.996.51.09
CX338.4913.51.59
CAX2110.4912.21.16
CX4315.9921.21.33

For local models the CX23 is the worst value of the five and the CX33 the best. For n8n, the CX23 gives 2.74 peak executions/s per euro (15.04 / 5.49), against 3.76 on the CX33 (31.93 / 8.49) and 2.32 on the CAX11 (13.9 / 5.99). If you expect bursts of traffic, the CX33 is better value; for a light workflow load the CX23 is the cheapest server that does the job. All prices exclude the 0.50 euro net primary IPv4.

Run the same benchmark yourself

These lines come straight from our lab/bench.sh. Run them as root on a fresh Ubuntu server.

apt-get -y -qq install sysbench fio jq apache2-utils git
sysbench cpu --threads=1 --time=20 run
sysbench cpu --threads=$(nproc) --time=20 run
vmstat 1 31
sysbench memory --memory-total-size=10G --threads=1 run
fio --name=t --filename=/root/fio.tmp --size=2G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=32 \
    --runtime=30 --time_based --group_reporting --output-format=json
curl -s -o /dev/null --max-time 40 -w "%{speed_download}" https://fsn1-speed.hetzner.com/1GB.bin

curl prints bytes per second; multiply by 8 and divide by 1,000,000 for Mbit/s. If you harden SSH before benchmarking on Ubuntu 24.04 or newer, note that sshd runs via ssh.socket: systemctl reload ssh fails with "ssh.service is not active", but new connections already use the new config. Our steps are in secure an Ubuntu VPS.

Verdict on the CX23

Buy the CX23 for n8n, bots and small web apps. It handled up to 15.04 webhook executions/s without a failure, more than the CAX11, and its disk is excellent. Skip it for local LLMs, or check the CPU first: a Skylake CX23 was the slowest CPU in our test. If you want the same 4 GB for 0.50 euro more with a faster CPU on our numbers, compare it with the CAX11 in Hetzner CX vs CAX.

Next step: see how the CX23 fits into the whole lineup in our Hetzner review.

Hetzner prices on this page include 21% VAT, as charged to our Czech (EU consumer) account by the Hetzner API on 2026-11-05. Without VAT (businesses, most buyers outside the EU): CX23 5.49 €, CX33 8.49 €, CX43 15.99 €, CAX11 5.99 €, CAX21 10.49 € per month.

FAQ

How fast is the Hetzner CX23 CPU?

It depends on the host. Ours reported an Intel Xeon (Skylake) and did 913.87 sysbench events/s on one thread and 1,823.05 on both threads. A CX33 on AMD EPYC-Rome did 1,620.94 on one thread in the same test.

Can a Hetzner CX23 run n8n?

Yes. Our production n8n 2.46.6 with Postgres 16 runs on a CX23 and the whole server used 1,036 MiB of RAM at idle, out of 3,819 MiB available.

Can a CX23 run a local LLM with Ollama?

Small ones. Llama 3.2 1B generated 10.3 tokens/s and Llama 3.2 3B 5.8 tokens/s on our CX23. Llama 3.1 8B was OOM-killed on our CX23, which has no swap.

How much does a Hetzner CX23 cost?

On 5 November 2026 the Hetzner Cloud API listed it at 5.49 euro net (6.64 euro gross for our account) per month, plus 0.50 euro net for a primary IPv4 address.

Sources

  1. Hetzner, Cost-Optimized cloud servers (product page, opened 2026-11-05)
  2. Hetzner Docs, Primary IPs overview (2026)
  3. VPSBenchmarks, Hetzner CX23 YABS run, Falkenstein, Intel Skylake (April 2026)
  4. VPSBenchmarks, Hetzner CX23 YABS run, Nuremberg, AMD EPYC-Rome (February 2026)
  5. Better Stack, Hetzner Cloud Review 2026 (2026)
  6. Supabase Docs, Self-Hosting with Docker (2026)