Is WebRTC really free? The costs of running a WebRTC application

By Tsahi Levent-Levi

June 5, 2023  

Is WebRTC really free? It is open source and widely used due to it. But it isn’t free when it comes to running and hosting your own WebRTC applications.

🛑 If you are new to WebRTC, then start here – What is WebRTC?

Time to answer this nagging question:

Is WebRTC really free?

One of the reasons that WebRTC is the most widely used developer technology for real time communications in the world is that it is open source. It helps a lot that it comes embedded and available in all modern browsers. That means that anyone can use WebRTC for any purpose they see fit, without paying any upfront licensing fee or later on royalties. This has enabled thousands of companies to develop and launch their own applications.

But does that mean every web application built with WebRTC is free? No. WebRTC may well be free, but whatever is bolted on top of it might not be. And then there are still costs involved with getting a web application online and dealing with traffic costs.

For that reason, in this article, I’ll be touching on why WebRTC really is free, and what you have to factor in for it if you want to get your own WebRTC application.

Yes. WebRTC itself is completely free

Since I am sure you didn’t really go read that other article – I’ll suggest it here again: What is WebRTC?

The TL;DR version of it?

The WebRTC software library is open sourced under a permissible open source license. That means its source code is available to everyone AND that individuals and companies can modify and use it anywhere they wish without needing to contribute back their changes. It makes it easier for commercial software to be developed with it (even when no changes or improvements are made to the base WebRTC library – just because of how corporate lawyers are).

You see? WebRTC really is free.

Google “owns” and maintains the main WebRTC library implementation. Everyone benefits from this. That said, they aren’t doing this only from the goodness of their heart – they have their own uses for WebRTC they focus on.

However, there are costs involved with running a WebRTC application

While you don’t have to pay anything for WebRTC itself, there’s the application you develop, publish and then maintain. There are costs that come into play here – and considerable ones. These costs can vary depending on your requirements. 

I’d like to split the costs here into 3 components:

  1. The cost of developing a WebRTC application
  2. How expensive it is to optimize a WebRTC implementation
  3. Hosting and maintenance costs of a WebRTC application

1. The cost of developing a WebRTC application

The first thing you can put as a cost is to build the WebRTC application itself.

Here, as in all other areas, there’s more demand than supply when it comes to skilled WebRTC engineers. So much so that I had to write an article about hiring WebRTC developers – and I still send this link multiple times a month when asked about this.

Here too, you should split the cost into two parts:

  1. How much does it cost to develop your application?
  2. The WebRTC part of the application – how much investment do you need to put on it?

Since everything done in WebRTC requires skilled engineers (that are scarce when it comes to WebRTC expertise), you can safely assume it is going to be a wee bit more expensive than you estimate it to be.

2. How expensive it is to optimize a WebRTC implementation

I know what you’re going to say. Your WebRTC application is going to be awesome. Glorious. Superb. It is going to be so good that it will wipe the floor with the existing solutions such as Zoom, Google Meet and Microsoft Teams.

That kind of a mentality is healthy in an entrepreneur, but a dose of reality is necessary here:

  • You can’t out-do Google in quality with WebRTC
    • At least not if you’re going to butt head to head
    • Remember that they’re the ones who maintain WebRTC and implement it inside Chrome
    • And if you have the skillset to actually deliver on this one, it means you don’t need to read this article…
  • These vendors have large teams
    • Larger than what you are going to put out there
    • Almost definitely larger than what you’re going to budget for in the next 3 years
    • In man-years they are going to out-class you on pure media quality
    • Especially when the focus is on improving it in our industry at the moment
    • These vendors also need to deal with how Google runs WebRTC in the browser

This brings me to the need to optimize what you’re doing on an ongoing basis.

Ever since the pandemic, we’ve seen a growing effort in the leading vendors in this space to improve and optimize quality. This manifests itself in the research they publish as well as features they bring to the market. Here are a few examples:

  • Larger meeting sizes
  • Lower CPU use
  • Newer audio and video codecs
  • Introduction of AI algorithms to the media pipeline

You should plan for ongoing optimization of your own as well. Your customers are going to expect you to keep up with the industry. The notion of “good enough” works well here, but the bar of what is “good enough” is rising all the time.

