Jitsi

jitsi.org
Jitsi

Encrypted, free and open source video calling app, which does not require creating an account/ providing any personal details. Available as a web app, and native app for Windows, MacOS, Linux, Android and iOS. You can use the public Jitsi instance, self-host your own, or use a community hosted instance.

Open Source

Jitsi Privacy Policy

Privacy Policy Summary

  • There is a date of the last update of the agreements
  • This service collects your IP address, which can be used to view your approximate location
  • The service provides a complaint mechanism for the handling of personal data
  • Your personal data is used for limited purposes
  • The service can delete your account without prior notice and without a reason
  • You maintain ownership of your data
  • Prohibits the posting of pornographic content
  • The service provider makes no warranty regarding uninterrupted, timely, secure or error-free service
  • This service throttles your use
  • This service does not condone any ideas contained in its user-generated contents
  • This service prohibits users sending chain letters, junk mail, spam or any unsolicited messages
  • They may stop providing the service at any time
  • You waive your right to a class action.
  • You have the right to leave this service at any time
  • Users agree not to use the service for illegal purposes
  • This service prohibits users from attempting to gain unauthorized access to other computer systems
  • If you offer suggestions to the service, they may use that without your approval or compensation, but they do not become the owner
  • Failure to enforce any provision of the Terms of Service does not constitute a waiver of such provision
  • Any liability on behalf of the service is only limited to USD $10
  • This service does not guarantee that it or the products obtained through it meet the users' expectations or requirements
  • Invalidity of any portion of the Terms of Service does not entail invalidity of its remainder
  • The service provides information about how they intend to use your personal data
  • The service provides details about what kinds of personal information they collect
  • The court of law governing the terms is in New York, USA.
  • The court of law governing the terms is in a jurisdiction that is less friendly to user privacy protection.
  • Your personal data is not sold
  • The service is provided 'as is' and to be used at the users' sole risk
  • This service is only available to users over a certain age
  • Business Users are solely responsible for claims made against the service and agree to indemnify and hold harmless the service.
  • The service may change its terms at any time, but the user will receive notification of the changes.
  • Third parties are involved in operating the service
  • The copyright license that users grant this service is limited to the parties that make up the service's broader platform.
  • The service allows you to use pseudonyms
  • This service assumes no liability for any losses or damages resulting from any matter relating to the service
  • User logs are deleted after a finite period of time

Score

B

Documents

Domains Covered by Policy

  • jitsi.org
  • meet.jit.si

About the Data

This data is kindly provided by tosdr.org. Read full report at: #2201

Jitsi Source Code

Author

jitsi

Description

Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.

#debian#deep-video#jitsi#jitsi-meet#scalable-video-conferences#sfu#video#video-communication#video-conferencing#webrtc

Homepage

https://jitsi.org/meet

License

Apache-2.0

Created

16 Dec 13

Last Updated

29 Jul 26

Latest version

vtesting1.2.3

Primary Language

TypeScript

Size

378,348 KB

Stars

29,663

Forks

7,973

Watchers

29,663

Language Usage

Language Usage

Star History

Star History

Top Contributors

