Jitsi Meet

Open-source, end-to-end encrypted video conferencing you can self-host or embed into any web or mobile app.

29.5Kstars
7.9Kforks
Apache License 2.0
TypeScript

Jitsi Meet is a fully open-source video conferencing platform built on WebRTC that delivers secure, high-quality video calls directly in the browser — no accounts, no plugins, no third-party dependencies required. Developed by the Jitsi team at 8x8, it combines HD audio/video, end-to-end encryption, screen sharing, live chat, polls, and virtual backgrounds into a single cohesive platform that teams, clinicians, educators, and developers can deploy on their own infrastructure.

The architecture spans web, Android, and iOS through a shared TypeScript codebase with platform-specific variants — meaning a self-hosted instance delivers full feature parity across browsers and native mobile apps. The SFU-based Jitsi Videobridge handles the heavy media routing, while the React frontend communicates via XMPP/Jingle signaling. WebAssembly noise cancellation and TensorFlow.js virtual backgrounds run entirely client-side for privacy.

For teams that want the Jitsi experience without managing infrastructure, 8x8 offers Jitsi as a Service (JaaS) — an enterprise-managed platform with branding control, analytics, and SLA guarantees. This makes Jitsi Meet a rare open-source project that works equally well for a solo self-hoster on a $5 VPS or a multi-national enterprise routing thousands of simultaneous video sessions.

What You Get

  • WebRTC HD Audio/Video with Adaptive Bitrate - Delivers high-definition audio and video using WebRTC with automatic bandwidth adaptation, ensuring call quality degrades gracefully on constrained connections rather than dropping entirely.
  • End-to-End Encryption via Insertable Streams - Intercepts media at the WebRTC Insertable Streams API level and encrypts using Olm (@matrix-org/olm), so the Jitsi Videobridge only sees ciphertext — not your video or audio.
  • Native Android and iOS Apps - Fully featured mobile apps available on Google Play, F-Droid, and the App Store, sharing the same TypeScript codebase through React Native with platform-specific optimizations.
  • Jitsi Meet SDK for Web and React Native - Embeds a complete video conferencing session as an iframe or native component inside any web or mobile product, with a JavaScript API for programmatic control.
  • Real-Time Collaboration Tools - Integrated chat with private messaging, live polls, emoji reactions, and a collaborative Excalidraw-based whiteboard for visual brainstorming during meetings.
  • Virtual Backgrounds and Noise Cancellation - AI-powered background blur and replacement via MediaPipe selfie segmentation, plus WebAssembly-based RNNoise cancellation running entirely in the browser.
  • Screen Sharing with Multiple Sources - Share the full screen, a specific application window, or a browser tab, with simultaneous screen and camera video supported through separate filmstrip tracks.
  • Live Subtitles and Transcription - Real-time meeting transcription rendered as overlaid subtitles with caching and cleanup, accessible via the subtitles feature module.
  • Debian and Docker Self-Hosting - Official Debian packages for one-command installation on Ubuntu/Debian systems, plus a Docker Compose stack for containerized deployments with NGINX, Prosody, and Jicofo included.
  • JaaS Managed Cloud Option - 8x8 Jitsi as a Service provides enterprise-grade hosted Jitsi with custom branding, Amplitude analytics, SLA-backed uptime, and global edge infrastructure — switchable from any self-hosted instance with a single script.

Common Use Cases

  • Telehealth consultations - A solo clinician self-hosts Jitsi Meet on a VPS to conduct video appointments with patients without sharing recordings or session metadata with third-party cloud providers, leveraging E2EE for compliance.
  • Embedding video into a SaaS product - A customer support platform integrates the Jitsi Meet SDK to open in-app video sessions between agents and customers without redirecting to an external service, using the JavaScript API to control mute state and participant events.
  • University remote lectures - An institution deploys Jitsi Meet on-premises behind their SSO, hosting large lectures with polls and screen sharing while keeping all video traffic on university infrastructure.
  • Secure NGO and activist communications - Organizations operating in high-surveillance environments run self-hosted instances with E2EE enabled, ensuring that even the server operator cannot observe who is saying what.
  • Developer-run community spaces - Open source project maintainers host standing video rooms using memorable room names on their own domain, with virtual lobby and waiting room enabled for access control.
  • Corporate all-hands with recording - An enterprise uses JaaS to host branded all-hands meetings with hundreds of participants, leveraging managed scaling and built-in recording without operating their own Jitsi infrastructure.

Under The Hood