Such optimizations are also needed not only to improve quality, but also to reduce costs.

Factor these costs in…

3. Hosting and maintenance costs of a WebRTC application

I had a meeting the other day. A founder of a startup who had to use WebRTC because customers needed something live and interactive. That component wasn’t at the core of his application, but not having it meant lost deals and revenue. It was a mandatory capability needed for a specific feature.

He complained about WebRTC being expensive to operate. Mainly because of bandwidth costs.

We can split WebRTC maintenance costs here into two categories: cloud costs, keeping the lights on costs.

Cloud costs

That startup founder was focused on cloud costs.

When we look at the infrastructure costs of web applications, there’s the usual CPU, memory, storage and network. We might be paying these directly, or indirectly via other managed and serverless services.

With WebRTC, the network component is the biggest hurt. Especially for video applications. You can reduce these costs by going to 2nd tier IaaS vendors or by hosting in “no-name” local data centers, but if you are like most vendors, you’re likely to end up on Amazon, Microsoft or Google cloud. And there, bandwidth costs for outgoing traffic are high.

WebRTC is peer to peer, but:

  • Not all sessions can go peer to peer. Some must be relayed via TURN servers
  • Large group calls in most cases will mean going through the cloud with your bandwidth to WebRTC media servers
  • All commercial WebRTC services I know have server components that gobble up bandwidth

And the more successful you become – the more bandwidth you’ll consume – and the higher your cloud costs are going to be.

You will need to factor this in when developing your application, especially deciding when to start optimizing for costs and bandwidth use.

Keeping the lights costs

Then there’s the “keeping the lights” costs.

WebRTC changes all the time. Things get deprecated and removed. Features change behavior over time. New features are added. You continually need to test that your application does not break in the upcoming Chrome release. Who is going to take care of all that in your WebRTC application?

You will also need to understand the way your WebRTC application is used. Are users happy? Are there areas you need to invest in with further optimization? Observability (=monitoring) is key here.

Keeping the lights on has its own set of costs associated with it.

Build vs buy a WebRTC infrastructure

Buying your WebRTC infrastructure by using managed services like CPaaS vendors is expensive. But then again, building your own (along with optimizing and maintaining it) is also expensive.

Roughly speaking, this is the kind of a decision table you’ll see in front of you:

BuildBuy
Pros🔹 Customized to your specific need
🔹 Ownership of the solution and ability to modify with changing requirements
🔹 Better control over costs
🔹 Short time to market
🔹 Low initial cost
🔹 Less of a need for a highly skilled team of WebRTC experts
Cons🔹 Time consuming. Longer time to market
🔹 High initial development costs
🔹 Ongoing maintenance costs
🔹 Finding/sourcing skilled WebRTC developers
🔹 Cost at scale can be an issue
🔹 Harder to differentiate on the media layer

There’s also a middleground, where you can source/buy certain pieces and build others. Here are a few examples/suggestions:

  • Consider paying for a managed TURN service while building your own WebRTC application
  • Signaling can be outsourced using the likes of PubNub, Pusher and Ably
  • You can get your testing and monitoring needs from testRTC (a company I co-founded)

You can also start with a CPaaS vendor and once you scale and grow, invest the time and money needed to build your own infrastructure – once you’ve proven your application and got to product-market-fit.

So, how free is WebRTC, really?

Part of WebRTC’s claim to fame is its nature as an open source and thus free software for building interactive web applications. While the technology itself is indeed free of charge and offers numerous freedoms, there are still costs associated with running a WebRTC application.

When we had to launch our own video conferencing service some 25 years ago, we had to put an investment of several millions of dollars along with an engineering team for a period of a couple of years. Only to get to the implementation of a media engine.

WebRTC gives that to you for “free”. And it is also kind enough to be pre-integrated in all modern browsers.

What Google did with WebRTC was to reduce the barrier of entry to real time communication drastically.

Creating a WebRTC application isn’t free – not really. But it does come with a lot of alternatives that bring with them freedom and flexibility.


You may also like

Leave a Reply

Your email address will not be published. Required fields are marked

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}