Cointime

Download App
iOS & Android

NFT Teams: Free Yourself From Never-Ending IPFS Pinning Fees by Uploading Images to Arweave via the CLI Method

another lifetime, I was actually a marketing & business development director at a regional CPA firm. And prior to that, I was in marketing and business development at Deloitte. So, I’ve had a ton of marketing and sales training throughout my crazy-long career (I’m old — a GenXer through and through). Anyway, in that training, there’s a famous sales maxim that uses the mattress industry as an example: You aren’t selling mattresses, you’re selling sleep.

And, really, that is what Arweave, a decentralized data storage protocol, provides for the NFT space (and for other general permanent-storage-dependent business / industry niches, of course).

Yes, Arweave is a product / service. Yes, it’s a storage protocol. But those descriptions miss the mark because it’s the benefits of using Arweave that set it apart from the nonstop hassles of IPFS. IPFS is a mattress; Awreave is nice, peaceful sleep.

Okay, enough with the metaphors! Let’s get into some tech stuff. 

In the above, I was new to exploring the protocol, and I began by using the excellent GUI / web site, ArDrive. I still use ArDrive via the site/app, as it’s just a super interface and very intuitive. And, you know, even if you live life on the command line, it’s still nice to work visually on some things.

That all said, as I continued to explore Arweave, I realized that some specialized things I was doing called for a programmatic approach. And for that, ArDrive offers a CLI (here’s the github repo). It has various install options. For me, just a quick npm install & it was ready to go.

The github repo linked to above has super documentation that will cover most of the situations you’ll have when uploading. I thought I’d show some concrete examples of my own little process, just to show how easy it is to upload images. So, here’s my own process:

Prerequisites

You of course to have AR tokens in your Arweave wallet (how-to here), and you need to have the CLI installed in your IDE (see above).

1. Break your files into manageable chunks locally (in prep for uploading)

To be honest, I’m not 100% sure what the upload limits are. The repo mentions that that there is no theoretical limit on numbers of files (although you could be uploading thousands of really tiny files, so that’s understandable). But all in all, I seem to recall a 2–3 GB total size limit stated somewhere. I was definitely able to successfully upload MORE than the stated limit using the app, and I think the CLI allows even a bit more than the app does. (I’ll clarify this part later.) But anyway, for practical purposes, maybe limit your first few uploads to a few gigs, and go from there with pushing the limits. (Also, in fairness, it could depend on some outside factors. For instance, I have giga-bit service here, so I can upload at crazy high speeds, which might mean my limit differs from yours.)

2. Establish a folder into which you’ll put your NFT images.

While the CLI will let you easily do this, I actually like to just be on the ArDrive app for this part. You just click NEW and then “New Folder” and then name it. I’m in my “z_dog” drive here, and I’ve just made a folder called “test1”. When it’s done, I just click on it (and it highlights in pink — super handy) and then I click the info button (top center), and the right panel pops up where I can click the Folder ID icon to auto-copy that.

From there, I have a folder locally called “sample” into which I’ve popped 6 sample images for this article. So, to upload that, I simply need to go to a terminal and pop in the command:

ardrive upload-file --local-path /path/to/folder --parent-folder-id "FOLDERID" -w /path/to/wallet.json

Customize that with your folder ID (as copied above), paths to the upload folder, and wallet path, of course. But, upon running that, it soon returns a JSON wad of data related to what you just did there.

The top item is always a folder because I’m uploading a folder myself, and so that’s the ArDrive folder info for that local folder. (Did I say “folder” enough in that last sentence? lol). And below that is the data I sent and the various properties for each item.

BTW, if I wanted to fetch all of the individual file data as a nice clean JSON file, I could now run…

ardrive list-folder --parent-folder-id"e6be9dd8-e100-4a91-a822-c541076a87da"

… and I’d get a big JSON set of that whole folder:

That “dataTxID” is key for linking back out. We just preface it with https://arweave.net/ and, for example, the URL…

https://arweave.net/A4izFjirmqqs3Jhne1eYX0uwj5_dewAr4LZYLLECDvI

… indeed shows the dog I just uploaded:

(That’s a copy of an image from my Loopies NFT drop. Go grab one — the floor is currently just 48 cents! lol.)

Dealing with Latency

One important note here is that there’s a bit of latency in the system, in that Arweave needs some time to take in your upload and get it all situated. (“Situated” is a fine technical term, right?) The more you upload, the more time it needs (although, relatively speaking, it’s fairly quick). But, that’s why I wanted to show you the “list-folder” command — because you shouldn’t count on the immediate JSON response as being the final one.

The system needs a few minutes to fully process things. In fact, one thing that I’ve come to do as I upload is that I’ll do an upload (e.g., let’s say I’m uploading 1,000 NFT images), and then I’ll wait like five minutes and I’ll then run the “list folder” command. Then, I’ll save the JSON output of that to a file and programmatically iterate over that file to count the dataTxId instances. If my count matches the number of files that I uploaded, then it’s all finalized on Arweave. If the count comes up less than I expected, then it’s not done processing yet. (So I give it a few more minutes and then re-request the folder data via list-folder.)

And then, of course, once I know all 1,000 files are there, and have dataTxIds, I then simply iterate again over the final JSON file (from the list-folder command) and this time I save the dataTxIds into my database of NFT data. (Note that the JSON file includes the “name” field, which is the name of the file I’ve uploaded. So, that’s how I match up the dataTxIds to my NFT database when I do that update.)

Your own processes will vary, of course. Again, see the robust documentation for the ArDrive CLI tool! But the point is that there are many options for uploading files, both GUI and CLI, and they’re all easy, user-friendly, and intended to be permanent with no ongoing pinning fees, which means you’ll sleep better. 

