wwebjs

    wwebjs/whatsapp-web.js

    A WhatsApp client library for NodeJS that connects through the WhatsApp Web browser app

    api
    automation
    bot
    bot-api
    hacktoberfest
    whatsapp
    whatsapp-api
    whatsapp-bot
    whatsapp-web
    whatsapp-web-api
    JavaScript
    Apache-2.0
    21.4K stars
    4.9K forks
    21.4K watching
    Updated 3/18/2026
    View on GitHub
    Backblaze Advertisement

    Loading star history...

    Health Score

    75

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    1

    Total contributors

    Open Issues

    36

    Generated Insights

    About whatsapp-web.js


    WWebJS Website


    npm Depfu WhatsApp_Web 2.2346.52 Discord server


    About

    A WhatsApp API client that connects through the WhatsApp Web browser app

    The library works by launching the WhatsApp Web browser application and managing it using Puppeteer to create an instance of WhatsApp Web, thereby mitigating the risk of being blocked. The WhatsApp API client connects through the WhatsApp Web browser app, accessing its internal functions. This grants you access to nearly all the features available on WhatsApp Web, enabling dynamic handling similar to any other Node.js application.

    [!IMPORTANT] It is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.

    Installation

    The module is now available on npm! npm i whatsapp-web.js

    [!NOTE] Node v18+ is required.

    QUICK STEPS TO UPGRADE NODE

    Windows

    Manual

    Just get the latest LTS from the official node website.

    npm

    sudo npm install -g n
    sudo n stable
    

    Choco

    choco install nodejs-lts
    

    Winget

    winget install OpenJS.NodeJS.LTS
    

    Ubuntu / Debian

    curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - &&\
    sudo apt-get install -y nodejs
    

    Example usage

    const { Client } = require('whatsapp-web.js');
    
    const client = new Client();
    
    client.on('qr', (qr) => {
        // Generate and scan this code with your phone
        console.log('QR RECEIVED', qr);
    });
    
    client.on('ready', () => {
        console.log('Client is ready!');
    });
    
    client.on('message', msg => {
        if (msg.body == '!ping') {
            msg.reply('pong');
        }
    });
    
    client.initialize();
    

    Take a look at example.js for another examples with additional use cases.
    For further details on saving and restoring sessions, explore the provided Authentication Strategies.

    Supported features

    FeatureStatus
    Multi Device
    Send messages
    Receive messages
    Send media (images/audio/documents)
    Send media (video)(requires Google Chrome)
    Send stickers
    Receive media (images/audio/video/documents)
    Send contact cards
    Send location
    Send buttons(DEPRECATED)
    Send lists(DEPRECATED)
    Receive location
    Message replies
    Join groups by invite
    Get invite for group
    Modify group info (subject, description)
    Modify group settings (send messages, edit info)
    Add group participants
    Kick group participants
    Promote/demote group participants
    Mention users
    Mention groups
    Mute/unmute chats
    Block/unblock contacts
    Get contact info
    Get profile pictures
    Set user status message
    React to messages
    Create polls
    Channels
    Vote in polls🔜
    Communities🔜

    Something missing? Make an issue and let us know!

    Contributing

    Feel free to open pull requests; we welcome contributions! However, for significant changes, it's best to open an issue beforehand. Make sure to review our contribution guidelines before creating a pull request. Before creating your own issue or pull request, always check to see if one already exists!

    Supporting the project

    You can support the maintainer of this project through the links below

    Disclaimer

    This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners. Also it is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.

    License

    Copyright 2019 Pedro S Lopez

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this project except in compliance with the License.
    You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    Discover Repositories

    Search across tracked repositories by name or description