Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



42 Commits

Repository files navigation


Whisper is a dark communications protocol that is parallel to the decentralized web3 vision of Ethereum. The whisper-tools library is a stand-alone API wrapper over the shh RPC calls.


Bring whisper-tools into your project by installing it from npm.

npm i whisper-tools

You then import the WhisperApi class and instantiate into a new shh object.

import { WhisperApi } from "whisper-tools";

const shh = new WhisperApi("http://localhost:8545");

const main = async () => {
    const info = await;
    const keypairId = await shh.newKeyPair();


or if you are using plain old JS...

const { WhisperApi } = require("whisper-tools");

Notice! You must be running geth with the following flags enabled to use this library.

geth --shh --rpc --nodiscover

You can remove --nodiscover if you would like to try to connect to other nodes. But be wary, it will also start syncing the Ethereum mainnet.

If you are using this library from a development server (such as create-react-app), you will need to enable cors on geth with the flag --rpccorsdomain "*".


Doesn't the web3.js library have whisper?

Yes. This is an alternative that may be better for your use case, if you intend to only use Whisper and not the other functionality that web3 brings in. At the time of writing, this package also makes use of the latest v.6.0 Whisper API while web3.js still uses the older v.5.0.