# web3/web3.js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/web3-web3-js).**

19,966 stars · 5,090 forks · TypeScript · other · archived

## Links

- GitHub: https://github.com/web3/web3.js
- Homepage: https://web3js.org/
- awesome-repositories: https://awesome-repositories.com/repository/web3-web3-js.md

## Topics

`abi-decoders` `abi-encoders` `api` `ethereum` `javascript` `typescript` `web3` `web3js`

## Description

web3.js is a comprehensive TypeScript library designed to facilitate interaction with Ethereum-compatible blockchain networks. It serves as a foundational toolkit for decentralized applications, providing the necessary interfaces to query network state, manage cryptographic identities, and execute smart contract transactions. By abstracting the complexities of blockchain communication, the library enables developers to integrate decentralized logic directly into their applications.

The library distinguishes itself through a modular architecture that prioritizes extensibility and flexible connectivity. It utilizes a provider-based model that allows applications to switch between injected browser wallets, local nodes, and remote network endpoints. Developers can further customize behavior through a middleware-driven request interception system and a plugin architecture, which supports the addition of custom methods and specialized network standards without modifying the core codebase.

The project covers a broad functional surface, including robust support for ABI-based data encoding, real-time event monitoring via persistent subscriptions, and secure local keystore management for signing transactions. It also provides utilities for decentralized naming resolution, transaction lifecycle tracking, and smart contract lifecycle management, including deployment and typed interface generation.

The library is structured as a collection of modular packages, allowing developers to optimize bundle sizes by importing only the specific functionality required for their environment.

## Tags

### Web Development

