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

  • A Total of 37,212.18 DMD Permanently Burned Over the Past 7 Days

    July 9, 2026 — According to the latest on-chain data released by DMDAO, a total of 37,212.18 DMD has been permanently burned over the past seven calendar days through the protocol's predefined trading and wealth management burn mechanisms.

  • Whale Transfers 1,133 BTC to Coinbase Prime, Valued at $71.48 Million

    According to Onchain Lens monitoring, a whale transferred 1,133 BTC from Coinbase to Coinbase Prime through an intermediary wallet, valued at $71.48 million.

  • U.S. AI Chip Stocks Decline Before Market Open, Intel Falls Over 3%

    On July 7, U.S. AI chip stocks experienced widespread declines before the market opened. Intel dropped over 3%, while AMD, Qualcomm, and NXP fell more than 2%. TSMC, Broadcom, and Tesla decreased by over 1%, and NVIDIA declined by 0.7%.

  • China's Central Bank Increases Gold Reserves for the 20th Consecutive Month

    As of the end of June, China's gold reserves stood at 75.44 million ounces (approximately 2,346.446 tons), an increase of 480,000 ounces (about 14.93 tons) from the end of May, which reported 74.96 million ounces (approximately 2,331.52 tons). This marks the 20th consecutive month of gold accumulation.

  • China's Foreign Exchange Reserves in June at $341.6262 Billion

    On July 7, China's foreign exchange reserves for June stood at $341.6262 billion, a decrease of $26 billion from the end of May, representing a decline of 0.75%, with expectations set at $343.2 billion.

  • U.S. Storage Stocks Drop Pre-Market, SanDisk and Micron Down Over 4%

    On July 7, U.S. storage concept stocks collectively fell in pre-market trading. Western Digital dropped over 5%, SanDisk and Micron Technology fell over 4%, Seagate Technology declined over 3%, Rambus fell over 2%, and SMI fell over 1%.

  • U.S. Stocks in Optical Communication Sector Drop Pre-Market

    On July 7, stocks in the optical communication sector of the U.S. market collectively fell pre-market. Astera Labs dropped over 4%, while Marvell Technology, Credo Technology, and AXT Inc. fell more than 3%. Tower Semiconductor, MaxLinear, Corning, Applied Optoelectronics, GlobalFoundries, Lumentum, and Qorvo all declined by more than 2%. Coherent, Nokia, Amphenol, and Broadcom dropped over 1%.

  • Pre-market Decline in U.S. Storage Stocks

    In pre-market trading, U.S. storage concept stocks experienced a widespread decline, with Micron Technology falling by 4.8%, SanDisk dropping over 4%, Corning down more than 2%, and Intel decreasing by over 3%.

  • Two Departments: Support for Reinsurance Institutions to Increase Capital and Issue Supplementary Capital Tools

    On July 7, the National Financial Supervision and Administration Bureau and the Shanghai Municipal Government released several measures to accelerate the construction of the Shanghai International Reinsurance Center. Among these measures, they proposed to enhance the quality and efficiency of the reinsurance industry, support reinsurance institutions in increasing capital and expanding shares, and issuing supplementary capital tools to improve the capacity for internal capital accumulation and external capital supplementation, thereby strengthening the reinsurance industry's capabilities. The initiative aims to guide the insurance industry to focus on major national projects, strategic emerging industries, and livelihood security, consolidating insurance and reinsurance underwriting capabilities to enhance risk protection levels. It also supports reinsurance institutions in leveraging their professional technical advantages to assist the insurance industry in reducing risk.

  • Sources: Saudi Arabia Plans to Expand Oil Pipeline to Red Sea, Increasing Capacity by 2 Million Barrels Daily to Bypass Strait of Hormuz

    On July 7, five informed sources revealed that Saudi Arabia is considering expanding the crude oil pipeline capacity to its western coast on the Red Sea, allowing Saudi Arabia and its neighbors to transport more oil without passing through the Strait of Hormuz. This east-west pipeline, built in the early 1980s, has gained strategic importance since the outbreak of the Iran war in February and the disruption of shipping in the Strait of Hormuz. The pipeline can deliver up to 7 million barrels of crude oil per day to the Red Sea port. The CEO of Saudi Aramco stated in May that approximately 2 million barrels are supplied to west coast refineries, while about 5 million barrels are for export. Sources indicate that Saudi Arabia is in preliminary discussions with some neighboring countries regarding the pipeline expansion, aiming to add about 2 million barrels of pipeline capacity per day. It remains unclear whether Aramco's planned expansion involves upgrading existing infrastructure or constructing new pipelines. One source mentioned that the expansion plan also includes a smaller refined oil pipeline. Two sources indicated that the expansion scale could range from 1 million to 2 million barrels per day, with refined oil also being considered. Another source stated that the project would take several years and cost billions of dollars, requiring adjustments to Saudi crude pricing mechanisms.