<h1 align="center">
  <img src="https://cdn.videosdk.live/docs/images/javascript/api_ref/js_api_ref.png"/><br/>
</h1>

<p align="center">
  <a href="https://www.npmjs.com/package/@videosdk.live/js-sdk"><img src="https://img.shields.io/npm/dw/@videosdk.live/js-sdk.svg?style=for-the-badge" alt="NPM downloads"></a>
  <a href="https://www.npmjs.com/package/@videosdk.live/js-sdk"><img src="https://img.shields.io/npm/v/@videosdk.live/js-sdk/latest.svg?style=for-the-badge" alt="NPM latest version"></a>
   <a href="https://discord.gg/kgAvyxtTxv">
<img src="https://img.shields.io/discord/734858252939952248?logo=discord&style=for-the-badge" />
</a>
<a href="http://youtube.com/videosdk?sub_confirmation=1">
<img src="https://img.shields.io/youtube/channel/subscribers/UCuY7JzXnpp874oa7uQbUwsA?logo=Youtube&style=for-the-badge" />
</a>
</p>

# VideoSDK JavaScript SDK 🚀

Build fast, scalable, and customizable real-time video applications for the web using **VideoSDK**.  
Whether you’re creating a video conferencing app, virtual classroom, or live streaming platform, VideoSDK provides a robust foundation with minimal setup.

---

## Why VideoSDK?

VideoSDK enables developers to ship production-grade real-time communication features quickly.

- Supports **5,000+ participants**
- Low-latency audio, video, and data streams
- Fully customizable UI and workflows
- Works across modern browsers
- Designed for scale and reliability

---

## 🌍 Browser Support

VideoSDK supports all major modern browsers.

📖 Full compatibility guide:  
https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/supported-browser

---

## 🎯 Live Demo

Try the live demo to see VideoSDK in action:  
https://demo.videosdk.live/

---

## ⚙️ Installation

You can integrate the VideoSDK JavaScript SDK using either a CDN or a package manager.

### 📦 Option 1: CDN (Quick Setup)

```js
<html>
  <head></head>
  <body>
    <script src="https://sdk.videosdk.live/js-sdk/0.9.0/videosdk.js"></script>
  </body>
</html>
```

### 📦 Option 2: npm / yarn (Recommended)

```js
npm install @videosdk.live/js-sdk
```

```js
yarn add @videosdk.live/js-sdk
```

<br/>

---

## 🔥 Meeting Features

Unlock a suite of powerful features to enhance your meetings:

| Feature                        | Documentation                                                                                                                | Description                                                                                                      |
|--------------------------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
| 📋 **Precall Setup**           | [Setup Precall](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/setup-call/precall)                   | Configure audio, video devices and other settings before joining the meeting.                                              |
| ⏳ **Waiting Lobby**           | [Waiting Lobby](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/setup-call/waiting-lobby)             | Virtual space for participants to wait before joining the meeting.                                               |
| 🤝 **Join Meeting**            | [Join Meeting](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/setup-call/join-meeting)                | Allows participants to join a meeting.                                                                 |
| 🎤 **Toggle Mic**         | [Mic Control](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/mute-unmute-mic)          | Toggle the microphone on or off during a meeting.                                                                  |
| 📷 **Toggle Camera**           | [Camera Control](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/on-off-camera)         | Turn the video camera on or off during a meeting.                                                                  |
| 🖥️ **Screen Share**            | [Screen Share](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/screen-share)          | Share your screen with other participants during the call.                                                      |
| 📸 **Image Capture**           | [Image Capturer](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/image-capturer)        | Capture images of other participant from their video stream, handy for Video KYC and identity verification scenarios.     |
| 🔌 **Change Input Device**     | [Switch Input Devices](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/change-input-device)   | Switch between different audio and video input devices.                                                         |
| 🔊 **Change Audio Output**     | [Switch Audio Output](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/handling-media/change-audio-ouptut-device) | Select an output device for audio during a meeting.                                                                |
| ⚙️ **Optimize Video Track**         | [Video Track Optimization](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/render-media/optimize-video-track)                                  | Enhance the quality and performance of media tracks.                                                            |
| ⚙️ **Optimize Audio Track**         | [Audio Track Optimization](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/render-media/optimize-audio-track)                                       | Enhance the quality and performance of media tracks.                                                            |
| 💬 **Chat**                    | [In-Meeting Chat](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/collaboration-in-meeting/pubsub)      | Exchange messages with participants through a Publish-Subscribe mechanism.                                                   |
| 📝 **Whiteboard**              | [Whiteboard](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/collaboration-in-meeting/whiteboard)      | Collaborate visually by drawing and annotating on a shared whiteboard.                                           |
| 📁 **File Sharing**            | [File Sharing](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/collaboration-in-meeting/upload-fetch-temporary-file) | Share files with participants during the meeting.                                                               |
| 📼 **Recording**               | [Recording](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/recording/Overview)                | Record the meeting for future reference.                                                                        |
| 📡 **RTMP Livestream**         | [RTMP Livestream](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/live-streaming/rtmp-livestream)        | Stream the meeting live to platforms like YouTube or Facebook.                                                  |
| 📝 **Real-time Transcription**           | [Real-time Transcription](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/transcription-and-summary/realtime-transcribe-meeting) | Generate real-time transcriptions of the meeting.                                                               |
| 🔇 **Toggle Remote Media**     | [Remote Media Control](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/control-remote-participant/remote-participant-media) | Control the microphone or camera of remote participants.                                                        |
| 🚫 **Mute All Participants**   | [Mute All](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/control-remote-participant/mute-all-participants) | Mute all participants simultaneously during the call.                                                           |
| 🗑️ **Remove Participant**      | [Remove Participant](https://docs.videosdk.live/javascript/guide/video-and-audio-calling-api-sdk/control-remote-participant/remove-participant) | Eject a participant from the meeting. |

<br/>

---

## 🧪 Sample Application

Explore a fully functional JavaScript example that demonstrates real-world implementation of the VideoSDK:

👉 https://github.com/videosdk-live/videosdk-rtc-javascript-sdk-example







