Use case

Create QR Codes Programmatically

Generate trackable QR codes for your short URLs. Bridge the gap between physical and digital with scannable, analyzable links.

  • Track every scan
  • Any QR library
  • No signup
  • Free forever

🔄 Simple Workflow

1

Create Short URL

Use our API to create a trackable short link

2

Generate QR Code

Convert the short URL to a QR code using any QR library

3

Track Scans

Monitor QR code scans with our detailed analytics

4

Analyze & Optimize

Export data and improve your campaigns

💻 Implementation Examples

Python Example

import requests
import qrcode
from PIL import Image

# Step 1: Create a short URL with zip1.io
response = requests.post('https://zip1.io/api/create',
    json={
        'url': 'https://your-event-page.com',
        'alias': 'event2024',
        'max-clicks': 1000  # Optional: limit scans
    })

short_url = response.json()['short_url']

# Step 2: Generate QR Code
qr = qrcode.QRCode(
    version=1,
    box_size=10,
    border=5
)
qr.add_data(short_url)
qr.make(fit=True)

# Create and save QR code image
img = qr.make_image(fill_color="black", back_color="white")
img.save("event_qr_code.png")

# Step 3: Check analytics
stats = requests.get(f'https://zip1.io/api/stats/event2024')
print(f"Total scans: {stats.json()['data']['total_clicks']}")

JavaScript/Node.js Example

const QRCode = require('qrcode');
const fetch = require('node-fetch');

async function createTrackableQR() {
    // Step 1: Create short URL
    const response = await fetch('https://zip1.io/api/create', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({
            url: 'https://your-product-page.com',
            alias: 'product-qr-2024'
        })
    });

    const data = await response.json();
    const shortUrl = data.short_url;

    // Step 2: Generate QR Code
    const qrCodeDataUrl = await QRCode.toDataURL(shortUrl, {
        width: 300,
        margin: 2,
        color: {
            dark: '#000000',
            light: '#FFFFFF'
        }
    });

    // Use qrCodeDataUrl in your application
    console.log('QR Code generated:', shortUrl);

    // Step 3: Track scans via API
    const stats = await fetch(`https://zip1.io/api/stats/product-qr-2024`);
    const analytics = await stats.json();
    console.log('Total scans:', analytics.data.total_clicks);
}

🎯 Perfect Use Cases

🎫 Event Management

Create QR codes for event tickets, track attendance, and understand participant engagement.

🍽️ Restaurant Menus

Digital menus with analytics. Know which items get viewed most and when.

📦 Product Packaging

Link physical products to digital experiences. Track customer engagement post-purchase.

🏪 Retail & Point of Sale

QR codes for promotions, loyalty programs, and customer feedback with full tracking.

📰 Print Advertising

Make print ads measurable. Track which placements drive the most engagement.

🏢 Business Cards

Smart business cards that track engagement and provide analytics on networking success.

✨ Why Use zip1.io for QR Codes?

📊 Full Analytics

Track every scan with location, device, time, and referrer data. Know your audience.

🔗 Readable Fallback

Print the short URL under the code. Anyone whose camera won't cooperate can type it instead.

🔒 Security Options

Add passwords or click limits to your QR codes. Control access to sensitive content.

📤 Data Export

Export scan data as CSV, JSON, or Excel. Integrate with your analytics tools.

🚀 High Performance

Fast redirects ensure smooth user experience. No delays when scanning.

💸 Completely Free

No limits on links or scans. Free forever for all your campaigns.

Try It Now!

Scan this QR code to shorten a link and get its scan analytics:

Demo QR Code

This QR code links to: https://zip1.io/

FAQ

  • Does zip1.io generate the QR image itself?

    No. zip1.io gives you the short URL; you render the QR yourself with any library — qrcode for Python, qrcode for Node, or whatever your design tool already has. There is no QR endpoint on the API.

  • Can I change where a printed QR code points?

    No. A zip1.io link's destination is fixed when you create it — there is no edit endpoint. Decide the destination before anything goes to print. If you need to repoint it later, aim the QR at a page you control and redirect from there.

  • How do I count print scans separately from web clicks?

    Give the printed code its own slug. Every scan is a click on that slug and nothing else touches it, so that link's stats page is your scan count.

  • Do QR scans look different in the analytics?

    They arrive as ordinary clicks with country, browser, and OS. Most scanner apps send no referrer, so scans usually show up as direct traffic rather than under a source.

  • Is there a limit on scans?

    No monthly cap and no per-link fee. If you want a limit, set max-clicks when you create the link and the code stops working after that many scans.

Start Creating Trackable QR Codes

No signup required. Unlimited links. Forever free.