QR Code API for Developers
Generate QR codes programmatically via HTTP. PNG, SVG, or JSON response — no signup, no API key, CORS-enabled. Perfect for websites, apps, and server-side integrations.
The Entire API — One URL
Copy this URL, change the datavalue, and you're done. That's the whole API.
https://qrendless.pro/api/qr/?data=https://example.com&format=pngPNG (default)&format=jpgJPG image&format=svgSVG vector&format=pdfPDF print&size=51264–1024 px&transparent=trueNo background&dark=#1a73e8Dark color&light=#ffffffLight color&ecc=HL/M/Q/H&margin=40–10 moduleshttps://qrendless.pro/api/qr/?data=https://example.com&format=png&size=512&transparent=true&dark=%231a73e8&light=%23ffffff&ecc=H&margin=2Copying This API = 1 of Our 7 Tools
The site has 7 tools in the browser. The API exposes only 1 tool — the QR Code Generator. The other 6 tools are browser-only (by design — they need camera, image upload, or heavy compute that can't be done over HTTP).
✓ What the API Does
Generates QR codes from any text/URL via the data parameter.
The Generator covers 1,421+ QR types across 38 categories — Payment, Business, Food & Restaurant, Real Estate, Automotive, and 33 more.
All 1,421+ types work via the same single endpoint — just pass the right data value (URL, WiFi string, vCard, UPI URI, etc.).
✗ What the API Doesn't Do
These 6 tools are browser-only — not exposed via the API:
- QR Scanner (needs camera)
- QR Decoder (needs image upload)
- QR Customizer (logo/colors)
- Bulk QR Generator (heavy compute)
- QR Enhancer (image upscale)
- QR Expiry Checker (image upload)
1,421+ QR Types Across 38 Categories — All Work Via API
The QR Generator (the tool this API exposes) supports 1,421+ QR types organized into 38 categories. The API doesn't care about the category — it just encodes whatever you pass in data. Here's a sample of 12 categories with the kind of data value each expects.
upi://pay?pa=name@upi&am=100
https://menu.example.com
https://biz.example.com
https://track.example.com
https://service.example.com
https://tour.example.com
https://instagram.com/user
https://course.example.com
tel:+155911
https://event.example.com
https://api.example.com
+ 26 more categories including Networking, Events, Education, Health, Smart Packaging, Public Services, Policy, Environment, and more. Browse all 1,421+ types in the in-browser QR Generator tool.
You Copy ONE API — Not 1,421 Different APIs
The QR Generator tool covers 1,421+ QR types across 38 categories (URL, WiFi, UPI, vCard, Email, Phone, SMS, Geo, etc.). But you do NOT need to copy 1,421 different API endpoints. ONE endpoint covers all of them — the data parameter determines what gets encoded.
/api/qr/?data=...data valueSame Endpoint, Different QR Type
/api/qr/?data=https://qrendless.pro/api/qr/?data=WIFI:T:WPA;S:MyNet;P:pass;;/api/qr/?data=upi://pay?pa=name@upi&am=100/api/qr/?data=BEGIN:VCARD...END:VCARDWhy this works: A QR code is just a 2D barcode that encodes arbitrary text. The QR standard doesn't care whether the text is a URL, a WiFi string, a vCard, or a UPI URI — it encodes whatever bytes you give it. So one endpoint that accepts data=anything covers every QR type that exists.
How Big Sites Provide APIs — 4 Patterns Compared
Big API providers use 4 main architecture patterns. QREndlessPro uses pattern #4 (one endpoint, data param) — the simplest for a single-purpose API like QR generation.
Many endpoints (one per resource type)
Examples: Stripe (/v1/charges, /v1/customers, /v1/products), Twilio (/2010-04-01/Accounts, /Messages)
How: Each resource type gets its own URL endpoint. Developers learn many URLs.
Best for: Complex APIs with many distinct resources (payments, messaging, CRM).
One endpoint per tool
Examples: iLovePDF (/api/v1/merge, /api/v1/split, /api/v1/compress), Smallpdf
How: Each tool (merge, split, compress) is a separate endpoint. Clear but verbose.
Best for: Multi-tool suites where each tool does something fundamentally different.
One endpoint, action param
Examples: bit.ly (/v4/shorten, /v4/expand — but unified via OAuth scopes)
How: Single endpoint + `action` parameter to select behavior. Compact API surface.
Best for: APIs with related actions on the same data type.
One endpoint, data param (QREndlessPro approach)
Examples: QREndlessPro (/api/qr/?data=...), QRCode Monkey (api.qrserver.com/api/create)
How: Single endpoint. The `data` parameter determines what the QR encodes. 1 endpoint = 1,421+ QR types.
Best for: Single-purpose APIs (QR generation) where the input is the only variable.
Generate a QR Code in 1 Line
The base URL is https://qrendless.pro/api/qr/. Use GET with query params or POST with JSON body.
# Generate a PNG QR code (default 256x256) curl "https://qrendless.pro/api/qr/?data=https://example.com" -o qr.png # SVG format, custom size + color curl "https://qrendless.pro/api/qr/?data=https://example.com&format=svg&size=512&dark=%231a73e8" -o qr.svg # JSON response (returns data URL) curl "https://qrendless.pro/api/qr/?data=hello&format=json"
Try It Live
Generate a QR code right here — no API key, no signup. Adjust the options and see the live preview + request URL.
Live Try-It
No API key/api/qr/?data=https%3A%2F%2Fqrendless.pro&size=256&format=png&dark=%23000000&light=%23ffffff&ecc=M
API Reference
All parameters work with both GET (query string) and POST (JSON body).
| Parameter | Type | Description |
|---|---|---|
| data | string | Text or URL to encode. Max 2,048 chars (GET) or 10,000 chars (POST). Covers all 1,421+ QR types — just change the data value. |
| format | string | Output format: png | jpg | svg | pdf. (WebP removed — use PNG + browser canvas.toDataURL if needed.) |
| size | number | Image size in pixels. Range: 64–1024. |
| transparent | boolean | Transparent background (PNG only — JPG doesn't support alpha). Use transparent=true for overlaying QR on colored backgrounds. |
| dark | string | Hex color for dark modules. Format: #RGB or #RRGGBB. |
| light | string | Hex color for light background. Ignored when transparent=true. |
| ecc | string | Error correction level: L (7%) | M (15%) | Q (25%) | H (30%). |
| margin | number | Quiet zone margin in modules. Range: 0–10. |
4 Output Formats — PNG, JPG, SVG, PDF
Pick the format that fits your use case. All formats are generated server-side via pure-JS encoders (qrcode + pngjs + jpeg-js + jspdf). PNG supports transparent=true for transparent backgrounds. WebP is not supported — use PNG and convert client-side via canvas.toDataURL('image/webp') if needed.
Binary image/png. Lossless, universal. Use for downloads, embedding, blob URLs. Supports transparent=true for transparent background (alpha channel).
Binary image/jpeg. Smaller file size (quality 90). Use for colored QRs on web pages. format=jpg or jpeg. No transparency (JPG doesn't support alpha).
Text image/svg+xml. Vector, scalable to any size. Ideal for print, PDFs, design tools. Supports transparent background.
Binary application/pdf. A4 portrait with QR centered. Print-ready for business cards, flyers, posters.
Generate Any QR Type via API
The API accepts any text or URL scheme in the data parameter. Here are 8 common QR types with real-world scenarios + the exact data value to pass.
Marketing campaigns, product packaging, print ads — scan to open a landing page.
https://qrendless.pro
💡 URL-encode special characters (& = ?) when passing via GET query string.
Cafes, restaurants, hotels, offices — scan to auto-join the WiFi network.
WIFI:T:WPA;S:MyNetwork;P:MyPassword;;
💡 Format: WIFI:T:<auth>;S:<ssid>;P:<password>;; — supported natively by iOS + Android.
Business cards, networking events — scan to save contact details to phone.
BEGIN:VCARD\nVERSION:3.0\nN:Last;First\nTEL:+1234567890\nEND:VCARD
💡 Use POST /api/qr/ for vCards — they exceed 2,048 chars (GET limit).
Retail stores, freelancers, donations — scan to pay via UPI apps.
upi://pay?pa=name@upi&pn=Name&am=100&cu=INR
💡 am= amount, cu= currency. Works with PhonePe, GPay, Paytm, BHIM.
Support cards, contact forms — scan to open pre-filled email.
mailto:[email protected]?subject=Hello
💡 Use mailto: scheme — opens default email client with subject pre-filled.
Customer support, helplines — scan to dial the number.
tel:+15551234567
💡 Include country code (+1, +91, +44) for international compatibility.
Subscription signups, feedback forms — scan to send a pre-filled SMS.
sms:+15551234567?body=SUBSCRIBE
💡 Body text is URL-encoded. iOS + Android both support the sms: scheme.
Event venues, real estate, tourism — scan to open in maps app.
geo:40.7128,-74.0060
💡 Format: geo:<lat>,<long> — opens in Google Maps, Apple Maps, or Waze.
What the API Exposes (and What It Doesn't)
QREndlessPro has 7 main tools in the browser. The public API exposes only 1 capability — QR code generation. The other 6 tools are browser-only (by design, for zero-harm privacy).
Tool Exposure Matrix
| Tool | Exposed? |
|---|---|
| QR Code Generator | Yes |
| Bulk QR Generator | No |
| QR Customizer (logo, colors) | No |
| QR Scanner (camera) | No |
| QR Decoder (image) | No |
| QR Enhancer (upscale) | No |
| QR Expiry Checker | No |
Permissions Required
| Requirement | Needed? | Note |
|---|---|---|
| API Key | None | None — public API |
| OAuth / Bearer Token | None | None — no auth flow |
| JWT | None | None — no token exchange |
| Referer Header | None | None — works from any origin |
| Account / Signup | None | None — anonymous use |
| Credit Card | None | None — free tier is the only tier |
| CORS preflight (OPTIONS) | Yes | Handled automatically by browsers |
| HTTPS | Yes | Production enforces HTTPS only |
Summary: The API requires zero authentication. Just send an HTTP GET or POST request — no API key, no signup, no headers beyond Content-Type for POST.
Full Security Posture
The API is fully secure by design — no authentication surface, no data retention, edge-sandboxed runtime. Here are the 10 security properties enforced.
All API requests + responses travel over HTTPS. No plaintext exposure.
No API key, no OAuth, no JWT, no Bearer tokens. Public read-style API — just send the request.
Access-Control-Allow-Origin: * — call directly from any website's frontend JavaScript.
60 requests/minute per IP. Prevents abuse without requiring signup or throttling legitimate users.
Client IP used only for in-memory rate limiting — never written to disk, never logged, never stored.
API sets zero cookies. No analytics, no fingerprinting, no cross-site tracking.
Runs as a Cloudflare Pages Function (V8 isolate). Sandboxed — cannot access filesystem, shell, or other tenants.
This Function has no D1/KV bindings. Cannot read or write any persistent storage — by design.
The `data` parameter is used to render the QR, then garbage-collected. Nothing about your data is retained.
Uses the `qrcode` npm package via Node.js Buffer polyfill. No native addons, no file I/O, no spawning processes.
Free Tier Limits
• 60 requests/minute per IP
• Each response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset headers
• When exceeded: HTTP 429 with Retry-After header (seconds until reset)
• Rate limit counter resets every 60 seconds
HTTP Status Codes
Zero-Harm Privacy Guarantee
Frequently Asked Questions
10 common questions about pricing, production use, rate limits, privacy, and what the API can do.
Is the QR code API really free?
Yes. No paid tier, no credit card, no API key. 60 requests/minute per IP is the only limit. Use it commercially, in production, at any scale within the rate limit.
Can I use the API in production?
Yes. It runs on Cloudflare Pages Functions (edge network with global availability). No uptime SLA, but the underlying infrastructure is Cloudflare's production-grade Workers platform.
Do I need to attribute or link back?
No attribution required. The API is GPL-licensed like the rest of QREndlessPro, but using the API endpoint itself does not require any link, badge, or credit in your app.
What happens if I exceed the rate limit?
You get HTTP 429 with a Retry-After header (seconds until reset). The counter resets every 60 seconds. Just back off and retry — no ban, no suspension, no account lockout (there are no accounts).
Do you log the data I encode in QR codes?
No. The `data` parameter is used to render the QR matrix and immediately garbage-collected. We do not log it, store it, or send it to any third party. The only thing we track is the request count per IP (for rate-limiting) — and that's an in-memory counter that resets every minute.
Can I get a higher rate limit?
The free tier is 60 req/min per IP. If you need more, options are: (1) proxy through your own backend with multiple IPs, (2) self-host the open-source Cloudflare Function from the GitHub repo, or (3) run the `qrcode` npm package in your own server. We have no paid tier.
Does the API support batch generation?
No. The public API exposes only single-QR generation. For batch (up to 5,000 QR codes per request with split-ZIP download), use the in-browser Bulk QR Generator at /bulk-qr/ — it runs entirely client-side.
Can I add my logo to the QR code via the API?
No. Logos, custom dot styles, frames, and gradients are too complex for query params. Use the in-browser QR Customizer at /qr-customize/ — it has 35+ templates and exports PNG/SVG/PDF.
Why does the API only expose QR generation, not scanning/decoding?
Scanning requires camera access (getUserMedia) — only available in browsers. Decoding requires image uploads — we keep user images browser-side (zero-harm privacy). Generation is the only tool that makes sense as an HTTP API.
Is the API indexed by Google?
Yes. The /api-docs/ page is a server-rendered Next.js page with FAQPage + SoftwareApplication JSON-LD schemas, comprehensive unique content (code samples, use cases, security matrix), and is included in the sitemap. Search "free QR code API" and this page is optimized to rank.
How QREndlessPro Compares to Other QR APIs
Factual feature comparison. Other QR APIs typically require API keys, have restrictive free tiers, and disable CORS for browser use.
| Feature | QREndlessPro |
|---|---|
| API Key Required | None required |
| Free Tier Rate Limit | 60 req/min per IP |
| CORS (Browser Use) | Yes |
| Response Formats | PNG + JPG + SVG + PDF |
| Custom Colors + ECC | Yes |
| Account / Signup | None required |
| QR Types Supported | 1,421+ across 38 categories |
| Open Source | Yes |
| Hosting Model | Edge (Cloudflare Pages Function) |
| Pricing Model | Free forever (GPL) |
Comparison is based on publicly documented features of major QR code API providers as of 2025. We do not name specific competitors to remain factual and AdSense-compliant.