Blog: Agora.io Alternative: Custom WebRTC Development

Key takeaways

The real Agora alternatives are self-hosted WebRTC engines, not another CPaaS. LiveKit, mediasoup, Jitsi, and Janus now ship the features that used to justify a per-minute markup.

Agora HD video is $3.99 per 1,000 minutes in 2026, not the cent-level rate most people assume. Above ~15M minutes/month, self-hosting runs 5–19× cheaper once hardware, bandwidth, and on-call are counted honestly.

LiveKit is the 2026 default. Apache 2.0, a Go SFU on Pion, built-in simulcast/SVC, server-side egress, AI-agent primitives, and it is the stack OpenAI runs for ChatGPT Advanced Voice.

mediasoup wins on CPU-per-participant and raw control; Jitsi is the fastest drop-in group-video app; Janus is the answer for SIP and streaming hybrids.

Compliance gets easier, not harder. HIPAA, GDPR data residency, and SOC 2 are simpler to satisfy when no third party ever touches your media.

Why Fora Soft wrote this playbook

Most “Agora alternatives” lists are written by the next vendor in line, and they all end with “so use us instead.” This one does not. We are Fora Soft, a software company that has shipped 625+ products since 2005 and built WebRTC systems since 2011 — before Agora existed, and long before LiveKit or mediasoup were stable. We do not sell a CPaaS, so we have no reason to steer you toward one.

Our portfolio includes BrainCert, an EdTech platform running hundreds of millions of learning minutes on a mediasoup stack we helped design; a multi-party video courtroom for the Republic of Kazakhstan; a live-shopping platform serving twelve countries; and a decade of telehealth products built under HIPAA. Across all of them we keep answering the same question: “Agora works, but our margin is disappearing. What now?” This article is that answer, rebuilt for 2026 stacks and pricing.

Burning money on Agora?

We have moved teams off Agora onto self-hosted LiveKit and mediasoup in 8–14 weeks, with typical cost cuts of 60–95% at scale and better call-quality telemetry than the PaaS dashboard gave them.

Book a 30-min call → WhatsApp → Email us →

Why teams leave Agora.io in 2026

Agora is a capable product. Teams look for Agora alternatives for four recurring reasons, in roughly this order of frequency.

Per-minute cost at scale

Here is the number that surprises people. Agora’s 2026 pay-as-you-go list price is $3.99 per 1,000 minutes for HD video, $8.99 for Full HD, and $0.99 for audio or interactive live streaming (agora.io/pricing). Once a platform crosses roughly 5–10 million monthly HD-video minutes, that bill starts to eat gross margin alive. Unmetered bandwidth on a Hetzner or OVH dedicated host costs a small fraction of the equivalent minute tier.

Lock-in and SDK drift

Agora’s SDKs are not binary-compatible with standard WebRTC. Swapping or mixing stacks means a rewrite. Self-hosted engines run on vanilla libwebrtc, so a team that codes against the W3C WebRTC spec can change engines without touching client code beyond the signalling seam.

Data residency and compliance

Agora’s global relay can route media through points of presence you do not control unless you explicitly lock regions down. For EU, US-government, and healthcare workloads that is a dealbreaker. Self-hosting in the region you need closes the gap on day one.

Missing features

Server-side composition, custom recording pipelines, AI insertion into the media path, SIP bridges — the moment you need something Agora does not expose as a clean API, you are fighting the platform. Self-hosted stacks put that machinery in your hands.

Bar chart: Agora Full HD, HD and audio tiers vs self-hosted cost at 18M minutes per month

Figure 1. The same 18M-minute workload priced four ways. Agora’s HD-video tier alone is roughly 19× the all-in self-hosted cost.

Reach for an Agora alternative when: monthly minutes clear ~10M, or compliance forbids third-country routing, or you need a feature Agora will not expose — custom recording, server-side composition, AI in the media path.

CPaaS vs self-hosted — the honest trade-off

Before you pick an alternative, be clear about what you gain and what you give up. This is the part vendor blogs skip.