- [Ethereum Client Libraries](https://awesome-repositories.com/f/web-development/ethereum-client-libraries.md) — Provides a comprehensive library for interacting with Ethereum nodes, managing accounts, and executing smart contract transactions.
- [Blockchain RPC APIs](https://awesome-repositories.com/f/web-development/api-management-tools/api-development-management/api-documentation/blockchain-rpc-apis.md) — Sends requests to decentralized nodes to manage network interactions and execute transactions using JSON-RPC. ([source](https://docs.web3js.org/))
- [Contract Call Encoders](https://awesome-repositories.com/f/web-development/smart-contract-environments/contract-call-simulators/contract-call-encoders.md) — Converts function names and parameters into hexadecimal format for executing smart contract transactions and queries. ([source](https://docs.web3js.org/api/web3-eth-abi/function/encodeFunctionCall))
- [Smart Contract Environments](https://awesome-repositories.com/f/web-development/smart-contract-environments.md) — Executes functions on smart contracts by encoding calls, decoding logs, and managing contract instances.
- [Smart Contract Libraries](https://awesome-repositories.com/f/web-development/smart-contract-libraries.md) — Invokes read-only functions or submits state-changing transactions to interact with decentralized logic. ([source](https://docs.web3js.org/guides/getting_started/quickstart))
- [Request Interception Middleware](https://awesome-repositories.com/f/web-development/request-interception-middleware.md) — Implements middleware to modify RPC requests and responses before they reach the blockchain network. ([source](https://docs.web3js.org/guides/web3_plugin_guide/plugin_authors))
- [Contract Call Simulators](https://awesome-repositories.com/f/web-development/smart-contract-environments/contract-call-simulators.md) — Simulates smart contract function execution to estimate gas usage and validate logic without broadcasting. ([source](https://docs.web3js.org/api/web3/namespace/rpcMethods))
- [Bundle Optimizers](https://awesome-repositories.com/f/web-development/bundle-optimizers.md) — Reduces bundle size through selective imports and modular package structure. ([source](https://docs.web3js.org/guides/advanced/tree_shaking))

### Networking & Communication

- [Blockchain Node APIs](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/decentralized-blockchain-technologies/blockchain-node-apis.md) — Establishes communication with decentralized networks using HTTP, WebSockets, or IPC protocols. ([source](https://docs.web3js.org/glossary))
- [Blockchain Transaction Executors](https://awesome-repositories.com/f/networking-communication/transaction-subscriptions/blockchain-transaction-executors.md) — Submits value transfers and contract interactions to the network for state updates. ([source](https://docs.web3js.org/guides/web3_eth/eth))
- [Decentralized Naming Resolvers](https://awesome-repositories.com/f/networking-communication/decentralized-naming-resolvers.md) — Translate human-readable names into blockchain addresses, public keys, or content hashes and retrieve associated metadata like text records or time-to-live values. ([source](https://docs.web3js.org/guides/ens/))
- [Contract Data Decoders](https://awesome-repositories.com/f/networking-communication/binary-data-encoding/contract-data-decoders.md) — Translates binary ABI-encoded data from function returns and logs into readable native types. ([source](https://docs.web3js.org/libdocs/ABI))
- [Blockchain Integration](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/decentralized-blockchain-technologies/blockchain-integration.md) — Initializes connections to blockchain nodes and synchronizes account states and network changes in real time. ([source](https://docs.web3js.org/guides/dapps/intermediate-dapp))
- [Decentralized Domain Resolvers](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/decentralized-blockchain-technologies/decentralized-domain-resolvers.md) — Provides utilities for resolving human-readable names like ENS into blockchain addresses. ([source](https://docs.web3js.org/api))
- [JSON-RPC Interfaces](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/remote-procedure-call-frameworks/json-rpc-interfaces.md) — Communicates with blockchain nodes by serializing requests and responses into standardized JSON-RPC messages.
- [Message Encoders and Decoders](https://awesome-repositories.com/f/networking-communication/message-encoders-and-decoders.md) — Encodes and decodes complex data structures and function signatures for blockchain communication. ([source](https://docs.web3js.org/api))
- [Real-time Data Subscriptions](https://awesome-repositories.com/f/networking-communication/real-time-data-subscriptions.md) — Maintains persistent connections to receive asynchronous updates and event notifications from blockchain nodes. ([source](https://docs.web3js.org/api/web3-core))
- [Address Checksum Validators](https://awesome-repositories.com/f/networking-communication/network-addressing/network-address-validators/address-checksum-validators.md) — Applies checksums to blockchain addresses to prevent errors and ensure standard formatting compatibility. ([source](https://docs.web3js.org/libdocs/Utils))
- [Connectivity Verifiers](https://awesome-repositories.com/f/networking-communication/network-clients/connectivity-verifiers.md) — Check connectivity, peer counts, and protocol versions to ensure the client is synchronized and communicating with the network correctly. ([source](https://docs.web3js.org/api/web3-types))
- [Network Connectivity Configurations](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-management/dns-connectivity-management/network-connectivity-configurations.md) — Configures communication interfaces for connecting to blockchain nodes via various transport protocols. ([source](https://docs.web3js.org/libdocs/Net))
- [Request Batching](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/network-traffic-management/request-batching.md) — Executes batch requests to reduce latency and minimize overhead when interacting with blockchain nodes. ([source](https://docs.web3js.org/libdocs/Personal))

### Security & Cryptography

- [Account Management](https://awesome-repositories.com/f/security-cryptography/account-management.md) — Manages cryptographic key pairs and keystores for secure blockchain authentication and transaction signing. ([source](https://docs.web3js.org/api/web3-types))
- [Blockchain Key Management](https://awesome-repositories.com/f/security-cryptography/cryptographic-key-management/blockchain-key-management.md) — Generates, imports, and secures blockchain key pairs for signing transactions and verifying identities. ([source](https://docs.web3js.org/libdocs/Accounts))
- [Wallet Provider Connectors](https://awesome-repositories.com/f/security-cryptography/identity-provider-connections/wallet-provider-connectors.md) — Initializes connections to decentralized networks by detecting and utilizing injected browser wallet providers. ([source](https://docs.web3js.org/guides/dapps/metamask-vanilla))
- [Transaction Signing](https://awesome-repositories.com/f/security-cryptography/transaction-signing.md) — Submits signed operations to the blockchain to update state or trigger smart contract functions. ([source](https://docs.web3js.org/guides/wagmi_usage/))
- [Ethereum Signature Verifiers](https://awesome-repositories.com/f/security-cryptography/cryptographic-signature-verification/ethereum-signature-verifiers.md) — Provides verification logic for secp256k1 signatures to support Ethereum-compatible authentication. ([source](https://docs.web3js.org/guides/dapps/metamask-vanilla))
- [Data Encoders](https://awesome-repositories.com/f/security-cryptography/data-encoders.md) — Converts ABI-encoded hexadecimal strings into native types based on schema definitions. ([source](https://docs.web3js.org/api/web3-eth-abi/function/decodeParameter))
- [Wallet Integrations](https://awesome-repositories.com/f/security-cryptography/wallet-integrations.md) — Handles collections of accounts and private keys to authorize network operations. ([source](https://docs.web3js.org/guides/getting_started/quickstart))
- [Keystore Management](https://awesome-repositories.com/f/security-cryptography/keystore-management.md) — Secures private keys by encrypting them into password-protected files for local storage. ([source](https://docs.web3js.org/libdocs/Accounts))
- [Cryptographic Randomness Providers](https://awesome-repositories.com/f/security-cryptography/cryptographic-randomness-providers.md) — Generates cryptographically secure random data for blockchain operations. ([source](https://docs.web3js.org/guides/web3_utils_module/))
- [Key Derivation Schemes](https://awesome-repositories.com/f/security-cryptography/key-derivation-schemes.md) — Derives public keys and blockchain addresses from private keys for identity management. ([source](https://docs.web3js.org/libdocs/Accounts))
- [Account Grouping Utilities](https://awesome-repositories.com/f/security-cryptography/account-management/account-grouping-utilities.md) — Simplifies key management by grouping multiple accounts into a single wallet container. ([source](https://docs.web3js.org/glossary))
- [Cryptographic Hash Computations](https://awesome-repositories.com/f/security-cryptography/security/cryptography-and-secrets/cryptographic-primitives-management/cryptographic-hash-computations.md) — Generates secure cryptographic hashes for data, including support for tightly packed arguments. ([source](https://docs.web3js.org/libdocs/Utils))
- [Signer Identity Recoverers](https://awesome-repositories.com/f/security-cryptography/transaction-signers/signer-identity-recoverers.md) — Verifies message or transaction origin by extracting the signer's public address from the signature. ([source](https://docs.web3js.org/libdocs/Accounts))

### DevOps & Infrastructure

- [Smart Contract Deployment Pipelines](https://awesome-repositories.com/f/devops-infrastructure/smart-contract-deployment-pipelines.md) — Publishes compiled bytecode to blockchain networks and estimates transaction fees for contract deployment. ([source](https://docs.web3js.org/guides/smart_contracts/smart_contracts_guide))
- [Transaction Managers](https://awesome-repositories.com/f/devops-infrastructure/transaction-managers.md) — Submits signed transactions to the network and estimates gas requirements for state changes. ([source](https://docs.web3js.org/api/web3-types))
- [Transaction Fee Calculators](https://awesome-repositories.com/f/devops-infrastructure/transaction-fee-calculators.md) — Calculates required gas for transactions or contract deployments to ensure successful submission. ([source](https://docs.web3js.org/guides/web3_eth/eth))
- [Transaction Payload Modifiers](https://awesome-repositories.com/f/devops-infrastructure/transaction-managers/transaction-payload-modifiers.md) — Applies custom logic to transaction payloads before submission to support specialized requirements. ([source](https://docs.web3js.org/guides/web3_plugin_guide/plugin_authors))

### Data & Databases

- [State Query Interfaces](https://awesome-repositories.com/f/data-databases/state-query-interfaces.md) — Retrieves account balances, transaction details, and storage data to inspect ledger state. ([source](https://docs.web3js.org/api/web3-types))
- [Data Format Converters](https://awesome-repositories.com/f/data-databases/data-format-converters.md) — Transforms data between common blockchain representations like hex strings and byte arrays. ([source](https://docs.web3js.org/libdocs/Utils))
- [Event-Driven Subscription Systems](https://awesome-repositories.com/f/data-databases/event-driven-subscription-systems.md) — Maintains persistent connections to nodes for real-time monitoring of blockchain logs and state changes.
- [Currency Conversion](https://awesome-repositories.com/f/data-databases/currency-conversion.md) — Translates values between different base currency denominations for financial calculations. ([source](https://docs.web3js.org/libdocs/Utils))
- [Blockchain Data Formatters](https://awesome-repositories.com/f/data-databases/data-formats/blockchain-data-formatters.md) — Configures how numerical and byte-based data returned from the network is represented. ([source](https://docs.web3js.org/api/web3-core))
- [Data Formatting Utilities](https://awesome-repositories.com/f/data-databases/data-formatting-utilities.md) — Transforms data between formats like hex strings and byte arrays based on schemas. ([source](https://docs.web3js.org/guides/web3_utils_module/))
- [Data Validation](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-management-governance/data-integrity-validation/data-validation.md) — Enforces schema constraints and type requirements on incoming blockchain data to ensure integrity before processing. ([source](https://docs.web3js.org/api/web3-validator))

### Development Tools & Productivity

- [EVM Call Interfaces](https://awesome-repositories.com/f/development-tools-productivity/call-behavior-configuration/remote-procedure-call-patterns/evm-call-interfaces.md) — Provides read-only message calls to retrieve information from smart contracts without consuming gas. ([source](https://docs.web3js.org/libdocs/Web3Eth))
- [Transaction Management](https://awesome-repositories.com/f/development-tools-productivity/transaction-management.md) — Subscribes to real-time events throughout the transaction lifecycle for improved user feedback. ([source](https://docs.web3js.org/guides/transactions/transactions))
- [Type Definition Generators](https://awesome-repositories.com/f/development-tools-productivity/type-definition-generators.md) — Generates strongly-typed definitions from contract interfaces to enable compile-time type checking. ([source](https://docs.web3js.org/guides/smart_contracts/infer_contract_types/))
- [Ethereum Denomination Converters](https://awesome-repositories.com/f/development-tools-productivity/unit-converters/ethereum-denomination-converters.md) — Translates values between different currency units to ensure accurate representation of amounts. ([source](https://docs.web3js.org/guides/web3_utils_module/))
- [RPC Method Extensions](https://awesome-repositories.com/f/development-tools-productivity/modular-library-extensions/rpc-method-extensions.md) — Allows adding custom remote procedure call methods to the library interface. ([source](https://docs.web3js.org/guides/advanced/custom_RPC))

### Software Engineering & Architecture

- [Smart Contract Standards](https://awesome-repositories.com/f/software-engineering-architecture/smart-contract-standards.md) — Converts function calls and parameters into binary ABI representations for smart contract interaction. ([source](https://docs.web3js.org/libdocs/ABI))
- [Contract Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/smart-contract-standards/contract-dispatchers.md) — Creates and configures local contract objects linked to specific providers and execution contexts. ([source](https://docs.web3js.org/libdocs/Contract))
- [Ether](https://awesome-repositories.com/f/software-engineering-architecture/token-standards/transfer-processors/ether.md) — Submits transactions to transfer native currency between accounts using connected wallet providers. ([source](https://docs.web3js.org/guides/dapps/intermediate-dapp))
- [Modular Plugin Architectures](https://awesome-repositories.com/f/software-engineering-architecture/modular-plugin-architectures.md) — Provides an architectural framework for extending library functionality via modular plugins. ([source](https://docs.web3js.org/))
- [Execution Parameter Configurations](https://awesome-repositories.com/f/software-engineering-architecture/default-configuration-values/execution-parameter-configurations.md) — Sets default values for blockchain interactions, including transaction handling and gas pricing. ([source](https://docs.web3js.org/guides/web3_config))
- [Request Interception Middleware](https://awesome-repositories.com/f/software-engineering-architecture/request-interception-middleware.md) — Enables modification of network requests and responses through a chain of handlers before reaching the node.
- [Plugin-Based Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures.md) — Extends core library functionality by allowing registration of custom methods and middleware via plugins.

### System Administration & Monitoring

- [Blockchain Event Monitors](https://awesome-repositories.com/f/system-administration-monitoring/blockchain-event-monitors.md) — Subscribes to network events and smart contract logs to trigger application logic based on live on-chain activity. ([source](https://docs.web3js.org/api/web3-types))
- [Blockchain Network Status Monitors](https://awesome-repositories.com/f/system-administration-monitoring/blockchain-network-status-monitors.md) — Fetch global blockchain information including current block numbers, chain identifiers, protocol versions, and node synchronization status for application configuration. ([source](https://docs.web3js.org/api/web3/namespace/rpcMethods))
- [On-Chain Event Monitors](https://awesome-repositories.com/f/system-administration-monitoring/on-chain-event-monitors.md) — Listens for real-time updates including logs and connection status changes to trigger application logic. ([source](https://docs.web3js.org/guides/events_subscriptions/))
- [Blockchain Identity Registries](https://awesome-repositories.com/f/system-administration-monitoring/blockchain-identity-registries.md) — Maps blockchain addresses to human-readable identifiers for registry management. ([source](https://docs.web3js.org/libdocs/ENS))
- [Event Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/event-monitoring.md) — Retrieves historical logs and tracks specific activities emitted by smart contracts through persistent event monitoring. ([source](https://docs.web3js.org/guides/getting_started/quickstart))

### Programming Languages & Runtimes

- [String Manipulators](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/string-utilities/string-manipulators.md) — Provides utilities for string padding, byte array generation, and storage slot calculation. ([source](https://docs.web3js.org/libdocs/Utils))
