Converse is a web based XMPP/Jabber chat client.
You can either use it as a webchat app, or you can integrate it into your own website.
It's 100% client-side JavaScript, HTML and CSS and the only backend required is a modern XMPP server.
Please support this project via Patreon or Liberapay
Converse is hosted and can be used at https://conversejs.org.
A demo showing anonymous login is available at https://conversejs.org/demo/anonymous.html and a demo which shows how you can embed a single chat room into a page is avialable at https://conversejs.org/demo/embedded.html.
The developer/integrator documentation can be found at https://conversejs.org/docs/html.
You'll probably want to begin with the quickstart guide, which shows you how to use the CDN (content delivery network) to quickly get a demo up and running.
In overlay mode, Converse appears overlayed chats on top of the website.
In fullpage mode, Converse behaves like a single-page app that covers the whole browser viewport.
In embedded mode, Converse can be embedded into an element in the DOM.
- Available as overlayed chat boxes or as a fullscreen application. See inverse.chat for the fullscreen version.
- Custom status messages
- Desktop notifications
- A plugin architecture based on pluggable.js
- Chat statuses (online, busy, away, offline)
- Anonymous logins, see the anonymous login demo
- Translated into over 30 languages
- RFC-7395 XMPP Subprotocol support for WebSocket
- XEP-0004 Data Forms
- XEP-0030 Service discovery
- XEP-0045 Multi-user chat rooms
- XEP-0048 Bookmarks
- XEP-0050 Ad-Hoc Commands
- XEP-0054 VCard-temp
- XEP-0059 Result Set Management
- XEP-0060 Publish-Subscribe (limited support)
- XEP-0066 Out of Band Data
- XEP-0077 In-band registration
- XEP-0085 Chat State Notifications
- XEP-0124 Bidirectional-streams Over Synchronous HTTP (BOSH)
- XEP-0144 Roster item exchange
- XEP-0156 Disovering Alternative XMPP Connection Methods
- XEP-0163 Personal Eventing Protocol (limited support)
- XEP-0184 Message Receipt
- XEP-0198 Stream Management
- XEP-0199 XMPP Ping
- XEP-0203 Delayed Delivery
- XEP-0206 XMPP Over BOSH
- XEP-0245 The /me Command
- XEP-0249 Direct MUC Invitations
- XEP-0280 Message Carbons
- XEP-0297 Stanza Forwarding (limited support)
- XEP-0308 Last Message Correction
- XEP-0313 Message Archive Management
- XEP-0317 Hats (limited support)
- XEP-0333 Chat Markers (limited support)
- XEP-0352 Client State Indication
- XEP-0357 Push Notifications
- XEP-0359 Unique and Stable Stanza IDs
- XEP-0363 HTTP File Upload
- XEP-0372 References
- XEP-0382 Spoiler messages
- XEP-0384 OMEMO Encryption
- XEP-0422 Message Fastening (limited support)
- XEP-0424 Message Retractions
- XEP-0425 Message Moderation
- Prosody: mod_conversejs
- Openfire: inverse.jar
- Ruby on Rails: conversejs-rails
- Django: django-conversejs or django-xmpp
- Patternslib: patterns.converse
- Roundcube: roundcube-converse.js-xmpp-plugin
- Wordpress: ConverseJS
- Pàdé: Pàdé
- Plone: collective.converse
- Alfresco: alfresco-js-chat-share
- Friendica: converse
- Tiki Wiki CMS Groupware: built-in optional feature
We use behavior-driven tests written with jasmine.js.
Run make check
to execute all the tests.
Converse.js
is released under the Mozilla Public License (MPL).
Emoji images are courtesy of Twemoji.
Issues can be logged on the Github issue tracker.
A heartfelt thanks for everyone who has supported this project over the years. Many people have contributed testing, bugfixes, features and corrections.