CPaaS wins on: time-to-market (one SDK call and you are live), global coverage out of the box, zero DevOps burden, automatic TURN and bandwidth, 24/7 support, contractual SLAs. It is the right call for MVPs, unpredictable traffic, and teams with no WebRTC expertise on staff.

Self-hosted wins on: marginal cost at scale, data residency, custom features (server-side recording, live transcription, real-time moderation), SDK freedom, and vendor independence. It is the right call for platforms with predictable or high volume, regulated industries, and teams with in-house or partnered DevOps.

The switch point is economic. Below 5M minutes a month, the engineer-hours to run your own stack usually cost more than the CPaaS bill. Above 15M, it is rarely close. The 5–15M band is where the decision deserves real spreadsheet work, which is exactly what the LiveKit vs Agora cost analysis digs into for one engine.

Alternative 1 — LiveKit (the 2026 default)

LiveKit is an open-source WebRTC platform written in Go, built on the Pion stack, Apache 2.0-licensed, first released in 2021. It ships a hosted Cloud and a fully self-hostable server that share one SDK surface, so the same client code runs against both.

Why it is the 2026 default

LiveKit bundles the features that used to be months of custom work: server-side egress (RTMP, HLS, MP4), automatic simulcast and SVC, adaptive stream selection, participant permissions, ingress from RTMP and WHIP, and client SDKs for Web, iOS, Android, Flutter, React Native, and Unity. Its 2024–2025 releases added an open-source agents framework that wraps the OpenAI Realtime API, so a LiveKit deployment is already a strong host for voicebots. The LiveKit docs cover the whole surface.

Who runs it

The strongest proof point: OpenAI runs ChatGPT’s Advanced Voice on LiveKit, serving millions of voice conversations a day (TechCrunch, April 2025). If it holds up ChatGPT voice, it will hold up your product. Self-hosted deployments span universities, healthcare platforms, and live-shopping apps.

Cost shape

LiveKit Cloud is priced per participant-minute, materially cheaper than Agora HD but still a metered bill. Self-hosted LiveKit on commodity Hetzner dedicated servers lands in cents per 1,000 minutes once hardware, bandwidth, and ops are amortised — the source of the double-digit multiples in Figure 1. We break the full LiveKit agent stack down in our multimodal AI agents guide.

Reach for LiveKit when: you want a modern, actively maintained SFU with first-class client SDKs and AI-agent primitives, and the option to start on LiveKit Cloud, then migrate to self-hosted later against the same API.

Alternative 2 — mediasoup (maximum control, minimum CPU)

mediasoup is a C++ SFU with a Node.js control plane, built by Iñaki Baz Castillo since 2015 and ISC-licensed. It is the quietest, leanest engine in the market: a single mediasoup worker handles roughly 500–1,000 consumers on modern hardware. The v3 documentation is unusually precise about it.

Why pick it

mediasoup hands you bare-metal primitives: you describe transports, producers, and consumers, then wire them into your own business logic. Nothing is hidden and nothing is opinionated. For a team that has already built a signalling server and wants the lightest possible media engine under it, mediasoup is hard to beat.

Who runs it

BrainCert, our EdTech client, runs a large mediasoup fleet. So does a long tail of e-learning and video-dating apps. The ecosystem is smaller than LiveKit’s, but the engineering maturity runs deep.

Reach for mediasoup when: you have a backend team comfortable in Node.js, want full control over the signalling layer, and CPU-per-participant matters — very large rooms or a tight hardware budget.

Alternative 3 — Jitsi Videobridge (drop-in group video)

Jitsi Videobridge (JVB) is the oldest open-source SFU still in active development. Written in Kotlin and Java, Apache 2.0-licensed, it has been developed by 8x8 since the company acquired Jitsi in 2015. It powers meet.jit.si and thousands of self-hosted deployments.

Why pick it

Jitsi is the fastest way to stand up a working group-video product if your needs match its defaults. A docker-compose up against the Jitsi Meet repo gives you a functional platform in an afternoon. A single JVB instance handles roughly 100–300 participants, and it scales horizontally with the Octo relay plus a JICOFO signalling component.

