Skip to content

Repository files navigation

Free QR Code Generator

Create Static QR Codes In Seconds.

Free QR Code Generator

Generate, Customize, Download and Scan QR codes — Entirely in your browser. No account. No expiry. No server.

Live Demo React Vite TypeScript Tailwind CSS

Try it live


Table of Contents


Overview

Free QR Code Generator is a production-ready, client-side web app for creating static QR codes — the kind that encode your data directly and never depend on a redirect service or subscription.

Pick from 12+ content types (URL, vCard, Wi-Fi, phone, email, PDF, menu, app links, and more), walk through a simple 3-step wizard, customize colors, frames, and logos, then download as PNG, SVG, PDF, or JPG. A built-in camera scanner reads any QR code in the browser, and your recent designs are saved locally so you can restore them anytime.

Everything runs in the browser. Nothing is uploaded to a backend.


Key Features

  • 100% static QR codes — content is encoded directly; codes never expire and work offline after download
  • 12+ content types — URL, vCard, PDF, images, social, video, text, Wi-Fi, app, menu, phone, email
  • 3-step creation wizard — choose type → add content → customize design
  • Live preview — instant updates as you edit content or styling
  • Rich customization — foreground/background colors, size, error correction (L/M/Q/H), center logo, 6 frame styles
  • Multi-format export — PNG, SVG, PDF, JPG with custom filenames
  • Built-in QR scanner — camera scan or image upload via html5-qrcode; nothing leaves your device
  • Local history — last 24 QR codes stored in localStorage with one-click restore
  • Social sharing — WhatsApp, Facebook, X, LinkedIn, Telegram, email
  • Mobile-first UI — responsive layout, safe-area support, touch-friendly controls
  • Accessible — semantic HTML, ARIA labels, keyboard-friendly forms
  • Zero signup — no accounts, no API keys required for end users

User Flow

flowchart TD
    A[Open Free QR Generator] --> B[Homepage]
    B --> C{What do you want?}

    C -->|Create| D[Choose QR type]
    D --> E[Step 2: Add content]
    E --> F[Step 3: Customize design]
    F --> G[Download PNG / SVG / PDF / JPG]
    F --> H[Share or copy content]
    G --> I[Saved to local history]

    C -->|Scan| J[Open built-in scanner]
    J --> K{Camera or upload?}
    K -->|Camera| L[Live scan]
    K -->|Upload| M[Decode from image]
    L --> N[Show result + open link if URL]
    M --> N

    I --> O[Restore from Recent QR Codes]
    O --> E
Loading

Architecture

The app is a single-page React application with no backend. QR generation, encoding, rendering, export, scanning, and history all happen in the browser.

flowchart LR
    subgraph Browser[Browser — React 19 SPA]
      UI[Marketing + Wizard UI]
      Encoder[qrEncoder.ts]
      Styling[qr-code-styling]
      Export[download.ts — PNG/SVG/PDF/JPG]
      Scanner[html5-qrcode]
      History[localStorage — 24 items]
    end

    UI --> Encoder
    Encoder --> Styling
    Styling --> Export
    UI --> Scanner
    UI --> History
    History --> UI
Loading
Concern Approach
Routing React Router — / homepage, /create/:slug wizard
State React hooks + QrHistoryContext
QR rendering qr-code-styling canvas/SVG output
PDF export jsPDF + canvas rasterization
Persistence localStorage only — no database
Hosting Static files on Vercel or Netlify (SPA rewrites)

Tech Stack

Layer Technology
Framework React 19 + TypeScript 5.8
Build Vite 6
Routing React Router 7
Styling Tailwind CSS 3 + Inter font
QR engine qr-code-styling
Scanner html5-qrcode
PDF export jsPDF
Icons Lucide React
Deployment Vercel (primary) · Netlify supported

Quick Start

Prerequisites

  • Node.js 18+ (20+ recommended)
  • npm 9+

