Non-Fungible Tokens (NFTs) have gained tremendous popularity in recent years, revolutionizing the way we perceive and trade digital assets. NFTs are unique digital tokens that represent ownership or proof of authenticity of a specific item, whether it’s artwork, collectibles, or virtual real estate.

In this tutorial, we will explore how to create NFT tokens using the OpenZeppelin contract library in Node.js. OpenZeppelin provides a secure and tested set of contracts for building decentralized applications (DApps) on the Ethereum blockchain.


Before we begin, make sure you have the following:

  • Node.js installed on your machine
  • A basic understanding of Ethereum and smart contracts
  • An Ethereum wallet (such as MetaMask) and some test Ether for deployment

Step 1: Setting Up the Project

Let’s start by setting up a new Node.js project. Open your terminal and navigate to the desired directory where you want to create the project. Run the following command to initialize a new Node.js project:

$ mkdir nft-project
$ cd nft-project
$ npm init -y

This will create a new directory called ‘nft-project’ and initialize a new Node.js project inside it. The ‘-y’ flag automatically accepts the default configurations.

Step 2: Installing Dependencies

Next, we need to install the required dependencies for our project. Run the following command to install the OpenZeppelin contract library:

$ npm install @openzeppelin/contracts

This will install the latest version of the OpenZeppelin contract library in your project’s ‘node_modules’ folder.

Step 3: Creating the NFT Contract

Now, let’s create a new file called ‘NFT.sol’ inside the project directory. This file will contain the Solidity code for our NFT contract.

Open the ‘NFT.sol’ file in your favorite code editor and add the following code:

pragma solidity ^0.8.0;

import '@openzeppelin/contracts/token/ERC721/ERC721.sol';

contract NFT is ERC721 {
  constructor() ERC721('MyNFT', 'MNFT') {

This code imports the ERC721 contract from the OpenZeppelin library and creates a new contract called ‘NFT’ that extends ERC721. The constructor sets the name and symbol for our NFT token.

Step 4: Compiling the Contract

Before we can deploy our contract, we need to compile it. Run the following command in your terminal:

$ npx hardhat compile

This will compile the Solidity code and generate the necessary artifacts in the ‘artifacts’ folder.

Step 5: Deploying the Contract

Now, let’s deploy our NFT contract to the Ethereum network. Create a new file called ‘deploy.js’ in the project directory and add the following code:

const { ethers } = require('hardhat');

async function main() {
  const NFT = await ethers.getContractFactory('NFT');
  const nft = await NFT.deploy();

  await nft.deployed();

  console.log('NFT contract deployed to:', nft.address);

  .then(() => process.exit(0))
  .catch(error => {

This code uses the Hardhat framework to deploy our NFT contract. It gets the contract factory for ‘NFT’, deploys the contract, and then logs the contract address to the console.

Step 6: Running the Deployment Script

To deploy our contract, run the following command in your terminal:

$ node deploy.js

This will deploy the NFT contract to the Ethereum network. Make sure you have an active Ethereum wallet connected to your local network.


Congratulations! You have successfully created NFT tokens using the OpenZeppelin contract library in Node.js. You can now explore further functionalities of the ERC721 standard and build your own NFT marketplace or integrate NFTs into your DApps.

Remember to always test your contracts thoroughly and consider security best practices when working with blockchain technologies.

Leave A Comment