Limits

Jitsi’s UI is opinionated; deep customisation means forking Jitsi Meet (React) and its Prosody/JICOFO signalling. Mobile SDKs exist but trail LiveKit’s polish. Server-side recording (Jibri) needs extra nodes running headless Chromium.

Reach for Jitsi when: you need a proven group-video app with minimal engineering investment and can live within its UX opinions, or you are wrapping a web-first experience inside an enterprise portal.

Alternative 4 — Janus Gateway (Swiss-army SFU)

Janus is a general-purpose WebRTC server from Meetecho, written in C. Rather than an SFU that happens to stream, it is a plugin host — VideoRoom, Streaming, SIP, NoSIP, AudioBridge, TextRoom — you assemble to fit unusual topologies.

Why pick it. If your product mixes WebRTC with SIP trunks, IP-camera streaming, or broadcast ingest, Janus is often the shortest path. Its plugin model is stable and well-documented.

Limits. Janus sits lower than LiveKit or Jitsi. You write more signalling code, the community is smaller, and help on obscure plugin combinations is thin. It is GPLv3, with a commercial license available from Meetecho.

Reach for Janus when: your product is not a pure conferencing app — IP-camera viewer, SIP bridge, IoT command-and-control, broadcast ingestion — and you need a plugin-oriented media hub.

SFU vs MCU vs P2P — how to pick the topology

Before you pick an engine, pick a topology. Three options, all well understood, and the choice sets your server bill.

Diagram comparing P2P mesh, SFU forwarding, and MCU mixing for a 4-person WebRTC call

Figure 2. P2P mesh, SFU forwarding, and MCU mixing. Almost every Agora replacement is an SFU.

P2P (peer-to-peer). Each participant streams directly to each other. Zero server media cost, but uplink bandwidth explodes above 3–4 participants. Use it only for 1:1 or 1:2 calls.

SFU (Selective Forwarding Unit). Each participant uploads once; the server forwards to everyone else, downshifting layers with simulcast or SVC. This is the standard for modern group video. Server cost scales with bandwidth, not CPU.

MCU (Multipoint Control Unit). The server decodes every stream, composites them into one mixed frame, and sends that back. Heavy CPU, but receivers handle a single downstream. Use it only for weak devices, bandwidth-constrained broadcast, or server-side composition for recording.

Need a second opinion on SFU vs MCU?

Share your room sizes, target devices, and markets. We will recommend the topology and engine that fit — usually inside one call.

Book a 30-min call → WhatsApp → Email us →

The cost model — Agora vs self-hosted, worked example

Numbers that land on invoices, not marketing rounding. Assume 1,000 concurrent peak users, 4-person rooms, a 90-minute average session, and 20 session-starts per user per month — about 18M participant-minutes a month.

Agora, HD video. 18,000 × $3.99 = $71,820/month for video alone. At Full HD ($8.99) it is $161,820. Even an audio-heavy app on the $0.99 tier pays $17,820. Add cloud recording and egress and every tier climbs further.

Self-hosted LiveKit or mediasoup. Four Hetzner AX102-class dedicated servers (Ryzen 9, 128 GB, 1 Gbps unmetered) run about $1,200/month. Add TURN bandwidth overage ($200–500), plus one SRE at ~20% allocation (~$2,000). Total lands near $3,500–4,000/month — roughly 5× cheaper than Agora’s cheapest audio tier and ~19× cheaper than HD video.

The break-even sits well below 18M minutes. Rule of thumb: under 5M minutes a month, a PaaS is usually cheaper on total cost of ownership; 5–15M, it depends on your team; above 15M, self-hosted wins unless the PaaS is solving compliance or exotic geography for you for free.

Comparison matrix — the five realistic 2026 options

