XMPP facts for kids
![]() |
|
International standard | RFC 6120 (Core) (2011) RFC 6121 (IM & Presence) (2011) |
---|---|
Introduced | 1999 |
Industry | Instant messaging |
The Extensible Messaging and Presence Protocol (XMPP), first called Jabber, is an open way for computers to talk to each other. It was made for instant messaging (IM), showing if someone is online (presence information), and keeping track of your friends' lists.
XMPP uses XML, which is a special computer language. This helps it send information very quickly between different computers. XMPP is also very flexible. This means it can be used for many things beyond just chatting. For example, it can help with VoIP (like voice calls over the internet), video calls, sending files, and even online gaming.
Unlike many chat programs, XMPP is an open standard. This means its rules are public for everyone to see and use. The way XMPP works is a lot like email. Anyone can set up their own XMPP server. There is no single main server that controls everything. This open setup lets users on different servers talk to each other. You use a 'JID' account, which is like an email address. Many XMPP programs are also free to use and change.
The XMPP system was first created by a group of open-source developers. In 2004, it became an official standard for instant messaging. New features and updates have been added ever since. You can find XMPP apps for computers and phones. By 2003, over ten million people around the world were using XMPP.
Contents
How XMPP Works
What is a Decentralized Network?

The XMPP network is set up like an email system. It is a client-server model. This means your chat app (the client) talks to a server, and that server talks to other servers. Chat apps do not talk directly to each other.
The system is decentralized. This means there is no single main server that runs everything. This is different from apps like WhatsApp or Telegram. Anyone can run their own XMPP server. While there is a public XMPP server at `jabber.org`, it is just one of many. You can even run your own XMPP server on your own computer or website.
Understanding XMPP Addresses
Every user on the XMPP network has a special address. It is called a JID, which stands for Jabber ID. A JID looks like an email address. It has a username and a domain name for the server where the user is. These parts are separated by an at sign (`@`).
For example, `alice@example.com` means `alice` is the username. `example.com` is the server where Alice's account is.
Sometimes, a user might log in from many places. For example, they might use their phone, home computer, and work computer. To tell these apart, they can add a resource to their JID. A resource shows which device or app the user is on. You add a slash (`/`) and the resource name. For example, `username@example.com/mobile` means the user is on their mobile device.
Each resource can also have a priority number. This number helps the system know which device to send messages to first. Messages sent to `username@example.com` will go to the device with the highest priority. But messages sent to `username@example.com/mobile` will only go to the mobile device. A higher number means higher priority.
Using XMPP with Web Browsers
The main way XMPP sends messages is over TCP connections. But the XMPP community also made a way to use XMPP with HTTP. This is useful for web-based chat apps and for people behind strict firewalls.
One method, called BOSH, lets servers send messages to your web browser as soon as they arrive. This is better than constantly checking for new messages. Because it uses HTTP, most firewalls let these messages through easily. This means you can often use XMPP even when other internet connections are blocked. Many websites let you chat using XMPP right in your browser.
Making XMPP Better with Extensions
The XMPP Standards Foundation (XSF) works on making XMPP even better. They create XMPP Extension Protocols (XEPs). These are like add-ons that give XMPP new features. Anyone can suggest new extensions. To make sure everything works together, the XSF manages common extensions.
XMPP can be used for many things beyond just instant messaging. These include:
- Online chat rooms
- Managing computer networks
- Sharing files
- Online gaming
- Controlling systems from far away
- Finding locations (geolocation)
- Voice and video calls (VoIP)
XMPP is also good for cloud computing. This is where computers and data are stored and managed over the internet. XMPP helps different parts of the cloud system talk to each other.
What are XMPP's Current Challenges?
XMPP does not have built-in "Quality of Service" (QoS). This means it does not guarantee that every message will be delivered. But there are extensions being worked on to fix this. For example, one extension helps confirm that messages have been received.
Also, XMPP uses text-based XML. This can make messages larger than if they were in a special binary code. This means they might use a bit more internet data. For sending large files, like videos, it is better to send them separately. XMPP can then be used to help set up that file transfer.
Cool Features of XMPP
Direct Connections Between Devices
With an extension called Jingle, XMPP can help devices talk directly to each other. This is often used for IP telephony (VoIP), which means making phone calls over the internet.
Group Chats for Many Users
XMPP supports group chats where many people can talk together. This feature is called Multi-User Chat (MUC). It works a lot like Internet Relay Chat (IRC), which is another popular way to chat in groups.
Keeping Your Chats Safe
XMPP servers can be set up in private networks, like inside a company. XMPP also has strong security features built in. These include:
- Secure login: This makes sure only you can access your account.
- Encrypted messages: This scrambles your messages so only you and the person you are talking to can read them.
There are also special extensions for even stronger security. Off-the-Record Messaging (OTR) used to be popular. Now, a better one is multi-end-to-multi-end encryption (OMEMO). This encrypts messages from your device all the way to your friend's device. This means even the server operator cannot read your messages. You can also encrypt messages using OpenPGP with some XMPP apps.
Finding Services Online
XMPP can help you find services on your local network or across the internet. It can also tell you if these services are available. This is useful for many different online tools.
Connecting to Other Chat Systems
One of the first goals for XMPP was to let users connect to many different chat systems. This includes non-XMPP systems like ICQ or Yahoo Messenger. It can also connect to SMS (text messages), IRC, or email.
This works through special tools called transports or gateways. These gateways run on an XMPP server. You can "register" with a gateway by giving it your login details for another service. Then, you can chat with people on that other service as if they were XMPP users. This means your XMPP app does not need special code for every different chat system.
However, using these gateways might go against the rules of some services. Also, you have to give your username and password for the other service to the gateway. This could be a privacy concern.
Some companies also use server-to-server gateways. These let their non-XMPP chat systems connect to XMPP servers. Examples include HCL Sametime Premium and Skype for Business Server.
XMPP Software
Many different apps, servers, and code libraries use XMPP. These are available under various software licenses.
XMPP Servers
There are many XMPP server programs. Some well-known ones are ejabberd and Prosody.
XMPP Chat Apps
You can find many XMPP chat apps for different devices and computer systems. These include apps with a visual interface and those that use text commands. The XMPP website lists some popular ones:
- Conversations (for Android phones)
- Dino (for various computer systems)
- Converse.js (for web browsers)
- Gajim (for Windows and Linux computers)
- Monal (for macOS and iOS devices)
- Swift.IM (for macOS, Windows, and Linux)
Other popular XMPP apps include Miranda NG, Pidgin, and Psi.
Where XMPP is Used
Thousands of XMPP servers are running around the world. Many are public, and many are run by individuals or groups for private use. You can find lists of public XMPP servers online where you can create an account.
Some big chat services have used XMPP. These include LiveJournal's "LJ Talk" and HipChat. Many web hosting companies, like DreamHost, offer XMPP services. There are also special cloud services that host XMPP servers for you.
XMPP is also used in other areas, not just chat. For example, it is used in smart grid systems to manage electricity. It can also replace SMS for text messaging on many smartphones.
XMPP in Other Big Companies
Some of the biggest messaging companies have used XMPP behind the scenes. They might not always tell their users this.
For example, Google launched Google Talk in 2005. It used XMPP for instant messaging. Google later added video calls using the Jingle protocol. However, Google later stopped supporting XMPP for server-to-server connections in Google Talk. Google Talk itself has since been replaced.
In 2010, Facebook allowed other apps to connect to its Facebook Chat using XMPP. But they stopped supporting this in 2014. Similarly, Microsoft offered XMPP support for its Messenger service, but this was also later limited.
XMPP is also a common standard for private chat in many gaming platforms. This includes Origin and PlayStation. However, Steam and Xbox LIVE use their own special chat systems.
History of XMPP
Jeremie Miller started working on the Jabber technology in 1998. The first version of the `jabberd` server came out in January 1999. The early Jabber community focused on open-source software. Their biggest success was creating the XMPP protocol.
In 2002, the Internet Engineering Task Force (IETF) started working to make XMPP an official standard. The early Jabber protocol became the base for XMPP. The first official XMPP standards were published in October 2004. Key changes included adding TLS for encryption and SASL for secure logins. These standards have been updated several times since then.
The first chat service based on XMPP was Jabber.org. It has been running and offering free accounts since 1999.
In 2008, Cisco Systems bought Jabber, Inc., a company that made commercial XMPP products.
The XMPP Standards Foundation (XSF) continues to develop and publish new XMPP extensions. Some widely used extensions include:
- Data Forms
- Service Discovery (finding services)
- Multi-User Chat (group chats)
- File Transfer
- HTTP Binding (using XMPP over HTTP)
- Jingle (for voice and video calls)
XMPP and the Internet of Things
XMPP features are being used for the Internet of Things (IoT). This is where everyday objects are connected to the internet. XMPP helps these devices talk to each other safely. It can help them share data, control each other, and find other devices.
Official XMPP Standards
The IETF XMPP working group has created several official documents called Request for Comments (RFCs). These documents describe how XMPP works.
The most important and widely used of these standards are:
- RFC 6120: This describes the main parts of XMPP. It explains how chat apps and servers send messages using XML. It also covers how connections are made secure with SASL and TLS.
- RFC 6121: This describes how XMPP is used for instant messaging and showing if someone is online. This is the most common use of XMPP.
- RFC 7622: This describes the rules for XMPP addresses, also known as JabberIDs or JIDs.
Other Standards Like XMPP
XMPP is often compared to SIMPLE. SIMPLE is another standard for instant messaging based on Session Initiation Protocol (SIP).
The XMPP extension for multi-user chat is similar to Internet Relay Chat (IRC). IRC is simpler and has fewer features, but it is used by many people.
XMPP extensions for publish-subscribe offer similar features to the Advanced Message Queuing Protocol (AMQP).
See Also
- Comparison of instant messaging clients
- Comparison of instant messaging protocols
- Matrix (protocol)
- Secure communication
- XMPP clients