100% Free • No Limits

Dynamic QR Codes.
Change your target anytime.

Create QR codes that redirect anywhere with qrurl.me. Update the destination URL whenever you want — the QR image stays the same. Free forever, no catches.

Open Dashboard API Reference

Built for developers

Everything you need, nothing you don't.

🔄

Dynamic Redirects

Change where your QR code points at any time. Print once, redirect forever.

📊

Scan Analytics

Track every scan with IP, user agent, and timestamps. Know your audience.

🎨

6 QR Styles

Standard, dots, rounded, gapped, vertical bars, horizontal bars. Pick your vibe.

🖼

Custom Icons

Upload your logo or icon to embed in the center of any QR code.

REST API

Full JSON API with API key auth. Automate QR code management from your own apps.

🆓

Free. No Limits.

Unlimited QR codes, unlimited scans, unlimited updates. No premium tier, no paywalls.

Dashboard

Manage your QR codes right here.

QRTitleTarget URLScansStatusActions
Enter your API key and click Connect to get started

API Reference

Integrate QR code management into your own applications.

Authentication

All endpoints except /api/register and public routes require an X-API-Key header.

X-API-Key: your-api-key-here
POST /api/register Register and get an API key

Request Body

{ "name": "Acme Corp" }

Response

{ "tenant": "acme-corp", "api_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
GET /api/qrcodes List all your QR codes

Response

[ { "id": "uuid", "title": "My Website", "target_url": "https://example.com", "short_code": "aBcDeFgH", "is_active": true, "created_at": "2026-01-01T00:00:00", "updated_at": "2026-01-01T00:00:00", "scan_count": 42, "style": "standard", "scan_url": "/s/aBcDeFgH", "image_url": "/qr/aBcDeFgH" } ]
POST /api/qrcodes Create a new QR code

Request Body

FieldTypeDescription
titlestringrequiredDisplay name
target_urlstringrequiredWhere the QR code redirects to
stylestringoptionalstandard, dots, rounded, gapped, vertical, horizontal

Example

curl -X POST /api/qrcodes \ -H "X-API-Key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"title": "My Site", "target_url": "https://example.com", "style": "dots"}'
GET /api/qrcodes/{qr_id} Get QR code details

Response

{ "id": "uuid", "title": "My Website", "target_url": "https://example.com", "short_code": "aBcDeFgH", "is_active": true, "created_at": "2026-01-01T00:00:00", "updated_at": "2026-01-01T00:00:00", "scan_count": 42, "style": "dots" }
PUT /api/qrcodes/{qr_id} Update a QR code

Request Body

FieldTypeDescription
titlestringoptionalNew display name
target_urlstringoptionalNew redirect URL
is_activebooleanoptionalEnable or disable
stylestringoptionalNew QR style
DELETE /api/qrcodes/{qr_id} Delete a QR code

Permanently deletes the QR code and all scan data. Cannot be undone.

GET /api/qrcodes/{qr_id}/scans List scan history

Response

[ { "id": "uuid", "ip_address": "1.2.3.4", "user_agent": "Mozilla/5.0...", "scanned_at": "2026-04-17T12:00:00" } ]
POST /api/qrcodes/{qr_id}/icon Upload center icon

Upload PNG, JPEG, or WebP (max 2 MB) as multipart form data with field name file.

curl -X POST /api/qrcodes/{qr_id}/icon \ -H "X-API-Key: YOUR_KEY" \ -F "file=@logo.png"
DELETE /api/qrcodes/{qr_id}/icon Remove center icon

Removes the custom icon and regenerates the QR image.

Public Routes (no auth required)

GET /s/{short_code} Scan redirect — logs scan and redirects

The URL encoded in the QR code. Logs the scan (IP, user agent, timestamp) and returns a 302 redirect to the current target URL.

GET /qr/{short_code} Get QR code as PNG image

Returns the QR code as a PNG image. Use this URL to embed QR codes in pages or download them.