Setup

git clone https://github.com/LakiyaDev/FreeQrCodeGenerator.git
cd FreeQrCodeGenerator

npm install
npm run dev

Open http://localhost:5173

Production build

npm run build
npm run preview   # serve dist/ locally

Output is written to dist/.


QR Content Types

Type Route slug Encoded as
Website URL website-url https://…
vCard vcard vCard contact string
PDF pdf URL to hosted PDF
Images images URL to image gallery
Social Media social-media Profile or link page URL
Video video YouTube, Vimeo, or other video URL
Simple Text text Plain text message
Wi-Fi wifi WIFI:T:…;S:…;P:…;;
App app App Store / Google Play URLs
Menu menu Digital restaurant menu URL
Phone phone tel:+…
Email email mailto:…?subject=…&body=…

Unlike dynamic QR services that use short redirect URLs, every code above embeds the payload directly — so it keeps working even if this website goes offline.


Project Structure

.
├── public/
│   ├── favicon.svg
│   └── hero-scan-me-qr.png
├── src/
│   ├── components/
│   │   ├── actions/          # Download, share, copy buttons
│   │   ├── generator/        # Wizard, forms, preview, customization
│   │   ├── history/          # Recent QR codes grid
│   │   ├── layout/           # Header, footer
│   │   ├── marketing/        # Hero, features, FAQ, how-it-works
│   │   ├── scanner/          # Camera + upload scanner
│   │   └── ui/               # Button, Input, Accordion
│   ├── config/
│   │   └── contentTypes.ts   # 12 QR type definitions + slugs
│   ├── context/
│   │   └── QrHistoryContext.tsx
│   ├── hooks/
│   │   ├── useDarkMode.ts
│   │   └── useQrHistory.ts
│   ├── lib/
│   │   ├── qrEncoder.ts      # Validation + payload encoding
│   │   ├── download.ts       # PNG, SVG, PDF, JPG export
│   │   └── share.ts          # Social share URLs + history helpers
│   ├── pages/
│   │   ├── HomePage.tsx
│   │   └── CreateQrPage.tsx  # 3-step wizard
│   ├── types/
│   ├── App.tsx
│   └── main.tsx
├── index.html
├── netlify.toml              # Netlify SPA config
├── vercel.json               # Vercel SPA rewrites
└── package.json

Available Scripts

Command Description
npm run dev Start Vite dev server (port 5173)
npm run build Type-check + production build → dist/
npm run preview Preview production build locally
npm run lint Run ESLint

Deployment

Vercel (recommended)

The live site is deployed at freeqrcodegen.vercel.app.

Setting Value
Import vercel.com/new — connect GitHub repo
Build command npm run build
Output directory dist
SPA routing Handled by vercel.json
CLI deploy npx vercel

Netlify

Setting Value
Import app.netlify.com — connect GitHub repo
Build command npm run build
Publish directory dist
SPA routing Handled by netlify.toml

How Static QR Codes Work

Dynamic QR services route scans through their servers with expiring short links. This app does the opposite:

  1. You enter content (URL, phone number, Wi-Fi credentials, etc.)
  2. The payload is encoded into the QR matrix on your device
  3. The downloaded image is self-contained — scanners read the data directly

Once generated, your QR code works forever without depending on Free QR Generator.


Privacy

Topic Policy
Accounts No signup required — nothing to register for
Data uploads Generation and scanning happen entirely client-side
Analytics No mandatory tracking in the core app
History Stored in browser localStorage; clearable anytime
Camera Requested only when the scanner is opened; revocable in browser settings

License

© LakiyaDeV. All rights reserved.

For licensing questions, open an issue on the repository.


Free QR Code Generator

Built for everyone who needs QR codes without subscriptions, redirects or expiry dates.

About

This Repo contain Open source QR Code Generator for creating permanent static QR codes with logo support, color customization, local history, and instant downloads.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

Contributors

Languages