Option License Best for Cost shape Effort Break-even
Agora.io (baseline) Commercial SaaS MVPs, 1–5M min/mo $/minute (HD $3.99/1k) Low (SDK only)
LiveKit (self-hosted) Apache 2.0 Modern default, AI agents $/server + bandwidth Medium ~10M min/mo
LiveKit Cloud Commercial SaaS Start cloud, migrate later $/minute (below Agora HD) Low From day one
mediasoup ISC Max control, large rooms $/server + bandwidth Medium-High ~15M min/mo
Jitsi Videobridge Apache 2.0 Drop-in group video $/server + bandwidth Low-Medium ~5M min/mo
Janus Gateway GPLv3 (commercial avail.) SIP, streaming, hybrids $/server + bandwidth High Workload-dependent

Want the head-to-head that goes deeper than a matrix? Our Learn team maintains a full SFU comparison of mediasoup, Janus, LiveKit, Jitsi and Pion with benchmark methodology.

A decision framework — pick the alternative in five questions

Decision tree choosing between LiveKit Cloud, self-hosted LiveKit, mediasoup, Jitsi and Janus

Figure 3. Four branch points route you from the cheapest path to the most control.

Q1 — Minutes per month. Under 5M and no compliance pressure? Stay on Agora or move to LiveKit Cloud. 5–15M, run the spreadsheet. Above 15M, self-host.

Q2 — Compliance and data residency. If HIPAA, GDPR residency, or US-government rules apply, self-host in the right region on day one.

Q3 — Custom features. Server-side recording to S3, live transcription, AI voice agents, RTMP ingest, SIP bridge? LiveKit (agents, egress), mediasoup (custom pipelines), or Janus (SIP, streaming) each bring different primitives.

Q4 — In-house expertise. No WebRTC experience? Start on LiveKit Cloud. Some Node.js or Go on staff? Self-hosted LiveKit or mediasoup. Already running Jitsi? Stay on Jitsi.

Q5 — Time budget. Shipping in two weeks? LiveKit Cloud or Jitsi Docker. 8–14 weeks? Self-hosted LiveKit or mediasoup with a migration plan. Under four weeks for self-hosted? Run a careful proof of concept before you commit.

Mini case — EdTech platform, Agora to mediasoup migration

A Series-B EdTech client was spending about $34,000/month on Agora at roughly 32M minutes, and gross margin on their $29/mo student plan had slipped under 40%. We proposed a 12-week migration to self-hosted mediasoup on Hetzner, with LiveKit Cloud as a fallback during cutover.

Fourteen-week Agora to self-hosted migration roadmap across five phases from signalling to cutover

Figure 4. The phased plan we actually ran. Dual-running Agora and mediasoup kept risk near zero.

Weeks 1–3 built the signalling and control plane: room lifecycle, permissions, reconnection. Weeks 4–7 covered media, simulcast, recording to S3, and a TURN cluster in three regions. Weeks 8–10 swapped the client SDKs (iOS, Android, Web) behind a feature flag. Week 11 rolled out 5% → 25% → 100% of rooms. Week 12 decommissioned Agora.

By week 14 the monthly media bill went from $34,000 to $4,200 (hardware, bandwidth, one SRE amortised); p50 join latency dropped from 820 ms to 540 ms; server-side recording arrived and killed another $3,100/month of Agora recording fees; and the one-time migration cost of $180,000 paid back in 5.8 months. Want a similar assessment for your stack? Book a 30-min migration review.

Security, compliance, and end-to-end encryption

Self-hosted SFUs solve compliance in ways a shared PaaS cannot.

HIPAA. Run the SFU, TURN, and signalling in a HIPAA-eligible VPC (AWS, GCP, Azure) with a BAA on the hyperscaler; no third-party CPaaS ever touches PHI. LiveKit, mediasoup, and Jitsi all work here.

GDPR and data residency. Keep media inside the EU by deploying SFUs only in EU regions and using geo-DNS to steer users to the nearest cluster. A global CPaaS cannot easily guarantee that media never transits a non-EU point of presence.

