Create A Simple JavaScript App to Generate QR Codes

In the video by Traversy Media, you’ll learn how to create a simple JavaScript app to generate QR codes. The app utilizes QRcode.js and Tailwind CSS to make the process easy and beginner-friendly. The tutorial takes you through the step-by-step process of building a QR code generator using JavaScript, allowing users to input text or a URL and generate a QR code for it. The generated QR code can be scanned to open the URL and can also be saved as an image. The project not only serves as a practical tool but also highlights the importance of side projects and their potential benefits.

Now, let’s delve into the details and start building this QR code generator app using Vanilla JavaScript, QRcode.js, and Tailwind CSS. So, whether you want to create QR codes for restaurant menus or explore the world of side projects, this tutorial is both informative and inspiring.

Table of Contents

Understanding the Purpose of the Project

Exploring the motivation for creating a QR generator

Have you ever been to a restaurant and noticed QR codes on the tables for pre-ordering? These QR codes allow customers to scan them with their phones and access the restaurant’s menu, making it easy to place an order in advance.

The motivation behind creating a QR code generator stemmed from this experience. By developing a simple side project that allows users to generate their own QR codes, you can provide a convenient tool for businesses or individuals to share information with others.

Understanding the potential benefits of such a side project

While this project may not seem groundbreaking, it has the potential to bring in some monthly recurring revenue. By implementing some basic SEO techniques and adding Google AdSense to the page, you can generate a small income.

Even if the project doesn’t result in significant monetary gains, it can be a valuable addition to your portfolio or resume. Small projects like this showcase your ability to develop practical applications and demonstrate your initiative and creativity.

Initial Setup and Design

Use of QRcode.js and Tailwind CSS

To create the QR code generator, we will be using QRcode.js and Tailwind CSS. QRcode.js is a simple library that allows for the generation of QR codes, making our task much easier.

Tailwind CSS, on the other hand, is a utility-first CSS framework that enables us to style our application without having to write custom CSS. This will save us time and effort in designing the user interface (UI).

Creating a header with a red background, padding, and a centered title

To begin designing our application, we’ll create a header section that will contain a title. We’ll style this header with a red background, add some padding to enhance readability, and center the title for a visually appealing look.

Creating a responsive flexbox layout

To ensure that our application looks good on screens of all sizes, we’ll use a responsive flexbox layout. This will allow the content to adjust dynamically based on the screen width, providing a seamless experience for users.

Layout and Design for Medium Screens

Creating a column layout

On medium-sized screens, we’ll switch to a column layout for our content. This will allow the sections to stack vertically, ensuring that the information is presented in a logical and easy-to-read manner.

Adjusting the section widths using classes

To make our content visually appealing on medium screens, we’ll adjust the width of our sections using classes. This will allow us to define specific widths for each section, ensuring that they are displayed optimally.

Setting the first div to be full width on mobile screens and one third width

On mobile screens, we want our first section to take up the full width to provide a better viewing experience. However, on medium screens, we’ll change it to one third of the width to optimize space utilization and maintain consistency with the overall design.

Layout and Design for Small Screens

Creating a row layout

On small screens, we’ll switch to a row layout for our content. This will ensure that the sections are displayed horizontally, allowing users to scroll sideways if needed to view the entire page.

Designing the second div for image display

In the second section of our content, we’ll focus on displaying an image. This could be a QR code or any other image related to the project. We’ll design this section to visually highlight the image and ensure it is displayed prominently.

Centering the image on screens medium and larger

To maintain the balance of the design, we’ll center the image within the second section on screens of medium size and larger. This will ensure that the image is visually aligned with the rest of the content, providing a visually appealing and cohesive layout.

Placing Text and Form Elements

Positioning headings, paragraphs, and form

In the first section of the content, we’ll place headings, paragraphs, and a form. This will allow users to enter information, such as a URL or text, and generate a QR code based on their input.

Creating a form with input fields and a button

To enable users to input their desired information, we’ll create a form with input fields and a submit button. This will allow users to easily enter their desired text or URL and generate a QR code with a click of a button.

