conversejs/converse.js

Web-based XMPP/Jabber chat written in JavaScript

JavaScript

3,299

9,683 commits

updated Oct 11, 2026

See the code

README

Converse.js

XMPP Chat CI Tests Translation status

Converse is a modern, feature-rich and 100% client-side XMPP chat app that runs in a web browser. It can be used as a standalone web app or seamlessly integrated into existing websites.

Join our chat room (XMPP URL: discuss@conference.conversejs.org).

Quick Start

Try the hosted app at conversejs.org. You can also download and install Converse Desktop or Converse Tauri.

Or set up your own instance:

git clone git@github.com:conversejs/converse.js.git
cd converse.js
git clone https://github.com/conversejs/media.git media; // To see images like sponsorship logos
npm install
npm run build
npm run serve -- -p 8008

You can then open http://localhost:8008/dev.html in your browser to access Converse.

See our quickstart guide for more details.

Screenshots

Click to view screenshots

Overlay Mode

Screenshot of Converse in overlay mode

Fullpage Mode

Screenshot of Converse in full-page mode

Embedded Mode

Screenshot of Converse in embedded mode

Live Demos

Documentation

Comprehensive documentation is available at conversejs.org/docs, including:

Key Features

  • Multiple UI Options: Overlay chat boxes, full-page application, or embedded components
  • Rich Messaging: Message styling, corrections, reactions, and URL previews
  • Privacy-Focused: End-to-end encryption with OMEMO
  • User Status: Custom status messages and availability indicators
  • Notifications: Desktop notifications for new messages
  • File Sharing: HTTP File Upload support
  • Extensible: Plugin architecture based on pluggable.js
  • Internationalized: Translated into 40+ languages
  • Anonymous Login: Use without registration (server permitting)
  • Responsive: Works on desktop and mobile devices

Display Modes

Converse adapts to your needs with multiple display options:

ModeDescription
Fullpage (default)Functions as a single-page application covering the entire viewport
OverlayChat boxes appear on top of your website
EmbeddedIntegrates into specific elements in your page's DOM

XMPP Protocol Support

Converse implements a wide range of XMPP Extensions (XEPs), making it one of the most protocol-compliant web clients available.

View all supported XEPs (45+)
XEPNameNotes
RFC-7395XMPP Subprotocol for WebSocket
XEP-0004Data Forms
XEP-0030Service Discovery
XEP-0045Multi-user Chat
XEP-0048Bookmarks
XEP-0050Ad-Hoc Commands
XEP-0054VCard-temp
XEP-0059Result Set Management
XEP-0060Publish-SubscribeLimited support
XEP-0066Out of Band Data
XEP-0077In-band Registration
XEP-0085Chat State Notifications
XEP-0115Entity Capabilities
XEP-0124BOSH
XEP-0144Roster Item Exchange
XEP-0156Discovering Alternative XMPP Connection Methods
XEP-0163Personal Eventing ProtocolLimited support
XEP-0184Message Receipt
XEP-0198Stream Management
XEP-0199XMPP Ping
XEP-0202Entity Time1:1 chats only
XEP-0203Delayed Delivery
XEP-0206XMPP Over BOSH
XEP-0245The /me Command
XEP-0249Direct MUC Invitations
XEP-0280Message Carbons
XEP-0297Stanza ForwardingLimited support
XEP-0308Last Message Correction
XEP-0313Message Archive Management
XEP-0316MUC Eventing ProtocolLimited support
XEP-0317HatsLimited support
XEP-0333Chat MarkersLimited support
XEP-0352Client State Indication
XEP-0357Push Notifications
XEP-0359Unique and Stable Stanza IDs
XEP-0363HTTP File Upload
XEP-0372References
XEP-0382Spoiler Messages
XEP-0384OMEMO Encryption
XEP-0393Message Styling
XEP-0422Message FasteningLimited support
XEP-0424Message Retractions
XEP-0425Message Moderation
XEP-0437Room Activity Indicators
XEP-0453DOAP Usage in XMPP
XEP-0454OMEMO Media Sharing
XEP-0461Message Replies

Integration Options

