Erlang B vs Erlang C
Both formulas convert busy-hour traffic into capacity, but they model opposite customer behaviors when all servers are busy.
Use Erlang B when blocked calls get busy tone and leave (SIP trunks, PRI, circuit groups). Use Erlang C when callers wait in a queue until an agent is free (contact centers / ACD). Mixing them under- or over-provisions channels and agents.
Erlang B Calculator
Blocked-calls-cleared model. Solves for trunks/channels given Erlangs and Grade of Service, or for blocking given a fixed trunk count.
Best for
- ▸SIP trunk and PRI channel sizing
- ▸E1/T1 voice circuit packs
- ▸Any resource that rejects overflow with busy signal
Erlang C Calculator
Delayed-calls model. Estimates agents required to meet average speed of answer or service-level targets when queueing is allowed.
Best for
- ▸Contact-center / ACD staffing
- ▸Service-level (e.g. 80/20) planning
- ▸Queues with patient waiting (before abandonment models)
How to choose
If your design intent is “busy = fail the call,” start with Erlang B, then feed channel count into VoIP bandwidth and SIP trunk tools. If your design intent is “busy = wait,” start with Erlang C, apply shrinkage for rostered headcount, and size trunks separately for the resulting offered load.
FAQ
Can I size SIP trunks with Erlang C?
Not as the primary model. SIP trunks behave like loss systems unless you deliberately queue calls in an application layer. Use Erlang B for channels; use Erlang C only for the agent layer in front of those trunks.
Which model needs average handle time?
Both need a duration input to compute Erlangs. Contact-center Erlang C usually uses AHT (talk + after-call work). Trunk Erlang B uses mean call holding time from CDRs.
What about call abandonment?
Classic Erlang C assumes infinite patience. For high abandon rates, use Erlang C as a floor and validate with WFM simulation or Erlang A variants outside this comparison.