Liblinphone is a high level library integrating all the SIP call and instant messaging features into a single easy to use API.

Usually telecommunications is made of two things: media (transport of voice or video, encoding and decoding...), and signaling (routing calls, ringing, accepting a call etc...).

Liblinphone aims at combining the two things together and doing most things automatically. This makes it easier to the programmer to implement video calls and instant messaging in any application, without being an expert in VoIP and telecommunications. Liblinphone is an open source library based on Mediastreamer2 for voice/video streaming, and belle-sip for SIP signaling.

Liblinphone in Linphone architecture

Linphone and linphonec are directly based on Liblinphone.


Signaling features

  • SIP user agent compliant with RFC 3261
  • IPv6 dual stack or v6-only mode
  • Secure user authentication : md5 / SHA256 digest, TLS client certificates
  • Supports multiple calls simultaneously with call management features: hold on with music, resume, transfer...
  • Multiple SIP proxy support: registrar, proxies, outbound proxies
  • One-to-one and group text instant messaging, with "is typing" and delivery notifications
  • Presence using list subscription to presence server
  • DTMF (telephone tones) support using SIP INFO or RFC 4733

Media features

  • Audio codecs: opus, speex, g711, g729, gsm, iLBC, AMR, AMR-WB, g722, SILK, iSAC, BV16, Codec2
  • Video codecs: VP8, H264 with resolutions up to 1080P, MPEG4
  • Hardware accelerated H264 codec for Mac OSX / iOS (VideoToolbox) and Android (MediaCodec)
  • Audio conferencing
  • Innovative RTP jitter buffer algorithm, which quickly adapts to very jittered network conditions and improve control of audio latency
  • Adaptive bit rate control algorithm: congestion control and estimation of available bandwidth, in order to optimize audio & video quality
  • ICE (RFC 5245), STUN and TURN (RFC 5766) for optimized NAT traversal allowing peer to peer audio & video connections whenever it is possible
  • SRTP, zRTP and SRTP-DTLS voice and video encryption

Liblinphone leverages on mediastreamer2 engine for rendering audio & video streams, and as such takes advantages of all features implemented in mediastreamer2.
See the complete list of media features on Mediastreamer2 section.


Liblinphone is available on the following platforms:

  • GNU/Linux: x86, x86-64, ARM v5, v7, arm64 ; Debian 8/9, Centos 7
  • Windows Desktop: x86 (works also on x86_64) Windows 7 and later
  • Mac OS X: x86_64 ; 10.11 and later.
  • GNU/Linux embedded: Linphonec or liblinphone are good candidates to provide the software stack of an hardware phone or hardware communication system.
  • Apple iOS 9 to 12 (ARM v7, ARM 64)
  • Google Android 4.1 to 8.1 (ARM v7-v8, x86)
  • Windows 10 UWP : mobile and desktop (ARM v7)

Implemented standards

Registration, calls, CORE FUNCTIONS

  • Session Initiation Protocol, RFC 3261
    • 8. General User Agent behaviour
    • 9. Cancelling a request
    • 10. Registrations
    • 12. Dialogs
    • 13. Initiating a session
    • 14. Modifying an existing session
    • 15. Terminating a session
    • 17. Transactions
    • 18. Transports
    • 22.4 The Digest Authentication Scheme
  • Session Initiation Protocol (SIP): Locating SIP Servers, RFC 3263
  • Session Description Protocol, RFC 4566
  • An Offer/Answer Model with the Session Description Protocol (SDP), RFC 3264
  • An Extension to the Session Initiation Protocol (SIP), RFC 3581 (use of rport parameter)
  • Session Initiation Protocol (SIP) INFO Method and Package Framework, RFC 6086
    • 4. The INFO Method
  • The Session Initiation Protocol (SIP) Refer Method, RFC 3515
    • 2. The REFER Method
  • Session Description Protocol (SDP) Security Descriptions for Media Streams, RFC 4568
  • Managing Client-Initiated Connections in the Session Initiation Protocol (+sip.instance parameter), RFC 5626
  • Connection reuse in the Session Initiation Protocol (alias parameter), RFC 5923
  • Correct Transaction Handling for 2xx Response to Session Initiation Protocol (SIP) INVITE Requests, RFC 6026
  • A privacy mechanism for the Session Initiation Protocol, RFC 3323
  • Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks, RFC 3325
  • Interactive Connectivity Establishment (ICE), RFC 5245
  • Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN), RFC 5766
  • Session Traversal Utilities for NAT (STUN), RFC 5389
  • Traversal Using Relays around NAT (TURN) Resolution Mechanism, RFC 5928
  • Re-INVITE and Target-Refresh Request Handling, RFC 6141, chpt. 5 only
  • Reliability of Provisional Responses in the Session Initiation Protocol (SIP), RFC 3262


  • A Presence Event Package for the Session Initiation Protocol (SIP), RFC 3856
  • Session Initiation Protocol (SIP) Extension for Event State Publication, RFC 3903 (Creation of PUBLISH requests)
  • A Data Model for Presence, RFC 4479
  • RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF), RFC 4480
  • Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP), RFC 5367
  • Session Initiation Protocol (SIP) - Specific Event Notification, RFC 6665
  • Message Body Handling in the Session Initiation Protocol, RFC 5621
  • SIP body compression, RFC 1951


  • Session Initiation Protocol, RFC 3261
  • The Session Initiation Protocol (SIP) Refer Method, RFC 3515
    • 2. The REFER Method
  • Session Initiation Protocol (SIP) Extension for Instant Messaging, RFC 3428 (only text/plain messages)
  • SIP Call Control - Conferencing for User Agents, RFC 4579
  • Conference Establishment Using Request-Contained Lists in SIP, RFC 5366
  • SIP Event Package for Conference State, RFC 4575
  • Obtaining and Using Globally Routable User Agent URIs (GRUUs) in SIP, RFC 5627
  • Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP), RFC 5367
  • Session Initiation Protocol (SIP) - Specific Event Notification, RFC 6665
  • Common Presence and Instant Messaging (CPIM): Message Format, RFC 3862
  • Indication of message composition in instant messaging, RFC 3994
  • Instant Message Disposition Notification, RFC 5438
  • File transfer also possible via HTTP POST/GET - RCS vnd.gsma.rcs-ft-http+xml
  • SIP body compression, RFC 1951
  • Message Body Handling in the Session Initiation Protocol, RFC 5621





Liblinphone is dual licensed. It can be licensed and distributed:

  • under GNU GPLv2 license - for free (open source)
  • under proprietary and commercial license to be used in closed source applications. Contact Belledonne Communications for costs and other service information.


Liblinphone Android version:

Liblinphone IOS version:

Liblinphone Blackberry:

Liblinphone win32 SDK version:

Liblinphone macos SDK version:

Source code

Please see Linphone Source code section.



The Liblinphone wiki gives good hints to start programming with liblinphone:

The API reference documentation is provided in a single place, no matter the target platform and programming language.

Liblinphone multi-language API documentation, used for Linux, Windows, Mac, iOS, Android and Xamarin (C#).

Python wrapper documentation.