Converse integrates with popular platforms and frameworks:

XMPP Servers

Web Frameworks & CMS

LLM and GenAI usage

Large Language Models have been and may be used to assist with Converse's development, including writing and refactoring code, editing documentation and research.

Converse does not implement its own cryptography. OMEMO end-to-end encryption is delegated to libomemo.js; see that project's own LLM and GenAI usage note for how its security-critical code is verified.

Within Converse, correctness is checked independently of any AI. The test suite runs in a real browser, and every change, however it was drafted, is reviewed by a human maintainer who remains responsible for it, exactly as for any third-party contribution.

Contributing with AI assistance

Using LLMs or coding agents to help write your contribution is allowed. AI is a legitimate tool, and we won't reject a patch simply because a model helped write it. But the bar is the same as for any other pull request:

  • Understand what you submit. You are responsible for your contribution. Be able to explain how it works and why it's correct.
  • Test it. Your code must build and pass the test suite, and new behaviour should come with tests.
  • Disclose it. Note in your pull request that AI tooling was used. This is about honesty and giving reviewers context, not stigma.
  • No slop. Unreviewed, untested, auto-generated output thrown over the fence will be closed. Volume is not contribution, and reviewing it costs maintainers real time.

If you're driving Converse with a coding agent, start with AGENTS.md, which documents the architecture, conventions and build/test workflow the project expects.

Support the Project

If you find Converse useful, please consider supporting its development:

Thanks to everyone who has supported this project over the years through donations, testing, bug reports, and code contributions.

Sponsors

chat
jabber
lit
omemo
xmpp
xmpp-client

Project health

Overall

4.6/10

Maintained

10/10

Code review

1/10
OpenSSF Scorecard

Latest release

14.0.0 · Jun 26, 2026

Releases this year

3

Significant stargazers

(top 24 of 26)

Profpatsch

241 followers · starred Oct 2025

Nelson Vides

34 followers · starred Jan 2021

Nicolas Morel

309 followers · starred Nov 2015

Willow (GHOST)

284 followers · starred Jan 2026

conversejs/converse.js

Web-based XMPP/Jabber chat written in JavaScript

JavaScript

3,299

9,683 commits

updated Oct 11, 2026

See the code

README

Converse.js

XMPP Chat CI Tests Translation status

Converse is a modern, feature-rich and 100% client-side XMPP chat app that runs in a web browser. It can be used as a standalone web app or seamlessly integrated into existing websites.

Join our chat room (XMPP URL: discuss@conference.conversejs.org).

Quick Start

Try the hosted app at conversejs.org. You can also download and install Converse Desktop or Converse Tauri.

Or set up your own instance:

git clone git@github.com:conversejs/converse.js.git
cd converse.js
git clone https://github.com/conversejs/media.git media; // To see images like sponsorship logos
npm install
npm run build
npm run serve -- -p 8008

You can then open http://localhost:8008/dev.html in your browser to access Converse.

See our quickstart guide for more details.

Screenshots

Click to view screenshots

Overlay Mode

Screenshot of Converse in overlay mode

Fullpage Mode

Screenshot of Converse in full-page mode

Embedded Mode

Screenshot of Converse in embedded mode

Live Demos

Documentation

Comprehensive documentation is available at conversejs.org/docs, including:

Key Features

  • Multiple UI Options: Overlay chat boxes, full-page application, or embedded components
  • Rich Messaging: Message styling, corrections, reactions, and URL previews
  • Privacy-Focused: End-to-end encryption with OMEMO
  • User Status: Custom status messages and availability indicators
  • Notifications: Desktop notifications for new messages
  • File Sharing: HTTP File Upload support
  • Extensible: Plugin architecture based on pluggable.js
  • Internationalized: Translated into 40+ languages
  • Anonymous Login: Use without registration (server permitting)
  • Responsive: Works on desktop and mobile devices

Display Modes

Converse adapts to your needs with multiple display options:

ModeDescription
Fullpage (default)Functions as a single-page application covering the entire viewport
OverlayChat boxes appear on top of your website
EmbeddedIntegrates into specific elements in your page's DOM

