Ethereum JavaScript API

starsStars 9518
forksForks 3052
watchersWatchers 9518
current-versionCurrent version v1.3.1
total-releasesTotal releases 95
open_issues_countOpen issues 87
dateFirst release 2015-02-24
dateLatest release 2020-12-17
updateLast update 2020-12-23

web3.js - Ethereum JavaScript API

This is the Ethereum JavaScript API which connects to the Generic JSON-RPC spec.

You need to run a local or remote Ethereum node to use this library.

Please read the documentation for more.



npm install web3


yarn add web3

In the Browser

Use the prebuilt dist/web3.min.js, or build using the web3.js repository:

npm run build

Then include dist/web3.min.js in your html file. This will expose Web3 on the window object.

Or via jsDelivr CDN:

<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>


<script src="https://unpkg.com/web3@latest/dist/web3.min.js"></script>


// In Node.js
const Web3 = require('web3');

let web3 = new Web3('ws://localhost:8546');
> {
    eth: ... ,
    shh: ... ,
    utils: ...,

Additionally you can set a provider using web3.setProvider() (e.g. WebsocketProvider):

// or
web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));

There you go, now you can use it:


Usage with TypeScript

We support types within the repo itself. Please open an issue here if you find any wrong types.

You can use web3.js as follows:

import Web3 from 'web3';
const web3 = new Web3('ws://localhost:8546');

If you are using the types in a commonjs module, like in a Node app, you just have to enable esModuleInterop and allowSyntheticDefaultImports in your tsconfig for typesystem compatibility:

"compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,

Trouble shooting and known issues.

Web3 and Angular

If you are using Ionic/Angular at a version >5 you may run into a build error in which modules crypto and stream are undefined

a work around for this is to go into your node-modules and at /angular-cli-files/models/webpack-configs/browser.js change the node: false to node: {crypto: true, stream: true} as mentioned here

Another variation of this problem was an issue opned on angular-cli: https://github.com/angular/angular-cli/issues/1548


Documentation can be found at ReadTheDocs.



sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm

Building (webpack)

Build the web3.js package:

npm run build

Testing (mocha)

npm test


Please follow the Review Guidelines.

This project adheres to the Release Guidelines.


Similar libraries in other languages