Generate QR codes programmatically via REST API. Compare 5 providers by free tier, customization, output formats, and ease of integration.
Last updated: March 6, 2026 · Based on official documentation
Instead of installing local libraries, generate QR codes on-demand via HTTP. Useful for automation, dynamic content, and scalable workflows.
Generate scannable QR codes for URLs in marketing materials, business cards, and product packaging. Link offline to online.
Print QR labels for warehouse items, equipment, and documents. Scan to look up details, track movements, or trigger workflows.
Embed QR codes in invoices, receipts, event tickets, and email campaigns. Recipients scan to pay, RSVP, or access content.
Generate WiFi login codes for offices, hotels, and events. Share contact info via vCard QR codes — scan to save.
Let AI agents generate QR codes as part of automated pipelines — meeting links, payment URLs, provisioning codes.
Generate thousands of unique QR codes for campaigns, serial numbers, or authentication tokens via API loops.
Most QR code APIs follow a simple pattern: send data, get an image back.
URL, text, WiFi, vCard, or any string to encode
Size, colors, error correction, margin, format
GET or POST to the API endpoint
PNG, SVG, or other format returned
Side-by-side comparison of free tiers, customization, and output format support.
| Provider | Free Tier | API Key | Colors | Logo | SVG | Decode | Method |
|---|---|---|---|---|---|---|---|
| goQR.me Free | Unlimited (fair use) | None needed | ✓ | ✗ | ✓ | ✓ | GET |
| QRCode Monkey Freemium | RapidAPI free tier | RapidAPI key | ✓ Gradient | ✓ | ✓ | ✗ | POST |
| qrcode.show Free | Unlimited (fair use) | None needed | ✓ | ✗ | ✓ | ✗ | GET/POST |
| Google Charts Deprecated | Unlimited | None needed | ✗ | ✗ | ✗ | ✗ | GET |
| Frostbyte 100 Free | 100 credits, no signup | None needed | ✓ | ✗ | ✓ (via convert) | ✗ | POST |
In-depth look at each QR code API with pros, cons, and standout features.
The most widely-used free QR code API. Simple GET requests to api.qrserver.com. Running reliably for 10+ years. Supports custom colors, multiple error correction levels, and 5 output formats including vector (SVG, EPS).
The most visually customizable QR code API. Supports logo embedding (upload custom or use presets like Facebook, Twitter), gradient colors, custom eye/body shapes, and even transparent QR overlays on background images. Accessed via RapidAPI marketplace.
Privacy-first, open-source QR generator on Cloudflare Workers. Unique header-based API works perfectly with curl. Only service supporting micro QR codes. Text/plain output renders QR as ASCII art in terminal. Zero data retention.
Still functional but officially deprecated by Google since 2012. Simple GET endpoint at chart.googleapis.com. PNG output only, no colors, no SVG. Widely referenced in legacy tutorials but risky for new projects — could be shut down at any time.
Part of the Frostbyte image processing suite (13 endpoints). Generate QR codes with custom colors, adjustable size, margin control, and multiple output formats. Same API key works across 40+ developer tools including screenshot, scraping, geolocation, and DNS.
Some QR code APIs work with zero authentication. Others require signing up first.
| Feature | No Key (goQR, qrcode.show, Google) | Key Required (QRCode Monkey, Frostbyte) |
|---|---|---|
| Setup time | 0 seconds — just send a request | 30 seconds — create free key |
| Rate limiting | IP-based, vague limits | Per-key, documented limits |
| Usage tracking | None | Dashboard or API balance |
| Abuse protection | Shared IP pool risk | Individual accountability |
| Best for | Quick scripts, one-off generation | Production apps, sustained usage |
Generate a QR code for "https://example.com" using each provider.
# Generate a 300x300 QR code as PNG curl -o qr.png "https://api.qrserver.com/v1/create-qr-code/?data=https://example.com&size=300x300" # With custom colors (green on black) curl -o qr.png "https://api.qrserver.com/v1/create-qr-code/?data=https://example.com&size=300x300&color=10b981&bgcolor=0a0a0f" # SVG output curl -o qr.svg "https://api.qrserver.com/v1/create-qr-code/?data=https://example.com&size=300x300&format=svg"
// Generate QR code via goQR.me const data = encodeURIComponent('https://example.com'); const url = `https://api.qrserver.com/v1/create-qr-code/?data=${data}&size=300x300`; // Use directly in an img tag document.getElementById('qr').src = url; // Or download as buffer const res = await fetch(url); const blob = await res.blob();
import requests # Generate QR code url = "https://api.qrserver.com/v1/create-qr-code/" params = {"data": "https://example.com", "size": "300x300"} response = requests.get(url, params=params) with open("qr.png", "wb") as f: f.write(response.content)
# PNG output curl -o qr.png -H "Accept: image/png" "https://qrcode.show/https://example.com" # SVG output curl -o qr.svg -H "Accept: image/svg+xml" "https://qrcode.show/https://example.com" # ASCII art in terminal curl -H "Accept: text/plain" "https://qrcode.show/https://example.com" # Custom colors (green foreground) curl -o qr.png -H "Accept: image/png" -H "X-QR-Dark-Color: 10b981" "https://qrcode.show/https://example.com"
// qrcode.show with headers const res = await fetch('https://qrcode.show/https://example.com', { headers: { 'Accept': 'image/png' } }); const blob = await res.blob(); // Or POST for longer data const res2 = await fetch('https://qrcode.show', { method: 'POST', headers: { 'Accept': 'image/svg+xml' }, body: 'WIFI:T:WPA;S:MyNetwork;P:MyPassword;;' });
import requests # PNG with custom colors response = requests.get( "https://qrcode.show/https://example.com", headers={ "Accept": "image/png", "X-QR-Dark-Color": "10b981" } ) with open("qr.png", "wb") as f: f.write(response.content)
# Get a free API key (no signup) curl -X POST "https://api.frostbyte.world/api/keys/create" # Generate QR code with custom colors curl -X POST "https://api.frostbyte.world/v1/agent-imageproc/api/qrcode" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"text":"https://example.com","size":300,"dark":"#10b981","light":"#0a0a0f","margin":2}'
// Get free API key const keyRes = await fetch('https://api.frostbyte.world/api/keys/create', { method: 'POST' }); const { apiKey } = await keyRes.json(); // Generate QR code const res = await fetch('https://api.frostbyte.world/v1/agent-imageproc/api/qrcode', { method: 'POST', headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ text: 'https://example.com', size: 300, dark: '#10b981', light: '#ffffff' }) }); const { image, format } = await res.json(); // image is base64 encoded
import requests, base64 # Get free API key key_res = requests.post("https://api.frostbyte.world/api/keys/create") api_key = key_res.json()["apiKey"] # Generate QR code res = requests.post( "https://api.frostbyte.world/v1/agent-imageproc/api/qrcode", headers={"Authorization": f"Bearer {api_key}"}, json={"text": "https://example.com", "size": 300} ) img_data = base64.b64decode(res.json()["image"]) with open("qr.png", "wb") as f: f.write(img_data)
QR codes can encode more than just URLs. Here are the standard data formats that all QR APIs accept.
| Type | Data Format | Example |
|---|---|---|
| URL | Plain URL | https://example.com |
| WiFi | WIFI:T:<auth>;S:<ssid>;P:<pass>;; | WIFI:T:WPA;S:MyNetwork;P:secret123;; |
| vCard | BEGIN:VCARD...END:VCARD | BEGIN:VCARD\nVERSION:3.0\nN:Doe;John\nTEL:+1234567890\nEND:VCARD |
| mailto: URI | mailto:hello@example.com?subject=Hello | |
| Phone | tel: URI | tel:+1234567890 |
| SMS | smsto: URI | smsto:+1234567890:Your message here |
| Geo | geo: coordinates | geo:40.7128,-74.0060 |
| Text | Plain text | Any text content up to ~4,296 chars |
Try it right now. Type any text or URL to generate a QR code using the Frostbyte API.
What happens when you outgrow the free tier?
Unlimited fair use. Contact them for 10K+/day. No paid plans published.
Free tier via RapidAPI. Paid plans through RapidAPI marketplace.
Community-funded open source. No paid tiers. Donation-supported.
3,000 API calls/mo. Dynamic QR codes. Scan analytics. 14-day trial.
100 free credits. Top up with USDC. Same key for 40+ tools.
Pick the right tool based on your use case.
You need a QR code fast, no signup, no dependencies. Just a URL you can hit.
Marketing materials need custom styling — your logo, brand colors, gradient effects.
You want QR codes in your terminal, CI/CD scripts, or curl-based automation.
You need to change the destination URL after printing and track scan counts.
QR generation is one step in a pipeline with screenshots, scraping, geolocation, etc.
You cannot send data to external APIs. Need full control over the generation.
WIFI:T:WPA;S:NetworkName;P:Password;;. Pass this as the data parameter and the API generates a scannable QR code that will auto-connect phones to the WiFi network. No API generates structured WiFi QR codes automatically — you construct the payload.api.qrserver.com/v1/read-qr-code/ — upload an image or pass a URL and it returns the decoded content as JSON. Most other QR APIs are generation-only. For local decoding, use libraries like zxing (Java), pyzbar (Python), or jsQR (JavaScript).Get a free API key with 100 credits. No signup, no credit card. Works with 40+ developer tools.
Get Free API Key