How to Stop Paying Online Services for Generating Basic QR Codes
Every time a designer or layout artist needs a neat QR code for a landing page or print materials, the same quest begins. You open the first generator you find in a search, spend five minutes tweaking colors, upload a logo, hit the download button, and suddenly the site demands registration, a paid subscription, or generates a dynamic code that redirects through their slow servers. Sound familiar?
I recently discovered an open-source project called mini-qr by a developer going by lyqht. It's a lightweight web app that does exactly what you'd expect: quickly generates beautiful vector codes without watermarks, trackers, or subscriptions.
Why this project is practically useful
Most open-source generators output boring black-and-white squares in basic format. Mini QR goes further and offers a visual style editor with proper control over the result.
Here's what this tool can do:
- Styling modules and frames. You can change the shape of dots, finder patterns (corner markers), round the corners, and configure the outer frame with custom text.
- Inserting logos in the center. The app automatically manages the Error Correction Level so scanners continue to reliably read the code even with the center covered.
- Data templates for different tasks. No need to manually assemble raw strings like
WIFI:S:MyNet;T:WPA;P:secret;;. The interface has ready-made forms for Wi-Fi credentials, vCard contacts, calendar events, geolocations, links, and even EPC QR payments (SEPA). - Export to any format. The result is delivered as clean SVG for printing, raster PNG/JPG, or as ASCII/Unicode characters right in the terminal.
Batch export deserves special mention. You can feed the app a CSV table with a list of links or contacts, and it will generate a whole batch of consistently styled images in an archive. For conference badges or inventory stickers in a warehouse, this saves a couple of hours of routine work.
Built-in scanner and local processing
Alongside the generator, the app includes a scanner. It works directly via WebRTC stream from a webcam or parses an uploaded image.
If the code contains structured data (for example, a Wi-Fi password or contact), the scanner recognizes the type and shows a quick action button. There are no requests to third-party backends here: all parsing and rendering happen strictly in the browser on the client side. Your data doesn't go anywhere.
The app also supports PWA, so you can install it as a separate icon on your desktop or phone and use it without a constant network connection.
Under the hood
The project's technical stack looks modern and clean:
- Vue 3 with TypeScript
- Built with Vite
- Components based on shadcn-vue and Tailwind CSS
- Localization in 30+ languages via Crowdin
- Component testing via Storybook
The authors took accessibility seriously: the interface meets basic WCAG A requirements, supports light, dark, and system color themes, and correctly handles complex UTF-8 characters (Arabic script, CJK characters, emoji).
The internal rendering library can be tested separately right in the project's public Storybook, which makes it easier to integrate similar components into your own frontend services.
Running it locally
If you don't want to use the public demo on Vercel or want to deploy the generator within your company's internal network with your own brand presets, the project is easy to spin up locally.
Clone the repository and install dependencies:
git clone https://github.com/lyqht/mini-qr.git
cd mini-qr
pnpm install
pnpm dev
For production, the project is packaged in a Docker container or built into a static folder with the pnpm build command, after which it can be served by any web server like Nginx or Caddy.
The project is licensed under GPL-3.0. This means the code is open for forks and self-hosting, but you won't be able to close the sources when modifying it.
Who will find this useful
Mini QR addresses two needs at once.
First, it's a convenient work tool for everyday tasks: printing a guest Wi-Fi password for the office kitchen, preparing SVG codes for a presentation, or formatting links on conference attendee badges.
Second, it's a good example of a quality Vue 3 and Tailwind application. Here you can see how to organize Storybook workflows for specialized graphic components, how to set up convenient file exports, and how to automate previews for pull requests.
If you regularly deal with QR codes, check out the demo or bookmark the project. It solves the task cleanly and without extra noise.
Related projects