Privacy-first · Zero server Static · No build step

QR4UPI

A privacy-first, browser-based generator for styled UPI payment QR cards. Generates upi://pay codes entirely in the browser — no uploads, no tracking, no friction.

Purpose

Most UPI QR generators are cluttered with ads, tracking scripts, or redirect to app-store funnels. QR4UPI is a single focused tool — fill the form, get your card, download or share.

Indian-native formatting

Amounts are formatted in the Indian numbering system (lakhs, crores) and displayed as words below the QR code — the way payment receipts in India have always looked.

Privacy model

Payment details are encoded only into the generated QR card. The app sends nothing to a server. Last-used form data is saved to localStorage for reuse on the same device and browser only.

Features

Clean, complete, and local.

Browser-native QR generation

Generates standard upi://pay deep-link QR codes entirely in the browser using a bundled library. No network call required after page load.

Indian-numbering formatting

Amount fields format values in the Indian numbering system and render the amount in words (e.g. "Rupees Five Thousand Only") below the card.

Download & share

Export the styled QR card as a JPEG or trigger the native Web Share API — letting users share directly to WhatsApp, Messages, or any installed app.

Multiple card themes

Switch between card themes to match context — a clean white card for printed receipts, or a darker variant for digital sharing.

Remembers last-used details

UPI ID, name, and last-used amount are persisted in localStorage so returning users skip re-entry on the same device and browser.

Zero dependencies at runtime

No CDN fetches at runtime. The QR library is bundled locally as qrcode.min.js. Works fully offline after first load.

Project structure

Four files. That is the whole app.

index.html Application markup — form, card preview, and action buttons
style.css Interface styling, card themes, and responsive layout
app.js Form state, QR rendering, Web Share API, JPEG export, and localStorage persistence
qrcode.min.js Bundled QR-code generation library — no CDN, no network dependency
favicon.svg Application favicon

Run locally

No build step. Open and go.

01

Clone or download this repository to your machine.

02

Open index.html directly in any modern browser — Chrome, Firefox, Safari, or Edge.

03

For the best browser compatibility (Web Share API, file exports), serve the folder with any static-file server: npx serve . or python -m http.server 8080.

Deployment

Static. Deploy anywhere.

GitHub Pages

Publish the repository root from the desired branch. No build command required — GitHub Pages serves the static files directly.

Cloudflare Pages

Connect the repository, set no build command, set output directory to / (root). Deploys to Cloudflare Edge globally on every push.

Any static host

Vercel, Netlify, or any web server that can serve static files. No build pipeline, no Node.js runtime — just file serving.