Architecture Jitsi Meet employs a feature-modular architecture where each capability — e2ee, whiteboard, subtitles, polls, breakout rooms, virtual backgrounds, and dozens more — is isolated in its own directory with predictable, consistent filenames: actions, reducer, middleware, functions, and components. Platform-specific variants use .web.ts, .native.ts, and .any.ts suffixes, a convention that keeps cross-platform shared logic centralized while allowing platform-specific divergence without conditional branching scattered throughout the codebase. Redux coordinates state across all feature modules, with typed middleware chains handling side effects and inter-feature communication. An AbstractApp and AbstractConference class hierarchy provides shared lifecycle management while enabling platform-specific rendering overrides through standard inheritance. The Webpack build enforces strict bundle size budgets at the CI level, with a CircularDependencyPlugin preventing accidental cross-module coupling from creeping in.

Tech Stack React and React Native power a unified cross-platform UI using TypeScript throughout the web and mobile codebases. Redux manages global state with feature-scoped reducers. WebRTC provides real-time audio and video transport, abstracted through lib-jitsi-meet, with XMPP and Jingle handling signaling via a Prosody XMPP server. End-to-end encryption operates at the Insertable Streams API layer using the Olm cryptographic library. TensorFlow.js and MediaPipe enable virtual background segmentation and face landmark detection, while WebAssembly powers noise cancellation through RNNoise. MUI and Emotion handle component styling and theming, i18next manages localization across dozens of languages, Excalidraw powers the collaborative whiteboard, and Amplitude provides analytics in both web and React Native deployments.

Code Quality The WebDriver.io end-to-end test suite covers an extensive range of scenarios including media controls, moderation, lobby flows, breakout rooms, polls, virtual backgrounds, iframe API behavior, and accessibility — organized with page object patterns and shared participant helper utilities. TypeScript is applied consistently throughout with strict typing and comprehensive JSDoc comments on all exports. ESLint enforces code style via a custom Jitsi configuration, with CI running both linting and Lua plugin tests. Circular dependency detection is baked into the production Webpack build, surfacing architectural violations before they ship. A small number of legacy @ts-expect-error annotations indicate a handful of areas still in transition, but overall the typing discipline is strong and the test breadth is impressive for a project of this scale.

What Makes It Unique The .web.ts / .native.ts / .any.ts file suffix convention is a genuinely elegant solution to building a multi-platform application from a single repository without forking logic or maintaining separate codebases — each feature directory contains only the variants it needs, and the build system selects automatically. The E2EE implementation is technically sophisticated: it intercepts media at the browser’s Insertable Streams API before it reaches the SFU, so the Jitsi Videobridge routes encrypted data it cannot decrypt — a rare design that makes the server genuinely unable to eavesdrop. The JaaS bridge, which converts any self-hosted Jitsi instance to the 8x8 managed cloud via a single shell script, is an operationally innovative escape hatch that few open-source projects provide.

Self-Hosting

Jitsi Meet is released under the Apache License 2.0, one of the most permissive open-source licenses available. This means you can use it commercially, modify it, distribute it, and include it in proprietary products without any obligation to open-source your own code. There is no copyleft requirement and no restriction on commercial use — a self-hosting organization or a company embedding the SDK pays nothing to the project and owes no code back. The only obligations are to retain copyright notices and the license text, and not use Jitsi or 8x8 trademarks without permission.

Running Jitsi Meet yourself requires meaningful infrastructure investment. A production deployment consists of at minimum four services: Jitsi Meet (the web frontend), Prosody (XMPP signaling server), Jicofo (conference focus component), and Jitsi Videobridge (the SFU that routes media). For small deployments, these can run on a single mid-range server, but the Videobridge is CPU and bandwidth-intensive — large concurrent meetings demand horizontal scaling of videobridge nodes behind a load balancer. You are responsible for TLS certificates, DNS, operating system updates, monitoring, and backup. The official Debian packages and Docker Compose stack make initial installation straightforward, but ongoing operations require familiarity with Linux system administration and network configuration.

Choosing self-hosting over 8x8’s Jitsi as a Service means accepting the full operational burden in exchange for complete data sovereignty. JaaS provides managed global infrastructure, automatic scaling, SLA-backed uptime, branded meeting rooms, built-in analytics, and enterprise support channels — none of which come with a self-hosted instance. For organizations that cannot share video traffic with third parties (healthcare, legal, government), self-hosting is often the right call despite the overhead. For teams that want Jitsi’s open-source foundation but need reliability guarantees and minimal ops burden, JaaS offers a middle path: the same technology, professionally operated.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack

No spam. Unsubscribe anytime.

Join 750+ subscribers
No spam. Unsubscribe anytime.

Search