Recent Commits

  • Jaya Allamsetty (28 Jul 26)

    chore(deps) lib-jitsi-meet@latest https://github.com/jitsi/lib-jitsi-meet/compare/v2177.0.0+2afe0c0c...v2180.0.0+edf33a3b

  • Saúl Ibarra Corretgé (17 Jul 26)

    refactor(low-bandwidth-mode): rename audio-only feature to low-bandwidth-mode Rename the "audio-only" feature to "low-bandwidth-mode" to match how it is presented as an option in the UI ("Low bandwidth"). The user-facing strings were already worded "Low bandwidth"; this aligns the code identifiers, Redux state, config, public API and translation keys with that naming. Renamed: - Module react/features/base/audio-only -> react/features/base/low-bandwidth-mode and Redux state key features/base/audio-only -> features/base/low-bandwidth-mode. - Symbols: SET_AUDIO_ONLY, setAudioOnly/toggleAudioOnly, IAudioOnlyState, the action payload field, selectors/props (_audioOnly, _isAudioOnly), isVideoMutedByAudioOnly, mutism authorities, logger, AudioOnlyButton, IconAudioOnly(Off). - Public API: external_api command set-audio-only and event audio-only-changed, config option startAudioOnly, feature flag audio-only.enabled, analytics events/actions, the React Native SDK export and the native Android/iOS SDK builder methods (setLowBandwidthMode) and their startLowBandwidthMode config override. - Translation keys across all lang files and their code consumers. Left untouched (unrelated concepts sharing the "audio only" wording): audio-only screen sharing, mic device-acquisition errors (audioOnlyError), AUDIO_ONLY_SCREEN_SHARE_NO_TRACK and the SIP_AUDIO_ONLY dial-in type.

  • Calin-Teodor (28 Jul 26)

    ci(rnsdk): allow remote and git deps so npm 12 can install

  • Joshua Irmer (28 Jul 26)

    fix(external-api): regression in virtual background toggle command (#17657)

  • José Luís Andrade (28 Jul 26)

    lang: Add translations to Portuguese (#17642)

  • alwxezwei-del (28 Jul 26)

    lang: Add missing Russian (ru) translations for mobile (#17645) Co-authored-by: Alexey Bryakov <[email protected]>

  • Christoph Settgast (27 Jul 26)

    lang: update German translation

  • Jaya Allamsetty (23 Jul 26)

    fix(audio-translation): reset translation state on any request failure On a failed request the redux state and lib-jitsi-meet's internal language were left set, so the UI stayed "enabled" and re-selecting the same language was deduped to a no-op. Reset on every error (not only subscription-limit) via clearAudioTranslation, which also calls conference.clearTranslation() to clear LJM's state so re-enabling works.

  • Jaya Allamsetty (23 Jul 26)

    fix(audio-translation): support translation in breakout rooms Resolve the receiver's actual room (breakout or main) from get_occupant_by_real_jid so a breakout subscription validates its sender and computes audioTranslationRequests there, instead of failing item-not-found against the main room. Also prune breakout subscriptions on occupant-leave. Needs the breakout_rooms_component option on the audiotranslation component.

  • Hugo Lavernhe (27 Jul 26)

    feat(external-api): add set-participant-properties command (#17639) * feat(external-api): add set-participant-properties command * use public JitsiConference API for setting participant properties

  • damencho (27 Jul 26)

    chore(deps) lib-jitsi-meet@latest https://github.com/jitsi/lib-jitsi-meet/compare/v2176.0.0+196bb825...v2177.0.0+2afe0c0c

  • Jaya Allamsetty (23 Jul 26)

    feat(audio-translation): React Native UI (ducking, language selector, indicators) * feat(audio-translation): duck original audio natively via track playout gain Extract the web duck rule (effective language + translated counterpart present) into shared selectors and apply it on native through react-native-webrtc's per-track _setVolume, since native has no per-track audio elements. Restores the user-selected slider volume on un-duck. * feat(audio-translation): native language selector, toolbar and menu entry points Adds the overflow-menu button, an audio-translation language selector screen (per-participant when opened from the remote video menu) and the AUDIO_TRANSLATION_ENABLED feature flag for SDK embedders. * feat(audio-translation): native per-participant indicator and meeting label Adds the three-treatment translation badge to the native thumbnail's bottom indicators (remote, non-screenshare tiles only) and an audio-translation label with expanded-label popup to the title bar. * fix(audio-translation): address adversarial review of the native UI - Duck by composing with the user's chosen volume via min(), so a participant the user silenced or quietened is not made audible again by ducking. Shared by the web AudioTrack and the native ducking middleware through getDuckedVolumeForParticipant(). - Gate every native surface (overflow button, participant menu, meeting label, thumbnail badge) on AUDIO_TRANSLATION_ENABLED by folding the flag into the shared isAudioTranslationAvailable predicate; previously only the buttons checked it, so a flag-off client still lit the label and badge. - Make the web duck/restore symmetric with respect to the enable flag by keying the restore on config-object presence rather than .enabled, so flipping the flag mid-call cannot pin an audio element at the ducked volume. - Make the native TranslationIndicator presentational: the thumbnail computes the treatment once and passes it, instead of the connected indicator re-selecting it (also drops an ownProps: any). - Pass an explicit participantId to the conference-wide language screen so React Navigation param-merging cannot scope it to a stale participant. * docs(audio-translation): tighten comments; note why ducking skips the availability gate

  • Saúl Ibarra Corretgé (21 Jul 26)

    chore(deps) update react-native-webrtc

  • Calin-Teodor (22 Jul 26)

    feat(ios/sdk): clear logs and comments

  • Hugo Lavernhe (12 Jul 26)

    feat: add iceConnected to connection-stats response

  • Calin-Teodor (21 Jul 26)

    feat(ios/sdk): add react native lifecycle methods

  • Hugo Lavernhe (17 Jul 26)

    feat(external-api): add includeHidden and isJibri/isJigasi to getRoomsInfo

  • dependabot[bot] (21 Jul 26)

    chore(deps-dev): bump webpack-dev-server from 5.2.5 to 5.2.6 Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.5 to 5.2.6. - [Release notes](https://github.com/webpack/webpack-dev-server/releases) - [Changelog](https://github.com/webpack/webpack-dev-server/blob/v5.2.6/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.5...v5.2.6) --- updated-dependencies: - dependency-name: webpack-dev-server dependency-version: 5.2.6 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <[email protected]>

  • Jaya Allamsetty (21 Jul 26)

    chore(deps) lib-jitsi-meet@latest https://github.com/jitsi/lib-jitsi-meet/compare/v2175.0.0+afc669e7...v2176.0.0+196bb825

  • Jaya Allamsetty (20 Jul 26)

    feat(audio-translation): per-participant translation indicators (#17619) * feat(audio-translation): ingest per-participant translation state Add the redux state and conference-event ingestion for the two per-participant translation signals, plus the selectors the UI reads. - receivingSources: translated sources the bridge is forwarding to us, driven by JitsiConferenceEvents.TRANSLATED_SOURCE_SENDING_CHANGED. - translationListeners: remote participants translating the local user, driven by JitsiConferenceEvents.AUDIO_TRANSLATION_LISTENERS_CHANGED (directed push). - Both are reset when the conference goes away. - Selectors: isParticipantAudioTranslationActive (from translationListeners), isReceivingTranslationFrom, getTranslationTreatment (TranslationTreatment enum), and isAudioTranslationActiveInMeeting. * feat(audio-translation): per-participant translation status indicators Add the meeting-level label and the three-state per-participant thumbnail badge. - TranslationLabel: primary-blue label in the conference labels cluster (next to recording/transcribing), shown while translation is active in the meeting. - TranslationIndicator: self-connecting thumbnail badge with three treatments via getTranslationTreatment — ENABLED (outlined), RECEIVING (filled), BOTH (filled + corner dot); NONE renders nothing. Registered in StatusIndicators (filmstrip and tile view). - Tooltip strings for the label and the three indicator treatments. * feat(audio-translation): directed translation-listeners push (prosody) Replace the room-metadata audioTranslationParticipants broadcast with a per-sender directed push, so each endpoint learns only who translates it (better scale and privacy, and fixes the semantic bug where the badge showed if X translated anyone). - Invert the receiver->sender subscription map into { [senderId] = { receiverId } } and send a directed <translation-listeners> message (sorted JSON array) to each sender. Gated like the jicofo aggregate (empty lists when disabled/vetoed). - Per-sender change detection via last_sent_listeners: iterate the union of senders with a list now or last time; send only on change; an empty array clears a sender whose last listener left, then its tracker entry is dropped. - Drop compute_participants and the jitsiMetadata.audioTranslationParticipants write; keep the jicofo-only audioTranslationRequests aggregate unchanged. * refactor(audio-translation): isolate directed listeners push from publish() Move the per-sender <translation-listeners> push into its own publish_listeners() so the jicofo-facing publish() (the audioTranslationRequests aggregate) is left byte-for-byte identical to master — making it obvious in review that the jicofo publish path is unchanged. Both remain driven by the same debounced task. * fix(audio-translation): only record delivered listener pushes in tracker Update last_sent_listeners only when the directed message was actually sent; for a missing occupant the entry is dropped so a sender rejoining with the same endpoint id gets a fresh push instead of being change-suppressed. * test(audio-translation): cover directed translation-listeners push * perf(audio-translation): maintain inverted listeners map incrementally Keep an inverted { sender -> set<receiver> } map in lockstep with the forward subscription map instead of rebuilding it from scratch on every publish. Only senders flagged dirty since the last publish are sorted, encoded and change-checked, so the directed listeners push costs work proportional to what changed rather than O(subscriptions) per publish. * fix(filmstrip): show the translation indicator only in the bottom status bar * fix(audio-translation): ignore sending changes for our own translated source The bridge broadcasts SyntheticSourceSendingChangeEvent to every endpoint, including the translated participant itself; drop events whose source owner is the local participant so the local thumbnail never shows the indicator, and gate the indicator off the local thumbnail entirely. * feat(audio-translation): gate sending-change ingestion behind a config flag The bridge currently emits only sending=true notifications, which would leave the receiving indicator stuck on. Ignore the events unless config.audioTranslation.enableSendingChangeEvents is set. --------- Co-authored-by: Boris Grozev <[email protected]>

  • Jaya Allamsetty (20 Jul 26)

    chore(deps) lib-jitsi-meet@latest https://github.com/jitsi/lib-jitsi-meet/compare/v2172.0.0+cf3a8710...v2175.0.0+afc669e7

  • bgrozev (16 Jul 26)

    test(prosody): split test config into extensible fragments (#17622) * test(prosody): split the config into fragments so it can be extended. Private plugin repos can build on the test image, keep the fragments and re-declare conference.localhost with extra modules appended. Add a build:test-image script producing the jitsi-meet-prosody-test:latest base image. * fix(prosody): check nick and jid independently in muc#admin filter filter_admin_set in mod_muc_meeting_id resolved an item's target from its nick first and only fell back to the jid when no nick was present. Prosody's core handler applies an affiliation change by jid regardless of any nick, so an item carrying the real focus jid together with a non-matching nick was checked against the harmless nick but applied to the focus jid. Check the nick and the jid independently, and match the jid directly with is_focus_jid rather than resolving it through the current occupants. Adds a test covering an outcast item that carries the focus jid alongside a decoy nick, asserting focus is not evicted. * test(lobby): cover admin-set nick reservation kicking before authorization handle_admin_query_set_command_item's nickname-reservation branch used to kick the current holder of a requested nick via set_role(true, ...) before set_affiliation ever checked whether the sender was allowed to act, letting an unauthorized, non-occupant sender remove any participant by naming their nick. The fix reorders this so set_role runs with the real sender and only proceeds past a failed permission check. Add tests covering both a regular participant and focus. * test(prosody): add sendJingleIq client helper Builds a Jingle session-accept/source-add IQ (XEP-0166/0339) addressed to an occupant full JID, for exercising modules that hook pre-iq/full to inspect media types. * test(prosody): add sendRoomSubject client helper Sends a groupchat message carrying only a <subject> element to set the MUC room subject, for exercising modules that hook the subject broadcast. * test(prosody): support mucContent children in joinRoom Adds a mucContent option to joinRoom that places child elements (e.g. a <billingid>) inside the join presence's muc <x>, as opposed to extensions which are siblings of it. * test(prosody): wrap joinRoom signature to satisfy max-len

  • Hugo Lavernhe (15 Jul 26)

    Fix returns JSDoc for promise types

  • bgrozev (14 Jul 26)

    feat(transcription): add diarize flag advertised as a participant property (#17614) * feat(transcription): add diarize flag advertised as a participant property * docs(transcription): note diarize flag takes effect only at join time * doc(transcription): document the diarize config option in config.js

  • Saúl Ibarra Corretgé (14 Jul 26)

    fix(i18n): force links in translated HTML to open in a new tab translateToHTML now forces every anchor to target="_blank" with rel="noopener noreferrer" via an afterSanitizeAttributes hook on a dedicated DOMPurify instance, and narrows ALLOWED_ATTR to just href. This prevents a translation string from navigating the user out of an active meeting via target="_self" (or "_top"/"_parent", or by omitting target, which defaults to same-context navigation) and pairs the new tab with an anti-tabnabbing rel. The dedicated instance keeps the hook from leaking into the shared DOMPurify used for branding SVGs. Also drop the now-inert rel="security" from the insecureRoomNameWarningWeb string across all locales: "security" is not a recognized link-relation token, so browsers ignored it and it provided no protection. While there, repair a Swedish mistranslation where the "target" attribute name had been translated to "-målet", which had produced invalid markup.

  • bgrozev (13 Jul 26)

    test(prosody): cover restrict_room_creation on the main MUC (#17597) Enable restrict_room_creation on conference.localhost (matching prod, which already sets it alongside lobby and breakout) and add tests asserting an anonymous/non-focus client cannot create a room by joining first, while focus still can. Also adds a wait_for_host test documenting the XEP-0045 creator-bypass on the isolated test component, which intentionally has no room-creation restriction.

  • Edgars Voroboks (10 Jul 26)

    fix(lang): Update Latvian language translation

  • Дамян Минков (10 Jul 26)

    fix(participants-pane): close context menus on outside click (#17604) * fix(participants-pane): close context menus on outside click Enable FocusOn-based outside-click handling for participant context menus in both the main room participants pane and breakout room participant list. - Add onClickOutside prop to ContextMenu, separate from onDrawerClose, so the FocusOn path and the Drawer onClose path use distinct callbacks and neither interferes with the other. - Fix the stale closure in removeFocus (wrong dep was [onMouseLeave]; now correctly [onClickOutside, onDrawerClose]). - Pass scrollLock={false} and noIsolation={true} to FocusOn so enabling the trap does not lock pane scroll or aria-hide the rest of the participants pane. - Enable activateFocusTrap and onClickOutside in ParticipantContextMenu, FakeParticipantContextMenu, and RoomParticipantContextMenu for the non-thumbnail (participants pane) case. - onClickOutside always uses force=true to bypass the isMouseOverMenu guard in lowerMenu, ensuring a click outside always dismisses the menu. The overflow-drawer path (mobile/narrow) is handled by Drawer's existing backdrop onClose and required no changes. * fix(participants-pane): extract onClickOutside into useCallback Avoids inline arrow function in JSX prop (react/jsx-no-bind).

  • damencho (10 Jul 26)

    fix(reactions,polls,subtitles): handle unexpected field types in endpoint messages - reactions: new Set(data.reactions) throws when reactions is not iterable (e.g. a number); guard with Array.isArray, fall back to empty array - polls: answers.slice() throws when answers is not an array; same guard - subtitles: destructuring json.participant throws when null; use nullish coalescing; json.transcript[0] throws when transcript is null/empty; bail early

  • Shivam Saini (10 Jul 26)

    fix(welcome): disable animated meeting name once user input is present * fix(welcome): disable animated meeting name once user input is present * fix(welcome): fix lint errors in AbstractWelcomePage --------- Co-authored-by: damencho <[email protected]>

Jitsi Security

5.6/10

Repo Security Summary

Updated 13 Jul 26

  • Maintained 10/10
  • Code-Review 10/10
  • Dangerous-Workflow 10/10
  • CII-Best-Practices 0/10
  • Security-Policy 10/10
  • Token-Permissions 0/10
  • License 10/10
  • Binary-Artifacts 6/10
  • Branch-Protection N/A
  • Packaging 10/10
  • Signed-Releases 0/10
  • Pinned-Dependencies 3/10
  • Fuzzing 0/10
  • SAST 0/10

Security Advisories (5)

Jitsi Website

Website

Free Video Conferencing Software for Web & Mobile | Jitsi

Learn more about Jitsi, a free open-source video conferencing software for web & mobile. Make a call, launch on your own servers, integrate into your app, and more.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address 172.64.154.22
  • Location San Francisco, California, United States of America, NA
  • ISP CloudFlare Inc.
  • ASN AS13335

Associated Countries

  • US US
  • CA CA
  • FR FR

Safety Score

Website marked as safe

100%

Blacklist Check

jitsi.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Jitsi Reviews

More Secure Conference Calls

  • Jami

    Jami

    jami.net

    A free and open source, distributed video, calling and screenshare platform with a focus on security. Jami is completely peer-to-peer, and has full end-to-end encryption with perfect forward secrecy for all communications, complying with the X.509 standard. Supported natively on Windows, macOS, iOS, GNU/Linux, Android and Android TV. Video quality is quite good, but very dependent on network speeds, some of the apps are lacking in features.

About the Data: Jitsi

API

You can access Jitsi's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/jitsi

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Jitsi

Help your friends compare Secure Conference Calls, and pick privacy-respecting software and services.
Share Jitsi and Awesome Privacy with your network!

View Secure Conference Calls (2)