Monad is an EVM-compatible Layer 1 blockchain with high performance and parallel execution. This guide explains how to find and use Monad RPC endpoints, add Monad to MetaMask, run basic JSON-RPC calls, and validate endpoint health and latency. It also covers common issues and limitations.
Direct Answer: Monad RPC Endpoints
Monad is an EVM-compatible Layer 1 blockchain that aims to provide high throughput through parallel execution and a custom consensus mechanism. To interact with Monad, you need an RPC endpoint that speaks the standard Ethereum JSON-RPC protocol. As of this writing, Monad is in testnet phase, and the official public RPC endpoint is https://testnet-rpc.monad.xyz. The chain ID for Monad testnet is 10143. You can use this endpoint to query blockchain data, send transactions, and deploy smart contracts. However, note that endpoints and network parameters may change before the final mainnet launch, so always refer to the Monad developer documentation for the latest information.
For production-grade access, you can use a managed RPC provider like OnFinality, which offers reliable and scalable endpoints. OnFinality provides a dedicated Monad RPC endpoint page where you can find the latest endpoints and connection details. This guide will walk you through the setup, common methods, and how to measure latency.
- Official testnet RPC:
https://testnet-rpc.monad.xyz - Chain ID:
10143 - WebSocket (WSS) endpoint:
wss://testnet-rpc.monad.xyz/ws(if available) - Always verify current endpoints from official sources.
Monad's EVM-Compatible JSON-RPC Surface
Monad is designed to be fully EVM-compatible, meaning it supports the same JSON-RPC methods as Ethereum. This includes standard methods like eth_chainId, eth_blockNumber, eth_getBalance, eth_call, eth_sendRawTransaction, and many others. This compatibility allows developers to use familiar tools like MetaMask, Hardhat, and ethers.js without significant changes.
Under the hood, Monad uses a parallel execution engine that can process transactions concurrently, but this is transparent to the RPC layer. The JSON-RPC interface remains standard, so you can interact with Monad just like you would with Ethereum. For a full list of supported methods, refer to the Monad documentation.
One important aspect is that Monad's testnet may have different gas mechanics or block times compared to Ethereum, but the RPC methods themselves are identical. This means that any Ethereum tooling that works with JSON-RPC should work with Monad out of the box.
Finding Current Testnet and Mainnet RPC Endpoints
The most reliable way to find the current Monad RPC endpoints is to check the official Monad documentation and network status pages. As of the publication date, the testnet RPC is https://testnet-rpc.monad.xyz. For WebSocket connections, you may use wss://testnet-rpc.monad.xyz/ws if supported. However, these endpoints are subject to change, especially as Monad progresses toward mainnet.
For a managed and stable endpoint, OnFinality provides a dedicated Monad RPC endpoint page where you can find the latest endpoints, including both HTTP and WebSocket URLs. OnFinality also offers a network page for Monad mainnet (once mainnet is live) and testnet endpoints. Using a managed provider ensures high availability and performance, which is critical for production applications.
When mainnet launches, the chain ID will likely change, and new endpoints will be provided. Always verify the chain ID and endpoints from official sources before deploying your application.
- Official testnet RPC:
https://testnet-rpc.monad.xyz - OnFinality Monad RPC endpoint page: Monad RPC endpoints
- Check Monad network status for live updates.
Adding Monad to MetaMask
To interact with Monad using MetaMask, you need to add a custom network. Here are the steps:
- Open MetaMask and click on the network dropdown at the top. 2. Click 'Add Network' or 'Custom RPC'. 3. Fill in the following details: Network Name: Monad Testnet, New RPC URL:
https://testnet-rpc.monad.xyz, Chain ID:10143, Currency Symbol: MON, Block Explorer URL:https://testnet.monadexplorer.com(or the official explorer). 4. Click Save. You should now be connected to Monad testnet.
Alternatively, you can use the OnFinality RPC endpoint if you have a dedicated one. The process is the same, just replace the RPC URL with your OnFinality endpoint. For more details, refer to the Monad documentation or the OnFinality RPC Assistant.
- Network Name: Monad Testnet
- RPC URL:
https://testnet-rpc.monad.xyz - Chain ID:
10143 - Currency Symbol: MON
- Block Explorer:
https://testnet.monadexplorer.com
Runnable curl Examples: eth_chainId, eth_blockNumber, eth_getBalance
You can interact with Monad's RPC endpoint using standard JSON-RPC calls. Below are runnable curl examples for common methods. These examples assume you have curl installed on your system.
First, let's get the chain ID:
curl -X POST https://testnet-rpc.monad.xyz \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
Expected output: {"jsonrpc":"2.0","result":"0x27af","id":1}. The result 0x27af is the hexadecimal representation of 10143.
Next, get the latest block number:
curl -X POST https://testnet-rpc.monad.xyz \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Expected output: {"jsonrpc":"2.0","result":"0x...","id":1} where 0x... is the current block number in hex. You can convert it to decimal using a tool like printf '%d\n' 0x....
Finally, get the balance of an address (replace 0x... with a valid address):
curl -X POST https://testnet-rpc.monad.xyz \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xYourAddress","latest"],"id":1}'
Expected output: {"jsonrpc":"2.0","result":"0x...","id":1} where 0x... is the balance in wei. To get MON, divide by 10^18.
curl -X POST https://testnet-rpc.monad.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
curl -X POST https://testnet-rpc.monad.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
curl -X POST https://testnet-rpc.monad.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xYourAddress","latest"],"id":1}'How to Validate Latency and Health Against a Public Endpoint
Latency is a critical factor for RPC endpoints, especially for applications that require real-time data. To measure latency, you can use tools like curl with timing options or dedicated network monitoring tools. Here's a simple way to measure the round-trip time for a JSON-RPC call:
curl -o /dev/null -s -w "Total time: %{time_total}s\n" -X POST https://testnet-rpc.monad.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
This command will output the total time taken for the request. However, note that this measures the time from your machine to the endpoint and back, which includes network latency. For a more accurate measurement, you can use a service like OnFinality's RPC Assistant which provides latency statistics from multiple locations.
To check the health of an endpoint, you can also verify that it returns the correct chain ID and that the block number is increasing over time. A healthy endpoint should respond quickly and consistently. If you experience timeouts, refer to our guide on RPC timeout diagnosis and fixes.
Remember that public endpoints may have rate limits and can be slower during peak times. For production, consider using a managed provider like OnFinality, which offers API services with guaranteed performance and uptime.
- Use
curl -wto measure total time. - Check that the chain ID is correct.
- Monitor block number progression.
- Consider using a managed provider for consistent performance.
curl -o /dev/null -s -w "Total time: %{time_total}s\n" -X POST https://testnet-rpc.monad.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'Common Failures and Fixes
When working with Monad RPC endpoints, you may encounter several common issues. Here are some typical failures and how to fix them:
- Incorrect Chain ID: If you get an error like
invalid chain id, ensure you are using10143for testnet. Double-check your configuration in MetaMask or your application.
- Connection Timeouts: If your requests time out, the endpoint may be down or overloaded. Try using a different endpoint or a managed provider. Refer to our RPC timeout guide for detailed troubleshooting.
- Rate Limiting: Public endpoints often have rate limits. If you receive
429 Too Many Requests, reduce your request frequency or use a dedicated endpoint from OnFinality.
- Insufficient Funds: When sending transactions, ensure your account has enough MON for gas. You can get testnet MON from the Monad testnet faucet.
- Unsupported Method: If you get a
method not founderror, verify that the method is supported by Monad. Most Ethereum methods are supported, but some may be disabled for security reasons.
- Check chain ID and network configuration.
- Use a reliable endpoint or managed provider.
- Monitor rate limits and adjust request frequency.
- Ensure sufficient testnet funds for transactions.
- Verify method support in the official docs.
Tradeoffs and Limitations
While Monad's EVM compatibility makes it easy to get started, there are important limitations to keep in mind. First, the testnet endpoints are subject to change without notice, and the network may be reset. This means that any data you store on testnet may be lost. Always design your application to handle network resets.
Second, public endpoints are not performance benchmarks. They are provided for development and testing, and may have rate limits or downtime. For production use, you should use a managed RPC provider like OnFinality, which offers pricing plans that guarantee uptime and throughput.
Third, Monad's parallel execution may lead to different transaction ordering or gas behavior compared to Ethereum. While the RPC interface is identical, the underlying consensus and execution model may affect how you estimate gas or handle nonces. Always test thoroughly on testnet.
Finally, the latency measurements you perform are relative to your location and network conditions. They do not represent the performance of the Monad network itself. For accurate latency comparisons, use a tool that tests from multiple geographic locations, such as the OnFinality RPC Assistant.
- Testnet endpoints may change or be reset.
- Public endpoints are not performance benchmarks.
- Parallel execution may affect gas and nonce handling.
- Latency measurements are location-dependent.
Next Steps and Further Resources
Now that you have a solid understanding of Monad RPC endpoints, you can start building on Monad. Here are some next steps:
- Get testnet MON from the Monad faucet to fund your transactions. 2. Deploy a smart contract using Hardhat or Foundry, pointing to the Monad RPC endpoint. 3. Monitor network status via the Monad status page. 4. Explore the Monad documentation for advanced topics like parallel execution and consensus.
For a reliable RPC infrastructure, consider using OnFinality's API service. You can also check the Monad mainnet network page for updates when mainnet launches. If you encounter any issues, our RPC timeout guide and learning hub are excellent resources.
Remember to always verify endpoints and chain IDs from official sources, as they may change. Happy building on Monad!
- Get testnet MON from the faucet.
- Deploy a smart contract using standard Ethereum tools.
- Monitor network status and updates.
- Use OnFinality for production-grade RPC services.