[{"data":1,"prerenderedAt":222},["ShallowReactive",2],{"marketing-blog-blog\u002Fdesigning-a-ticket-people-can-actually-scan":3,"marketing-blog-related-blog\u002Fdesigning-a-ticket-people-can-actually-scan":202},{"id":4,"title":5,"author":6,"body":7,"category":181,"date":182,"description":183,"draft":184,"extension":185,"image":186,"imageAlt":187,"imageCredit":188,"imageCreditUrl":189,"meta":190,"navigation":191,"path":192,"readTime":193,"seo":194,"stem":195,"tags":196,"__hash__":201},"blog\u002Fblog\u002Fdesigning-a-ticket-people-can-actually-scan.md","Designing a ticket people can actually scan","The CheckInHub team",{"type":8,"value":9,"toc":172},"minimark",[10,14,17,22,25,28,31,37,41,44,47,50,66,75,79,82,85,89,92,159,162,166,169],[11,12,13],"p",{},"The QR code itself almost never fails. The format is dependable, the error correction is forgiving, and a modern scanner reads a clean code in a fraction of a second. When a ticket does not scan at the door, the cause is nearly always something around the code: it has been printed too small, displayed too dim, wrapped in a confusing email, or rendered on a cracked phone screen at an awkward angle. These are design problems, not technology problems, and they are entirely preventable.",[11,15,16],{},"A ticket that reads first time keeps the door moving and the queue short. A ticket that needs a second or third attempt, or a manual name search, turns a two-second admission into a thirty-second one — and at a busy door, thirty-second admissions compound into a line out the venue. Designing a scannable ticket is mostly about removing the small obstacles between the code and the camera.",[18,19,21],"h2",{"id":20},"size-and-contrast-do-the-heavy-lifting","Size and contrast do the heavy lifting",[11,23,24],{},"Two properties matter more than anything else: the code must be big enough and it must have enough contrast. Get these right and most scanning trouble disappears.",[11,26,27],{},"Size is the common failure. A QR code crammed into a corner of a busy ticket layout, a centimetre square, forces the scanner to get close and hold steady, which is exactly what a hurried attendee will not do. Give the code room. On a printed ticket, aim for something a camera can lock onto from a comfortable distance without precision. On a phone, the code should be the dominant element of the screen, not a thumbnail beneath a wall of text.",[11,29,30],{},"Contrast is the other half. A QR code works by distinguishing dark modules from light ones, so it needs genuinely dark on genuinely light. Designers sometimes tint the code to match a brand palette, or drop it onto a coloured or patterned background, and the scanner struggles. Keep it dark-on-white with a clear quiet zone — the empty margin around the code — and do not let a background image bleed into that margin.",[32,33,34],"blockquote",{},[11,35,36],{},"The most reliable QR ticket is the most boring one: a large, high-contrast code with nothing crowding it.",[18,38,40],{"id":39},"make-the-code-easy-to-find-and-present","Make the code easy to find and present",[11,42,43],{},"A scannable code that the attendee cannot locate is no better than an unscannable one. The journey from \"I have a ticket\" to \"the code is in front of the camera\" should be frictionless, and often it is not.",[11,45,46],{},"The classic failure is the email ticket buried below a paragraph of logistics. The attendee opens it at the door, scrolls past venue directions and parking notes, and holds up the wrong part of the screen. Put the code first, or make it a single obvious thing: a clear pass, a button that opens it full-screen, an attachment that is plainly the ticket. Anything that lets an attendee surface the code in one tap saves seconds at the door.",[11,48,49],{},"A few practical rules help here:",[51,52,53,57,60,63],"ul",{},[54,55,56],"li",{},"Lead with the code, not the logistics. Directions belong below it, not above.",[54,58,59],{},"Offer a full-screen or add-to-wallet option so the attendee can brighten and enlarge it.",[54,61,62],{},"Avoid making people log in to retrieve a ticket at the door — that is a guaranteed bottleneck.",[54,64,65],{},"Send the ticket somewhere they will still have it offline, in case the venue has no signal.",[11,67,68,69,74],{},"A signed pass that the attendee can save and open instantly beats a screenshot of a screenshot every time, for reasons we cover in ",[70,71,73],"a",{"href":72},"\u002Fblog\u002Fwhy-a-signed-qr-pass-beats-a-screenshot","why a signed QR pass beats a screenshot",".",[18,76,78],{"id":77},"design-for-the-phone-because-that-is-what-arrives","Design for the phone, because that is what arrives",[11,80,81],{},"Most tickets are scanned off a phone, and phones introduce their own quirks. Auto-brightness dims the screen in a dark foyer exactly when the scanner needs more light. Cracked glass scatters the camera's view. A protective case casts a shadow. None of these are your fault, but a good ticket design works around them anyway.",[11,83,84],{},"The practical answer is to give attendees a code that survives a dim, cracked, awkwardly-angled phone — which means a large code with strong error correction and plenty of contrast, so the scanner has margin to spare. Encourage full-screen display, which usually overrides auto-dimming. And, crucially, never rely on the code alone: every ticket should also carry the attendee's name and a human-readable reference, so that when a scan genuinely will not work, staff can find the booking by name in seconds rather than turning the guest away.",[18,86,88],{"id":87},"a-printed-ticket-has-different-rules","A printed ticket has different rules",[11,90,91],{},"Not everything is a phone. Printed tickets, printed badges with embedded codes, and PDFs printed at home all show up, and they fail differently.",[93,94,95,111],"table",{},[96,97,98],"thead",{},[99,100,101,105,108],"tr",{},[102,103,104],"th",{},"Issue",[102,106,107],{},"On a phone",[102,109,110],{},"On paper",[112,113,114,126,137,148],"tbody",{},[99,115,116,120,123],{},[117,118,119],"td",{},"Too small",[117,121,122],{},"Pinch to zoom, usually fixable",[117,124,125],{},"Fixed at print size, no recovery",[99,127,128,131,134],{},[117,129,130],{},"Low contrast",[117,132,133],{},"Brighten the screen",[117,135,136],{},"As printed, often grey on grey",[99,138,139,142,145],{},[117,140,141],{},"Damage",[117,143,144],{},"Cracks scatter light",[117,146,147],{},"Folds and creases break the pattern",[99,149,150,153,156],{},[117,151,152],{},"Glare",[117,154,155],{},"Tilt to reduce reflection",[117,157,158],{},"Matte paper avoids it entirely",[11,160,161],{},"The lesson from the right-hand column is that paper is less forgiving, so the code has to be even more generous: larger, darker, and positioned away from the fold line where the ticket will be creased. A code printed across a fold is a code that will fail, every time, on the tickets that have been in a pocket.",[18,163,165],{"id":164},"test-the-way-the-door-will","Test the way the door will",[11,167,168],{},"The single most useful thing you can do is scan your own ticket the way an attendee will, not the way a designer will. Open the real email on a real phone, in a dim room, with the brightness on automatic, and scan it with the actual hardware you will use at the door. If it reads first time under those conditions, it will read at the event.",[11,170,171],{},"Most scanning problems are caught in that one test and fixed before anyone queues. CheckInHub generates the pass and reads it with the same care, but the principle holds whatever you use: a ticket is only as good as its worst real-world scan. Design for that scan — large, dark, easy to find, and resilient on a battered phone — and the door simply moves.",{"title":173,"searchDepth":174,"depth":174,"links":175},"",2,[176,177,178,179,180],{"id":20,"depth":174,"text":21},{"id":39,"depth":174,"text":40},{"id":77,"depth":174,"text":78},{"id":87,"depth":174,"text":88},{"id":164,"depth":174,"text":165},"QR codes & scanning","2024-12-27","A QR ticket fails for boring, fixable reasons: it is too small, too dim, or buried in an email. Here is how to design one that reads first time.",false,"md","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1706759755851-6163305080f0?ixlib=rb-4.1.0&w=1600&q=80&auto=format&fit=crop","A person holding a phone in front of a laptop to scan","Marielle Ursua","https:\u002F\u002Funsplash.com\u002F@heyimmarielle_03?utm_source=checkinhub&utm_medium=referral",{},true,"\u002Fblog\u002Fdesigning-a-ticket-people-can-actually-scan",6,{"title":5,"description":183},"blog\u002Fdesigning-a-ticket-people-can-actually-scan",[197,198,199,200],"qr codes","barcodes","scanning","ticket design","Xx_Zzq-QolvPBqGRTbz4xwV1y5oNoy-DxMoKpylLNoE",[203,209,215],{"to":204,"title":205,"description":206,"date":207,"category":181,"image":208,"readTime":193},"\u002Fblog\u002Fthe-eight-second-check-in-explained","The eight-second check-in, explained","What actually happens in the eight seconds a guest spends at the door, step by step, and why most of that time has nothing to do with scanning.","2026-06-19","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1662383729882-e03ce8e00887?ixlib=rb-4.1.0&w=1600&q=80&auto=format&fit=crop",{"to":210,"title":211,"description":212,"date":213,"category":181,"image":214,"readTime":193},"\u002Fblog\u002Fwhat-happens-in-the-moment-a-code-is-scanned","What happens in the moment a code is scanned","Between holding up a phone and the door turning green, a lot happens in well under a second. A plain-language look at the scan itself.","2026-02-20","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1706759755782-62bc9a0b32e1?ixlib=rb-4.1.0&w=1600&q=80&auto=format&fit=crop",{"to":216,"title":217,"description":218,"date":219,"category":181,"image":220,"readTime":221},"\u002Fblog\u002Freading-any-code-phones-tablets-and-wedge-scanners","Reading any code: phones, tablets and wedge scanners","The device that reads the code matters as much as the code itself. Phones, tablets and wedge scanners each suit a different door.","2025-10-24","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1595079834934-b78552e04b10?ixlib=rb-4.1.0&w=1600&q=80&auto=format&fit=crop",5,1782495584683]