End-to-end encryption. WebRTC’s Insertable Streams (Encoded Transform) API enables E2EE on top of an SFU: the server forwards frames it cannot decode. LiveKit ships E2EE across Web, iOS, and Android; Jitsi supports it in Chromium browsers; mediasoup and Janus support it via custom frame transformers.

SOC 2 and ISO 27001. Easier when you own the stack: you attest to your own controls instead of vouching for a vendor’s, and you inherit the hyperscaler’s compliance evidence for the underlying infrastructure.

2026 tooling stack for a self-hosted WebRTC platform

  • Media engine: LiveKit (default), mediasoup (large rooms), Jitsi Videobridge (drop-in), Janus (hybrid topologies).
  • TURN: coturn (battle-tested default), eturnal (Erlang, lightweight), or LiveKit’s bundled TURN.
  • Signalling: LiveKit’s built-in, or a Socket.IO/WebSocket layer you own for mediasoup and Janus.
  • Recording and egress: LiveKit Egress (Go, headless Chromium), Jibri (Jitsi), or custom FFmpeg pipelines.
  • Monitoring: Prometheus and Grafana for SFU metrics, Loki for logs, Sentry for client errors, plus RTCStats for end-to-end call-quality analytics.
  • Load testing: LiveKit’s livekit-load-tester, KITE, or custom Playwright swarms.
  • Deployment: Kubernetes with Helm charts (LiveKit and Jitsi both ship official charts), or bare-metal Ansible when you need every last millisecond.

Five pitfalls that sink Agora migrations

1. Underestimating TURN bandwidth. TURN relays all media for restrictive networks (corporate VPNs, mobile carriers). In some regions 40%+ of sessions run through TURN. Budget the bandwidth up front.

2. Ignoring simulcast and SVC. Without layered streaming, one weak device drags the whole room down. Simulcast is table stakes in 2026; AV1 SVC is close behind.

3. No observability. Agora hides call-quality telemetry behind its dashboard. After migration, many teams go blind. Stand up RTCStats or equivalent on day one.

4. Flaky reconnection. WebRTC reconnects poorly when networks flap. Implement ICE restart and fast session resumption explicitly; do not trust the defaults.

5. Big-bang cutover. Always dual-run the old and new stacks, gate by room or user cohort, and watch quality KPIs before you switch anything off.

KPIs: what to measure once you cut over

Quality KPIs. Median join latency (target < 700 ms), p95 audio MOS (target > 4.0), video freeze rate per minute (target < 0.5), reconnect success rate (target > 99%), SFU packet loss (target < 1%).

Business KPIs. Cost per 1,000 minutes before and after (target 5× or better above 10M minutes/month), gross-margin lift on the product plan (typically 5–15 points), and feature velocity — the recording, transcription, and AI features that were blocked on Agora.

Reliability KPIs. SFU uptime (target > 99.95% excluding hyperscaler incidents), TURN uptime, p95 room-creation latency, and median time to recover from a bridge failure (target < 30 seconds with warm standbys).

When to stay on Agora

Self-hosting is not always the answer. Three situations where Agora still wins, and we will tell a client so.

Sub-5M minutes/month with no compliance pressure. The engineer-hours to run a self-hosted stack outweigh the bill. Stay on Agora.

Global emerging-market reach without in-house ops. Agora’s point-of-presence footprint in China, Southeast Asia, and parts of Africa is genuinely hard to replicate. If those regions are 30%+ of your traffic, the infrastructure tax can pay for itself.

Extremely bursty traffic. Live-event apps that idle at zero and spike to tens of thousands for 30 minutes struggle to justify always-on hardware. PaaS autoscaling is still king there.

FAQ

What is the best open-source Agora alternative in 2026?

For most teams it is LiveKit (Apache 2.0): a modern Go SFU with first-class client SDKs, server-side egress, and AI-agent primitives, and it is the stack OpenAI runs for ChatGPT Advanced Voice. mediasoup is the pick when CPU-per-participant and raw control matter, Jitsi when you want a drop-in app, and Janus for SIP or streaming hybrids.

