Building a Professional QR Code Platform
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
- 50,000+ QR codes generated monthly
- 500,000+ scans tracked
- 99.8% uptime
- <200ms generation time