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
Demo
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.
Documentation
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.
Converse modes
Overlay
In overlay mode, Converse appears overlayed chats on top of the website.
Fullpage
In fullpage mode, Converse behaves like a single-page app that covers the whole browser viewport.
Dark mode
Embedded
In embedded mode, Converse can be embedded into an element in the DOM.
Features
- 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
- URL Previews (requires server support, for example mod_ogp
- Translated into over 30 languages
Supported XMPP Extensions
- 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-0115 Entity Capabilities
- XEP-0124 Bidirectional-streams Over Synchronous HTTP (BOSH)
- XEP-0144 Roster item exchange
- XEP-0156 Discovering 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-0316 MUC Eventing protocol (limited support)
- 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-0393 Message styling
- XEP-0422 Message Fastening (limited support)
- XEP-0424 Message Retractions
- XEP-0425 Message Moderation
- XEP-0437 Room Activity Indicators
- XEP-0453 DOAP Usage in XMPP
- XEP-0454 OMEMO Media sharing
Integration into other servers and frameworks
XMPP servers
Other
- Alfresco: alfresco-js-chat-share
- Django: django-conversejs or django-xmpp
- Elgg: plugin
- Friendica: converse
- Patternslib: patterns.converse
- Plone: collective.converse
- Pà dé: Pà dé
- Roundcube: roundcube-converse.js-xmpp-plugin
- Ruby on Rails: conversejs-rails
- Tiki Wiki CMS Groupware: built-in optional feature
- Wordpress: ConverseJS
Tests
We use behavior-driven tests written with jasmine.js.
Run make check
to execute all the tests.
Licence
Converse.js
is released under the Mozilla Public License (MPL).
Attribution
Emoji images are courtesy of Twemoji.
Support
Issues can be logged on the Github issue tracker.
Donations
A heartfelt thanks for everyone who has supported this project over the years. Many people have contributed testing, bugfixes, features and corrections.
We accept donations via Patreon and Liberapay.