https://medium.com/web-design-web-developer-magazine/nft-teams-free-yourself-from-never-ending-ipfs-pinning-fees-uploading-images-to-arweave-via-the-a94ca51e99f4

NFT
Comments

All Comments

Recommended for you

  • Vitalik: Ethereum Foundation is Not the Central Manager of the ETH Ecosystem, Future Development Will Shift to 'Small and Long-term' Approach

    On May 25, Ethereum founder Vitalik shared his views on the future development direction of the Ethereum Foundation in a post on the X platform. He emphasized that this is just his personal opinion. The board does not consist solely of him, and he does not have more special powers than other board members. Aya Miyaguchi is leading most of the execution work for this transformation, while his own involvement is more focused on technical issues. The board is currently expanding, and his influence within the organization will continue to decline in the future, which, frankly, is what he hopes to see. By 2025, the Ethereum Foundation has made significant improvements in its execution capabilities. Many issues have been resolved, and the foundation continues to benefit from greater efficiency and a stronger focus on specific goals. However, as these issues were addressed, he began to care more about another concern: he often sees people saying, 'Vitalik has always talked about Ethereum needing to be decentralized, having privacy, and becoming a shelter technology, but why do the actions of the Ethereum Foundation not reflect these ideals?' Of course, there are those who hold completely different views. Some do not feel there is a crisis at all, but rather believe that the Ethereum Foundation has finally begun to take execution and business development seriously, and the next focus should be to continue along this path faster and stronger. Vitalik believes that this difference essentially reflects varying sensitivities to different types of criticism, and he is more easily hurt by criticisms regarding deviations from values. Vitalik stated that the Ethereum Foundation should not be 'the center of Ethereum,' but rather 'a node with clear responsibilities, existing alongside other nodes.' In the past, they have always said this, but many people in the ecosystem, including some within the foundation, hoped the foundation would become a true center. Now, they are taking concrete actions to ensure the foundation becomes the latter. This is particularly important because the Ethereum Foundation is essentially a resource-limited and organizationally limited entity. The foundation currently holds only about 0.16% of all ETH, which is even lower than many large ETH holders; whereas many other blockchain projects' 'central foundations' typically control 10%-50% of their tokens. The current Ethereum Foundation has decided to use its remaining resources to pursue 'long-term viability' rather than continuous expansion (which also means they will sell less ETH). The foundation will focus on those things that are crucial for Ethereum to become a censorship-resistant, control-resistant, open, private, and secure system, but that no one else would do if the foundation does not. This means they must make difficult choices. Some projects and individuals they highly respect may no longer belong to the foundation's system in the future. In fact, if they want important tasks to attract external capital, it may be necessary to keep some talented individuals, influential public figures, and those who share the mission and CROPS philosophy outside the foundation. This also means that the Ethereum Foundation will take a clearer and more principled stance on a cultural level.

  • ETH Surpasses $2100

    Market data shows that ETH has surpassed $2100, currently priced at $2101.04, with a 24-hour increase of 1.9%. The market is experiencing significant volatility, so please ensure proper risk management.

  • U.S. Officials: Agreement with Iran Expected Not to Be Signed on Sunday, Some Issues Remain

    On May 24, Axios reported, citing a U.S. official, that Iran's Supreme Leader has approved the overall framework of the agreement. There are some important statements for us and some significant wording for Iran. It is expected that the agreement with Iran will not be signed on Sunday, as there are still some issues that need to be resolved. The current status of the Iranian regime is progressing slowly, and completing the necessary approvals will take a few days.

  • ETH Falls Below $2100

    Market data shows that ETH has fallen below $2100, currently priced at $2096.81, with a 24-hour increase of 2.47%. The market is experiencing significant volatility, so please ensure proper risk management.

  • PAYS Officially Launches on Nivex, Surges 100% on Debut

    At 15:18 on May 24, 2026, PAYS officially launched on the Nivex exchange and opened for trading globally.

  • U.S. Secretary of State: Announcement on Agreement with Iran Possible Later Sunday

    On May 24, U.S. Secretary of State Rubio stated that an announcement regarding an agreement with Iran may be made later on Sunday.

  • BTC Surpasses $77,000

    Market data shows that BTC has surpassed $77,000, currently priced at $77,073.6, with a 24-hour increase of 1.32%. The market is experiencing significant volatility, so please ensure proper risk management.

  • Trump: Calls with Multiple World Leaders, Iran Agreement Nearly Finalized

    On May 24, Trump stated on social media that he had "very good calls" in the Oval Office with leaders from Saudi Arabia, the UAE, Qatar, Pakistan, Turkey, Egypt, Jordan, Bahrain, and others regarding Iran and a peace memorandum. Trump claimed that the agreement has been largely negotiated and is pending finalization by the U.S., Iran, and other relevant countries. Additionally, his call with Israeli Prime Minister Netanyahu was also "very smooth." The final details of the agreement are under discussion and will be announced soon. Trump specifically noted that, in addition to several aspects of the agreement, the Strait of Hormuz will be opened.

  • BTC Surpasses $76,000

    Market data shows that BTC has surpassed $76,000, currently priced at $76,001.27, with a 24-hour increase of 0.05%. The market is experiencing significant volatility, so please ensure proper risk management.

  • US and Iran Expected to Announce Final Peace Agreement Within 24 Hours

    On May 24, according to the Washington Times citing sources close to the negotiations, the United States and Iran are expected to announce the finalization of a peace agreement within 24 hours after negotiating representatives approved a draft agreement to end all combat on the front lines. The agreement still awaits final approval from both governments.