XMPP Protocol Support

Converse implements a wide range of XMPP Extensions (XEPs), making it one of the most protocol-compliant web clients available.

View all supported XEPs (45+)
XEPNameNotes
RFC-7395XMPP Subprotocol for WebSocket
XEP-0004Data Forms
XEP-0030Service Discovery
XEP-0045Multi-user Chat
XEP-0048Bookmarks
XEP-0050Ad-Hoc Commands
XEP-0054VCard-temp
XEP-0059Result Set Management
XEP-0060Publish-SubscribeLimited support
XEP-0066Out of Band Data
XEP-0077In-band Registration
XEP-0085Chat State Notifications
XEP-0115Entity Capabilities
XEP-0124BOSH
XEP-0144Roster Item Exchange
XEP-0156Discovering Alternative XMPP Connection Methods
XEP-0163Personal Eventing ProtocolLimited support
XEP-0184Message Receipt
XEP-0198Stream Management
XEP-0199XMPP Ping
XEP-0202Entity Time1:1 chats only
XEP-0203Delayed Delivery
XEP-0206XMPP Over BOSH
XEP-0245The /me Command
XEP-0249Direct MUC Invitations
XEP-0280Message Carbons
XEP-0297Stanza ForwardingLimited support
XEP-0308Last Message Correction
XEP-0313Message Archive Management
XEP-0316MUC Eventing ProtocolLimited support
XEP-0317HatsLimited support
XEP-0333Chat MarkersLimited support
XEP-0352Client State Indication
XEP-0357Push Notifications
XEP-0359Unique and Stable Stanza IDs
XEP-0363HTTP File Upload
XEP-0372References
XEP-0382Spoiler Messages
XEP-0384OMEMO Encryption
XEP-0393Message Styling
XEP-0422Message FasteningLimited support
XEP-0424Message Retractions
XEP-0425Message Moderation
XEP-0437Room Activity Indicators
XEP-0453DOAP Usage in XMPP
XEP-0454OMEMO Media Sharing
XEP-0461Message Replies

Integration Options

Converse integrates with popular platforms and frameworks:

XMPP Servers

Web Frameworks & CMS

LLM and GenAI usage

Large Language Models have been and may be used to assist with Converse's development, including writing and refactoring code, editing documentation and research.

Converse does not implement its own cryptography. OMEMO end-to-end encryption is delegated to libomemo.js; see that project's own LLM and GenAI usage note for how its security-critical code is verified.

Within Converse, correctness is checked independently of any AI. The test suite runs in a real browser, and every change, however it was drafted, is reviewed by a human maintainer who remains responsible for it, exactly as for any third-party contribution.

Contributing with AI assistance

Using LLMs or coding agents to help write your contribution is allowed. AI is a legitimate tool, and we won't reject a patch simply because a model helped write it. But the bar is the same as for any other pull request:

  • Understand what you submit. You are responsible for your contribution. Be able to explain how it works and why it's correct.
  • Test it. Your code must build and pass the test suite, and new behaviour should come with tests.
  • Disclose it. Note in your pull request that AI tooling was used. This is about honesty and giving reviewers context, not stigma.
  • No slop. Unreviewed, untested, auto-generated output thrown over the fence will be closed. Volume is not contribution, and reviewing it costs maintainers real time.

If you're driving Converse with a coding agent, start with AGENTS.md, which documents the architecture, conventions and build/test workflow the project expects.

Support the Project

If you find Converse useful, please consider supporting its development:

Thanks to everyone who has supported this project over the years through donations, testing, bug reports, and code contributions.

Sponsors

chat
jabber
lit
omemo
xmpp
xmpp-client

Project health

Overall

4.6/10

Maintained

10/10

Code review

1/10
OpenSSF Scorecard

Latest release

14.0.0 · Jun 26, 2026

Releases this year

3

Significant stargazers

(top 24 of 26)

Profpatsch

241 followers · starred Oct 2025

Nelson Vides

34 followers · starred Jan 2021

Nicolas Morel

309 followers · starred Nov 2015

Willow (GHOST)

284 followers · starred Jan 2026