Ensuring the UI is cleared before generating a new QR code

To maintain a clean and intuitive user interface, we’ll make sure to clear the UI before generating a new QR code. This will prevent any residual information from carrying over and ensure that the user’s focus is solely on the newly generated QR code.

QR Code Generation Section

Using a flexbox for the generation section

To create the QR code generation section, we’ll use a flexbox. This will allow us to easily align the elements within this section and maintain a consistent and visually appealing layout.

Incorporating a hidden spinner SVG

To enhance the user experience, we’ll incorporate a hidden spinner SVG. This will be displayed when the QR code is being generated, indicating to the user that the process is ongoing.

Creating a placeholder for QR code output

To display the generated QR code, we’ll create a placeholder element. This will be the area where the QR code will appear once it is generated. The placeholder will ensure that the QR code is properly centered and visually prominent within the section.

Creating the Spinner

Incorporating the spinner SVG

The spinner SVG is a visual representation of the ongoing process of generating the QR code. By including this spinner SVG, we can provide users with a clear indication that their request is being processed.

Setting the spinner to be initially hidden

To ensure that the spinner is only displayed when needed, we’ll set the spinner to be initially hidden using CSS. This will prevent it from appearing unnecessarily and ensure that it only appears when the QR code is being generated.

Showing the spinner when a URL is entered

Once a user enters a URL and requests the QR code generation, we’ll show the spinner. This will provide the user with immediate feedback that their request has been received and is being processed.

Adding JavaScript Functionality

Using event listeners for form submission

To enable the generation of the QR code upon form submission, we’ll attach event listeners to the form. This will allow us to capture the user’s input and trigger the necessary actions to generate and display the QR code.

Validating to check if the URL field is empty

Before generating the QR code, we’ll validate the form to ensure that the URL field is not empty. This step is crucial to prevent any errors and to ensure that the user’s input is valid before proceeding.

Generating the QR code using the QR Code JS library

To generate the QR code, we’ll use the QR Code JS library. This library simplifies the process of generating QR codes by providing a straightforward API. We’ll pass the user’s input, such as the URL, to the library and generate the corresponding QR code.

Setting a delay before generating the QR code

To provide a smooth user experience and prevent any potential issues, we’ll introduce a delay before generating the QR code. This delay will ensure that all necessary processes are completed before displaying the QR code to the user.

Creating a Save Button/Link

Creating the button/link using the create element function

To allow users to save the QR code as an image, we’ll create a save button or link. This will provide a convenient way for users to download or store the QR code for future use.

Adding the saveUrl to the href value

To ensure that the save button or link is functional, we’ll add the saveUrl to the href value. This will ensure that when the user clicks the save button or link, the QR code is saved as an image file.

Adding the button/link to the DOM

To make the save button or link visible to the user, we’ll add it to the Document Object Model (DOM). This will ensure that it is displayed on the page and available for users to interact with.

Ensuring the URL is available before creating the button

To avoid any issues or errors, we’ll verify that the URL is available before creating the save button or link. This step is essential to prevent the button or link from appearing prematurely and to ensure that the user can successfully save the QR code.


In conclusion, creating a QR code generator using JavaScript, QRcode.js, and Tailwind CSS is a simple yet valuable side project. It allows users to generate QR codes for various purposes, such as sharing URLs or sending text messages.

Throughout this article, we have explored the motivation for creating such a project and highlighted the potential benefits it can bring. We have also discussed the initial setup and design, as well as the layout and design considerations for different screen sizes.

We have delved into the process of placing text and form elements, generating QR codes, and creating a save button or link. By following these steps and incorporating JavaScript functionality, we can create a functional and user-friendly QR code generator.

Side projects like this not only serve as learning opportunities but also demonstrate your skills to potential employers or clients. They allow you to think creatively and gain practical experience in developing applications from scratch.

So, why not embark on a side project like this? It may just bring you some additional income and open doors to new opportunities. Remember, even small projects can have a significant impact and contribute to your overall growth as a developer.

Happy coding!

Click Here To Purchase