How much cheaper than Agora is self-hosted WebRTC?

At 18M monthly minutes, Agora’s HD-video tier costs about $71,820/month ($3.99 per 1,000 minutes), while an all-in self-hosted fleet runs roughly $3,500–4,000/month — around 19× cheaper on video, or ~5× cheaper even against Agora’s cheapest $0.99 audio tier. The savings shrink below 5M minutes, where a PaaS usually wins on total cost.

How long does a typical Agora to self-hosted migration take?

8–14 weeks for a mature product with Web, iOS, and Android clients. The control plane and signalling are 3–4 weeks; each client SDK swap is 2–3 weeks with overlap; staged rollout and dual-running fill the rest. Greenfield projects run faster (6–10 weeks) because there is no migration gate.

Is LiveKit Cloud a drop-in Agora replacement?

Close, but not identical. The client APIs differ, so a rewrite is still required. What LiveKit Cloud gives you is SDK continuity between Cloud and self-hosted — the same code runs against both, so you can move to your own servers when the cost math flips without a second rewrite.

What about Twilio, Vonage, and Dolby.io?

All share Agora’s metered pricing shape. Twilio announced a Programmable Video end-of-life in 2024, then reversed it in October 2024 — the product is still sold and supported — but the self-hosted cost math applies to all of them. If you are on Twilio specifically, see our Twilio Video migration guide.

Does self-hosted WebRTC support end-to-end encryption?

Yes, through the Insertable Streams API. LiveKit has first-class E2EE across Web, iOS, and Android; Jitsi supports it in Chromium browsers; mediasoup and Janus support it via custom frame transformers. The SFU forwards encrypted frames it cannot decode, so media stays confidential end to end.

What is the smallest team that can run a self-hosted SFU in production?

One capable SRE, one senior backend engineer, and one client engineer per platform is enough to run LiveKit or Jitsi at scale. mediasoup needs a little more backend depth. Janus is feasible for a small team only when the workload maps cleanly onto one of its plugins.

How do we estimate bandwidth for self-hosting?

For 720p30 video at 1.5 Mbps, each participant receives (N−1) × 1.5 Mbps and uploads 1.5 Mbps. With simulcast the SFU sends the lowest appropriate layer to each subscriber, cutting egress 30–60%. Plan peak egress as average participants per room × number of rooms × a 1.2 safety factor. TURN typically adds 20–40% depending on how restrictive your users’ networks are.

Cost analysis

LiveKit vs Agora: the cost breakdown

The single-engine spreadsheet behind the break-even numbers in this guide.

Learn

SFU comparison: mediasoup, Janus, LiveKit, Jitsi, Pion

A benchmark-backed teardown of the five engines you can build on.

Voice agents

Multimodal AI agents with LiveKit

The LiveKit stack wired into a production voice agent under 500 ms.

Case study

BrainCert on mediasoup

Our longest-running WebRTC deployment: architecture, scaling, lessons.

Migration

Twilio Video migration guide

The same self-hosted playbook, aimed at teams leaving Twilio.

Ready to escape Agora pricing?

Agora is a fine starting point and an expensive destination. For most teams past 10M monthly minutes, the real Agora alternatives are self-hosted WebRTC engines: LiveKit as the 2026 default, mediasoup for maximum control. Either one cuts the media bill by 5× or more, solves data-residency headaches, and puts recording, AI agents, and SIP bridges in reach — things Agora bills extra for or does not ship.

Jitsi is still the fastest drop-in, Janus the right pick for unusual topologies, and LiveKit Cloud the safest hedge. Choose the engine on your topology and volume, not on blog-post popularity, and plan the switch as a 10–14-week engagement with explicit quality KPIs. If you would rather bring in a partner who has shipped this stack dozens of times, that is what we do.

Talk to a WebRTC architect

Share your minutes, compliance needs, and target regions. You will get a real cost model, a reference architecture, and a migration plan — no spreadsheet-of-doom required.

Book a 30-min call → WhatsApp → Email us →

  • Technologies
    Development
    Services