Building a Professional QR Code Platform

· 5 min read · Live Project

QR Cheetah started as a simple QR generator. It evolved into a full platform with custom branding, dynamic codes, and real-time analytics.

The Branding Challenge

Users want fully customized QR codes - colors, logos, styles. But QR codes have strict scanability requirements. Custom colors can make codes unscannable.

We enforce WCAG AA contrast ratios between foreground and background colors before generating. High error correction mode (level H) allows up to 30% of the code to be obscured, which is what makes logo overlays possible.

// Validate contrast before generating
const contrast = calculateContrast(primaryColor, backgroundColor);
if (contrast < 4.5) {
    throw new Error('Insufficient contrast for reliable scanning');
}

// High error correction allows logo overlay
const qr = qrcode.create(data, {
    errorCorrectionLevel: 'H',
    color: { dark: primaryColor, light: backgroundColor }
});

Dynamic QR Codes

Static QR codes can't be changed after printing. Dynamic codes solve this by always pointing to our redirect service. Change the destination URL anytime without reprinting.

Bot Detection

Social media apps generate link previews that were inflating scan analytics. We filter bot traffic by user agent pattern matching.

const botPatterns = [
    /WhatsApp/i, /facebookexternalhit/i,
    /Twitterbot/i, /LinkedInBot/i
];

function isBotRequest(userAgent) {
    return botPatterns.some(p => p.test(userAgent));
}

iOS Safari Quirk

iOS Safari's built-in QR scanner doesn't send referrer headers, making device detection tricky. We identify these scans by the unique combination of Safari user agent, iPhone device, missing referrer, and Sec-Fetch-Site: none.

Current Scale