π Overview
QRwave is a professional, feature-rich QR code generator built with pure PHP and modern web technologies. It provides an intuitive interface for creating customized QR codes with advanced styling options, live preview, and multiple export formats.
Pure PHP
No framework required. Works with PHP 7.4+ on any web server.
Modern UI
Beautiful, responsive interface built with Bootstrap 5.
Multi-language
Support for 7 languages with easy translation.
β¨ Features
Content Types (8 Options)
- 1 Text - Plain text content
- 2 URL/Website - Direct link to any website
- 3 Email - Email address with subject and body
- 4 Phone - Direct phone number dialing
- 5 SMS - Text message with phone and content
- 6 WiFi - Network credentials (SSID, password, encryption)
- 7 vCard - Contact information (name, org, title, phone, email, website)
- 8 Location - Geographic coordinates with OpenStreetMap search
Styling Options
- β Custom foreground & background colors
- β Transparent background option
- β Linear & radial gradients
- β Gradient rotation control (0-360Β°)
- β Adjustable QR size (220-560px)
- β Configurable margin
- β 4 error correction levels (L, M, Q, H)
- β 6 dot pattern styles
- β Custom corner markers
- β Separate pattern & marker colors
Branding & Overlays
- πΌοΈ Logo upload with size control
- πΌοΈ Logo margin adjustment
- πΌοΈ Hide dots behind logo option
- π§ Watermark image support
- π§ Opacity control (5-80%)
- π§ Size adjustment
Frame & Layout
- π― 3 frame styles: Simple, Rounded, Badge
- π― Custom frame color
- π― Label text with color customization
- π 3 layout options: Controls left, Controls right, Stacked
- π¨ Theme color picker
Export Formats
High-quality raster image
Scalable vector format
A4 page centered
π Installation
Server Requirements
PHP 7.4 or higher (PHP 8.x recommended)
Apache or Nginx web server
Internet access for CDN assets (optional - can use local files)
Installation Steps
Upload Files
Upload the entire QRwave folder to your web server's document root directory.
Set Permissions
Ensure the web server has read access to all files and write access to any cache directories (if added).
Access the Application
Open your browser and navigate to the URL where you uploaded the files (e.g., https://yourdomain.com/QRwave/).
Configure (Optional)
Edit config/app.php to customize default language, theme color, and map provider settings.
βοΈ Configuration
All configuration is managed through the config/app.php file. Here's the complete configuration structure:
<?php
return [
// Application name
'name' => 'QRwave',
// Default language
'default_lang' => 'en',
// Available languages
'languages' => [
'en' => 'English',
'es' => 'EspaΓ±ol',
'fr' => 'FranΓ§ais',
'de' => 'Deutsch',
'it' => 'Italiano',
'pt' => 'PortuguΓͺs',
'zh' => 'δΈζ'
],
// Theme configuration
'theme' => [
'primary' => '#6f42c1' // Primary theme color
],
// Map provider settings
'maps' => [
'provider' => 'openstreetmap', // or 'google'
'google_key' => '' // Google Maps API key (if using Google)
],
// Demo mode settings
'demo' => [
'disable_exports' => true // Disable downloads in demo mode
]
];
Configuration Options
| Option | Type | Description |
|---|---|---|
name |
string | Application name displayed in the UI |
default_lang |
string | Default language code (must exist in languages array) |
languages |
array | Available languages with their display names |
theme.primary |
hex | Primary theme color for UI elements |
maps.provider |
string | Map provider: 'openstreetmap' or 'google' |
maps.google_key |
string | Google Maps API key (required if using Google) |
demo.disable_exports |
boolean | Disable download buttons in demo mode |
π Usage Guide
Creating a QR Code
Follow these steps to create a customized QR code:
Select Content Type
Choose from 8 content types: Text, URL, Email, Phone, SMS, WiFi, vCard, or Location.
Enter Content
Fill in the required fields for your selected content type. The QR code updates in real-time.
Customize Style
Adjust colors, gradients, patterns, markers, and other styling options in the Style and Pattern sections.
Add Branding (Optional)
Upload a logo or watermark, adjust size and opacity settings in the Logo and Watermark sections.
Add Frame (Optional)
Enable and customize a frame with label in the Frame section.
Export
Download your QR code in PNG, SVG, or PDF format using the Export buttons.
Content Type Examples
Email QR Code
Email: contact@example.com
Subject: Inquiry
Body: Hello, I'd like to learn more about your services.
WiFi QR Code
SSID: MyNetwork
Password: secret123
Encryption: WPA/WPA2
vCard QR Code
First Name: John
Last Name: Doe
Organization: Acme Inc.
Title: Developer
Phone: +1 555 0100
Email: john@example.com
Website: https://example.com
Location QR Code
Search: "Eiffel Tower, Paris"
Or manually enter:
Latitude: 48.8584
Longitude: 2.2945
π¨ Customization
Theme Colors
Customize the primary theme color by editing config/app.php:
'theme' => [
'primary' => '#6f42c1' // Change to your preferred color
]
CSS Customization
Override styles by creating a custom CSS file and including it after app.css:
/* Example: Custom button styles */
.btn-primary {
background: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);
}
/* Example: Custom card styling */
.card {
border-radius: 24px;
box-shadow: 0 8px 40px rgba(0,0,0,0.1);
}
Adding New Languages
Create Translation File
Copy config/lang/en.php and rename it to your language code (e.g., ja.php for Japanese).
Translate Strings
Translate all values in the array while keeping the keys unchanged.
Register Language
Add the language to the languages array in config/app.php.
// config/app.php
'languages' => [
'en' => 'English',
'es' => 'EspaΓ±ol',
'ja' => 'ζ₯ζ¬θͺ' // Added Japanese
]
π Languages
QRwave supports multiple languages out of the box. Translation files are located in config/lang/.
Available Languages
| Code | Language | File |
|---|---|---|
en |
English | config/lang/en.php |
es |
EspaΓ±ol | config/lang/es.php |
fr |
FranΓ§ais | config/lang/fr.php |
de |
Deutsch | config/lang/de.php |
it |
Italiano | config/lang/it.php |
pt |
PortuguΓͺs | config/lang/pt.php |
zh |
δΈζ | config/lang/zh.php |
Translation File Structure
<?php
return [
'brand' => 'QRwave',
'tagline' => 'Responsive QR Code generator',
'nav_home' => 'Generator',
'nav_demo' => 'Demo',
'content_title' => 'Content',
'content_type' => 'Type',
// ... more translation keys
];
π€ Export Options
QRwave supports three export formats, each optimized for different use cases:
Raster Format
- β High quality
- β Widely compatible
- β Perfect for web
- β Fixed resolution
Vector Format
- β Scalable
- β Small file size
- β Editable
- β Print quality
Document Format
- β A4 page
- β Centered layout
- β Print ready
- β Easy sharing
Export Settings
Exports can be disabled in demo mode via configuration:
'demo' => [
'disable_exports' => true // Set to false to enable exports
]
π API Reference
QRwave uses the qr-code-styling library for QR code generation. Below are the key configuration options:
QR Code Options
| Option | Type | Description |
|---|---|---|
width |
number | QR code width in pixels (220-560) |
height |
number | QR code height in pixels (220-560) |
data |
string | QR code content/data |
margin |
number | Margin around QR code (0-20) |
qrOptions.errorCorrectionLevel |
string | Error correction: 'L', 'M', 'Q', 'H' |
Dots Options
| Option | Type | Values |
|---|---|---|
type |
string | 'square', 'dots', 'rounded', 'classy', 'classy-rounded', 'extra-rounded' |
color |
hex | Dots color (e.g., '#111111') |
gradient.type |
string | 'linear', 'radial' |
gradient.rotation |
number | Rotation angle in radians |
Corner Options
| Option | Type | Values |
|---|---|---|
cornersSquareOptions.type |
string | 'square', 'extra-rounded' |
cornersDotOptions.type |
string | 'square', 'dot' |
color |
hex | Corner color |
Image Options
| Option | Type | Description |
|---|---|---|
image |
string | Base64 image data URL |
imageOptions.margin |
number | Logo margin (0-12) |
imageOptions.imageSize |
number | Logo size as percentage (0.1-0.4) |
imageOptions.hideBackgroundDots |
boolean | Hide dots behind logo |
π§ Troubleshooting
Common Issues
Solution: Ensure JavaScript is enabled in your browser. Check browser console for errors. Verify CDN libraries are accessible.
Solution: Check if demo mode is enabled. Set 'disable_exports' => false in config/app.php. Ensure browser allows downloads.
Solution: Verify internet connection. OpenStreetMap service may be temporarily unavailable. Try using manual latitude/longitude entry.
Solution: Ensure uploaded images are valid (PNG, JPG, GIF). Check file size limits. Verify browser supports FileReader API.
Solution: Clear browser cache. Verify CSS file is loading. Check for conflicting styles in custom CSS files.
Error Messages
| Error | Cause | Solution |
|---|---|---|
| "Invalid QR code data" | Data too long for error correction level | Increase error correction to H or reduce content length |
| "Image upload failed" | File too large or invalid format | Use smaller images (under 2MB) in PNG/JPG format |
| "Export failed" | Browser security restriction | Check browser permissions, try different browser |
β FAQ
Yes! Download the CDN libraries (Bootstrap, jQuery, qr-code-styling, html2canvas, jsPDF) and update the script tags in public/index.php to use local paths instead of CDN URLs.
- Copy
config/lang/en.phpas a template - Rename it to your language code (e.g.,
ja.php) - Translate all string values
- Add the language to
config/app.phpin the languages array
Yes! Update the theme.primary value in config/app.php or use the theme color picker in the UI Layout section.
The UI allows sizes from 220px to 560px. You can modify this range in the HTML by changing the min and max attributes of the size slider.
No! All QR code generation happens client-side in the browser. No data is sent to or stored on the server.
Yes! Set 'provider' => 'google' in config/app.php and add your Google Maps API key to 'google_key'.
Set 'disable_exports' => false in config/app.php to enable export functionality. Remove the ?demo=1 parameter from URLs.
Yes! You can embed the QR generator in an iframe or integrate the JavaScript components directly into your existing pages.
π Changelog
Version 1.0.0 - January 22, 2026
- β Initial release
- β 8 content types (Text, URL, Email, Phone, SMS, WiFi, vCard, Location)
- β Advanced styling options (colors, gradients, patterns, markers)
- β Logo and watermark support
- β Frame and label customization
- β 3 layout options
- β Export to PNG, SVG, PDF
- β Multi-language support (7 languages)
- β Live preview
- β Location search with OpenStreetMap
- β Professional UI with modern design
- β Responsive design
- β Demo mode
π¬ Support
If you need help with QRwave, please follow these steps:
Check Documentation
Review this documentation thoroughly, especially the FAQ and Troubleshooting sections.
Search for Solutions
Search online for similar issues or check the CodeCanyon comments section.
Contact Support
If you still need help, contact us through the CodeCanyon support system with:
- Your purchase code
- Detailed description of the issue
- Screenshots or error messages
- Steps to reproduce the problem
Support Scope
- Bug fixes
- Setup assistance
- Configuration help
- Feature clarification
- Custom development
- New features
- Third-party integrations
- Server configuration
π License
QRwave is licensed under the CodeCanyon Regular/Extended License. By purchasing this item, you agree to the following terms:
Regular License
- Use in one end product (end users are not charged)
- Includes future updates
- 6 months support (can be extended to 12 months)
Extended License
- Use in one end product (end users are charged)
- Includes future updates
- 6 months support (can be extended to 12 months)
What You Can Do
- β Use in personal and commercial projects
- β Customize the code to fit your needs
- β Include in SaaS products (with Extended License)
What You Cannot Do
- β Resell or redistribute the item
- β Claim ownership of the code
- β Use in multiple products (purchase additional licenses)
π Credits
QRwave is built using the following open-source libraries and frameworks:
| Library | Version | License | Website |
|---|---|---|---|
| Bootstrap | 5.3.3 | MIT | getbootstrap.com |
| jQuery | 3.7.1 | MIT | jquery.com |
| QR Code Styling | 1.5.0 | MIT | GitHub |
| html2canvas | 1.4.1 | MIT | html2canvas.hertzen.com |
| jsPDF | 2.5.1 | MIT | GitHub |