Honest tradeoffs. Real numbers. We'll tell you when to self-host and when to pay $9.
Self-host coturn if you have strict data-locality requirements, plan to push more than ~10 TB/month of relayed traffic, or simply enjoy operating infrastructure. Use ExpressTURN if you'd rather ship your product. The break-even point is roughly 5–10 TB/month of relayed bandwidth and a few hours of saved ops time.
| Dimension | Self-Hosted coturn | ExpressTURN |
|---|---|---|
| Software cost | $0 (open-source) | $9/month for 5 TB, $0 for 1 TB free |
| VPS cost (single region) | $5–20/month + bandwidth overage | included |
| Bandwidth | ~$0.005–0.01/GB at budget VPS providers; ~$0.09/GB on AWS/GCP egress | $0.0018/GB amortized at $9/5TB |
| Initial setup time | 4–8 hours; days for multi-region | ~5 minutes |
| Ongoing ops (TLS renew, OS patches, capacity) | 2–4 hours/month if nothing breaks | none |
| Global coverage | one region per VPS you provision | 20+ regions out of the box |
| DDoS / abuse handling | your problem | handled upstream |
| Data locality | total control | shared third-party relay (DTLS-SRTP encrypted; opaque to relay) |
| SLA | whatever your VPS provider offers | no formal SLA at $9 — but production traffic since 2018 |
A common low-end starter setup: one $5/month Hetzner / OVH / DigitalOcean VPS with a generous bandwidth allowance (1–20 TB depending on provider), running coturn on Ubuntu. That's $5/month plus your time.
At a relayed traffic level of 1 TB/month — well within ExpressTURN's free tier — self-hosting is ~$5/month plus the engineering hours. ExpressTURN's free plan is $0. Self-hosting only wins on cost once you outgrow the free tier and don't want to pay $9 for premium.
At AWS/GCP/Azure egress prices (~$0.09/GB), coturn becomes wildly more expensive than ExpressTURN. 1 TB on AWS is ~$90/month in egress before you've added the EC2 cost.
A surprisingly common pattern: list ExpressTURN and your own coturn instance in the client's iceServers. ICE will pick the best path. You get redundancy and cheap fallback in one move.
iceServers: [
{ urls: 'stun:stun.expressturn.com:3478' },
{ urls: ['turn:relay1.expressturn.com:3478?transport=udp', 'turns:relay1.expressturn.com:443?transport=tcp'],
username: 'EXPRESS_USER', credential: 'EXPRESS_CRED' },
{ urls: ['turn:turn.your-domain.com:3478?transport=udp'],
username: 'OWN_USER', credential: 'OWN_CRED' }
]
Is coturn free?
The software is free; running it is not. You pay for VPS, bandwidth, and your time.
How long does coturn setup take?
4–8 hours for a single-region first install with TLS, firewall, and validation. Multi-region is a multi-day project.
Does ExpressTURN run coturn under the hood?
ExpressTURN runs a hardened, multi-region TURN deployment. The wire protocol is standard RFC 5766/8656 — your client code doesn't care.
When should I pick self-hosted coturn?
Strict data-locality, very high relayed traffic, on-prem deployment, or you actively enjoy infra work.
Skip the VPS, ship the product.
Sign Up — Free 1 TB/monthRelated: vs Twilio Network Traversal · Migrating from coturn