Skip to content



1RPC is a free and private RPC relay that protects Web3 users when accessing RPC endpoints. It tunnels user requests via distributed relays to other RPC providers whilst preventing the tracking of user metadata such as IP address, device information and wallet linkability. It offers protection on user privacy without compromising compatibility with existing blockchain RPC protocols.

To avoid metadata tracking from other RPC providers, 1RPC relays user requests and avoids any direct communication between user and RPC providers. In addition, the 1RPC nodes immediately delete any metadata after relaying the requests successfully. The connections between users, 1RPC and RPC providers are TLS secured which further prevents any tracking from other network providers.

1RPC is created to be an open initiative from the blockchain infrastructure community. We are motivated by a common good mission to help build a better Web3 and we encourage anyone who values user privacy to join this open collaboration.


The majority of the users in Web3 don’t know their private metadata is exposed to 3rd party RPC providers. Every time a user connects their wallet, an RPC endpoint is connected, which receives a tremendous amount of identifying information even before initiating a transaction.

For example, as soon as you start up Metamask, an eth_call request is sent to Infura (Metamask’s default RPC), who could potentially have access to private metadata such as your IP address, browser version, OS platform, etc. Additionally, the request will try to get the balance of all your addresses added to Metamask - effectively exposing all your wallet addresses and the association between them, linked to your metadata, to RPC providers.

The information is received, collected, and potentially stored and analyzed by RPC providers. This data harvesting is concerning enough to raise the alarm, but should a data breach occur to an RPC provider, the leakage could lead to more attacks on users via “social engineering” attacks, phishing attacks, and even physical danger.


  • Zero tracking

    1RPC relays user requests to RPC providers and shield user’s private metadata, including IP address, device information, and wallet association. 1PRC does not save or track such information.

  • Anti-phishing

    1RPC detects phishing requests from malicious domains and stops relaying malicious transactions.

  • Multi-chain compatibility

    1RPC is compliant with JSON RPC 2.0 standard and supports multiple blockchain protocols (e.g., EVM, Substrate) via HTTPS and WSS.

Supported Networks

Network Name 1RPC URL Chain ID Currency Symbol Block Explorer URL
ETH Mainnet 1 ETH
BNB Chain Mainnet 56 BNB
Polygon Mainnet 137 MATIC
Avalanche Contract Chain 43114 AVAX
Avalanche Platform Chain
Avalanche Exchange Chain
Arbitrum One 42161 ETH
Moonbeam 1284 GLMR
Astar 592 ASTR
Polkadot wss://
Kusama wss://
Acala wss://
Optimism 10 OP
zkSync alpha testnet 280 ETH
Fantom Opera 250 FTM
Celo Mainnet 42220 CELO


  • Rate limit for the whole service: 20 requests per second.

  • Request content size: 2MB at most.

Get Started


Users can visit to add 1RPC to the Metamask via the one-click button, or they can add the network manually.


Developers can use the 1RPC URL to interact with the blockchain and the only thing they need to change is the endpoint URL.

curl --request POST \
    --url \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --data '
    "id": 1,
    "jsonrpc": "2.0",
    "method": "eth_blockNumber"
package main

import (

func main() {
    const url = ""  // url string

    rpcClient,err := ethclient.Dial(url)

    if err != nil {

    blockNumber, err := rpcClient.BlockNumber(context.Background())

    if err != nil {

const Web3 = require('web3');

const url = ''  // url string

const web3 = new Web3(new Web3.providers.HttpProvider(url));

web3.eth.getBlockNumber((error, blockNumber) => {
    if(!error) {
    } else {
from web3 import Web3

def test_block_number(self):
    url = ''  # url string

    web3 = Web3(HTTPProvider(url))
$ wscat -c wss://

> {"jsonrpc":  "2.0", "id": 0, "method":  "system_chainType"}