Developer FAQ

Developer FAQ

What is the difference between Node 1 and Node 2?

Node 2 is ideal for early-stage projects, while larger projects typically prefer Node 1 as it can scale to a higher TPS. Uploads of less than 100 KiB are currently free on Node 2.

Nodes maintain separate funding balances; fund the node you intend to upload to.

How can I see the manifest file associated with my upload?

You can request it from the Bundlr gateway with an URL in this format. Replace txid with your transaction id. https://gateway.bundlr.network/tx/:txid/data

Why do we subsidize uploads that are less than or equal to 100 KB on Node 2?

This is a public good for users to be encouraged to try Bundlr.

Do you support UMD bundles for your SDKs?

When using Bundlr in the browser, you can either install using npm / yarn if you’re using a framework or load via a UMD if you’re using VanillaJS. To load via a CDN, include the following URL


Include via a script tag (in the head section of your main html file).

<script src="https://unpkg.com/@bundlr-network/client/build/bundle.js"></script>

How do I create a notification script to notify me when my node balance is close to 0?

You can do this using JavaScript, our CLI, or cURL.

Why can Bundlr be more expensive than Arweave sometimes?

The additional fees cover the value-added services that Bundlr offers on top of Arweave including guarantees on finalization and seeding of data to miners, instant uploads via optimistic finalization, instant retrieval via Optimistic GraphQL and the Optimistic Cache, and also covers the risk we assume by offering payments in 14 different tokens.

It's important to recognize that Bundlr's pricing structure differs from Arweave's. Where Arweave charges storage fees in 256 KiB chunks, Bundlr charges on a per-byte basis, with a premium on top of Arweave's rates. Consequently, for uploads less than 200KB where Bundlr is a cheaper option.

For a comprehensive understanding of our fee structure, please refer to our documentation.

What is a nested bundle?

Bundling aggregates multiple transactions into a single top-level bundle before storing on Arweave. Nested bundles are transactions in a bundle that contain another bundle, not just a single upload. As Arweave has a limit of 1000 transactions per block, the use of bundles and nested bundles exponentially increases the number of transactions that can be posted per block.

Regardless of where in the bundle your transaction is stored, it’s still instantly available via gateways.

For more information see the ANS-104 Bundle spec.

What does the Error “Not enough funds to send data” mean?

This is an indication you haven’t funded a node yet or haven’t funded enough to cover the cost of your upload. When uploading to Bundlr, you first connect a node and then fund that node. Balances are not shared between nodes, so if you’re uploading to Node 1, you will need to fund Node 1. You can fund the node in any of the tokens we support, and when working with our Devnet, you fund with free faucet tokens like Mumbai MATIC (opens in a new tab), Sepolia ETH (opens in a new tab) or SOLANA (opens in a new tab).

To check the cost of a given upload, use our bundlr.getPrice() function.

Are there any 3rd party implementations of the Bundlr client in languages besides JavaScript?

For users looking to integrate Bundlr into projects written in languages other than JavaScript or TypeScript, there are other clients created and managed by our community. These clients are community-developed and, while not officially endorsed by Bundlr, they implement functionality similar to our official SDK.

What is the difference between <uploadFile> and <uploadFolder> ?

<uploadFile> is one by one. <uploadFolder> uploads all + a manifest. A manifest is a way to describe a directory accessible via https://arweave.net/<tx-id>/<filename> After a successful folder upload, two files are written to your local project directory [folder_name].csv and [folder_name].json, each contains the transaction id for each file uploaded. That transaction id can be used to retrieve the uploaded data by forming an URL with this format: [https://arweave.net]/[transaction-id]. You can also retrieve the uploaded data using the manifest id combined with the original relative file URL. We have a detailed guide here

What is the difference between Bundlr class and WebBundlr class?

The Bundlr class is used for NodeJS applications on the server. Whereas WebBundlr is used in the browser. To learn more, we have tutorials on working with Bundlr+NodeJS. and WebBundlr+React

How do I use WebBundlr in a create-react-app project?

Bundlr and WebBundlr are fully compatible with React. However, if you are using npx create-react-app, you will need to do a few extra steps when setting up your project. We have a fully detailed recipe here.

How do I use WebBundlr when working with ethers5, ethers6, RainbowKit, viem, WalletConnect?

We support a wide variety of providers and have code ready for you to copy and paste into your project.

Can I host a website using Bundlr?

Yes. You can host static websites. We have a detailed recipe on how to do it here.

What is the difference between two npm packages - arbundles and bundlr/js-client?

Arbundles is a package designed to create cryptographically verifiable ANS104 bundles with supported cryptocurrencies and is specialized for this use case. The js-client is a client designed to allow you to programmatically interact with bundler nodes, including funding, withdrawals, and uploads.

Is there a way to mint atomic NFTs via Bundlr?

Yes. It is possible with Warp.cc

What is optimistic finalization?

Optimistic finalization is an incentive mechanism used by Bundlr to provide instant upload times.

When working directly with Arweave, a block is considered confirmed after 50 block confirmations. Data is considered seeded after it is stored by a minimum number of miners. This all can take up to to 100 minutes.

When you post a transaction to Bundlr, you are given back a signed receipt from the node you upload to. At this point, we can optimistically consider the transaction final because there is a greater financial incentive for nodes to behave honestly than there is for malicious behavior. If your transaction does not make it to Arweave, you can submit your transaction receipt to Bundlr and that node’s stake gets slashed.

How does optimistic finalization work?

When you post a transaction, a set of validators co-sign the transaction which acts as a proof of existence/data availability. At that point, if a bundler does not get the data on-chain, the bundler’s stake in question is slashed.

Is it possible to assign an api key to a funded Bundlr account so that I as a service provider can pay for my client's uploads?

No, but it is possible to pay for your client's uploads using Server-Side Signing.

What is Server-Side Signing?

Server-Side Signing is a method that allows you to sign and pay for your user’s data securely without exposing your private key. It allows you to add gassless transactions to your dApp.

Which Ethereum Testnet is supported on Devnet?

Sepolia (opens in a new tab).

Which other Testnets does Bundlr support in other chains on Devnet?

Solana (devnet), Sepolia ETH, Matic, Fantom, BNB, Chainlink, Avalanche, Near, Algorand, arbEth, Aptos.

Is it possible to use Bundlr to interact with contracts?

If you add the required SmartWeave tags to your bundlr transaction, it will allow you to interact with smartweave contracts.

Are node1 and node2 interconnected?

No. The nodes are separate from each other. You can only upload to the actual nodes you have funded.

Is there any kind of limitation on the number of requests from one IP to a node?

There is no limitation on the number of requests from one IP to a node.

Is it possible to know an upload’s id before uploading?

Yes. You can create/sign/upload transactions in multiple steps.

What is the format of the transaction id?

It is 32 bytes base64url encoded.

Is there an expected max/min length of a transaction id?

43 bytes.