XMPP - Extensible Messaging and Presence Protocol


XMPP - Extensible Messaging and Presence Protocol


Extensible Messaging and Presence Protocol (XMPP) is an open-standard communications protocol for message-oriented middleware based on XML (Extensible Markup Language).

The protocol was originally named Jabber, and was developed by the Jabber open-source community in 1999 for, originally, near-real-time, extensible instant messaging (IM), presence information, and contact list maintenance.

Designed to be extensible, the protocol today also finds application in VoIP and file transfer signalling.

Unlike most instant messaging protocols, XMPP uses an open systems approach of development and application, by which anyone may implement an XMPP service and interoperate with other organisations’ implementations.

The software implementation and many client applications are distributed as free and open source software.

XMPP-based software is deployed widely across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation.


  • 1998 - Work on Jabber technology started
  • 1999 - Open source server jabberd released
  • 2000 - jabberd 1.0 released in May
  • 2001 - Jabber Software Foundation formed
  • 2002 - IETF forms XMPP Working Group
  • 2003 - Over 10 million people already using XMPP
  • 2004 - IETF publishes XMPP specifications
  • 2005 - Google Talk IM and VoIP service launched
  • 2007 - Jabber Software Foundation renamed to XMPP Standards Foundation.
  • 2008 - Cisco Systems acquires Jabber, Inc., creators of the commercial product Jabber XCP.
  • 2010 - Facebook opens up chat feature to third- party applications via XMPP

Decentralisation and addressing

The XMPP network uses a client-server architecture , where clients do not talk directly to one another. This architecture is similar to email.

Anyone can run their own XMPP server and there is no central master server.

Every user on the network has a unique Jabber ID (JID). The JID is structured like an e-mail address with a username and a domain name, such as username@example.com.

To be able to log in from multiple locations, a user may specify a resource. A resource identifies a particular client belonging to the user (e.g. home, work, or mobile). To include this in the JID, a slash followed by the name of the resource is added. For example, the full JID of a user's mobile account would be username@example.com/mobile.


XMPP servers may be isolated from the public XMPP network (e.g. on a company intranet), and robust security (via SASL and TLS) has been built into the core XMPP specifications.

Connecting to other protocols

A useful feature of the XMPP system is that of transports, also known as gateways, which allow users to access networks using other protocols. This can be other instant messaging protocols, but also protocols such as SMS or Email.

XMPP via HTTP transport

Another aspect of XMPP is the HTTP binding for users behind restricted firewalls. With HTTP binding, the client uses longer-lived HTTP connections to receive messages as soon as they are sent. This push model of notification is more efficient than polling, where many of the polls return no new data.

Because the client uses HTTP, most firewalls allow clients to fetch and post messages without any hindrances. Various websites let people sign in to XMPP via a browser.


Custom functionality can be built on top of XMPP. To maintain interoperability, common extensions are managed by the XMPP Software Foundation.

XMPP applications beyond instant messaging include network management, content syndication, collaboration tools, file sharing, gaming, and remote systems monitoring.



  • Instant messaging
  • Groupchat
  • Gaming
  • Systems control
  • Geolocation
  • Middleware and cloud computing
  • Data syndication Voice over IP (VoIP) Identity services

Used By

  • Apache Wave
  • Google Talk
  • Facebook Chat
  • LJ Talk (LiveJournal)
  • ooVoo
  • Ovi by Nokia
  • TiVo
  • Various IM clients