Check-In System

QR Code Specifications

QR code format, encoding specifications, and customization options.

3 min readUpdated 2025-01-14

When someone reaches your check-in table — at a kirtan door, a retreat welcome desk, a festival gate — the QR code on their ticket is what turns a line of people into a fast, orderly flow. BrightStar builds that code with a specific format, a set of security checks, and a handful of ways to make it look like your event rather than a generic ticket. This article walks through what's actually in the code, why it can't be faked, how to size it for print, and how far you can push its look before it stops scanning.

What's Actually Inside the QR Code

Each code encodes a small payload rather than a picture of a barcode: a version number, the ticket's unique ID, the event ID, a checksum, and an expiry timestamp. That payload is also encoded as a plain URL — https://brightstarevents.com/t/TKT-ABC123-XYZ — so if a scanner can't read the code at all, whoever is on the door can type or tap that link in manually and still pull up the ticket. The version field exists because the amount of data in a QR code changes how dense the pattern is; BrightStar generates the version dynamically based on how much data a given ticket actually needs, rather than forcing every code into a fixed size. Encoding is UTF-8, so names and event details outside the basic Latin alphabet still fit into the payload correctly.

Why a Scanned Code Can't Be Copied or Guessed

The checksum is the piece doing the security work. It's generated with HMAC-SHA256 using a secret key that's specific to the event, so even someone who understands the payload structure can't hand-craft a working ticket ID or edit an existing one — any change to the ticket ID, event ID, or expiry breaks the checksum and the code fails validation. Every code also expires, by default at the event's end plus a set window afterward, though that window is configurable per event, so a multi-day festival and a single evening kirtan can each expire on a schedule that actually matches how long check-in is expected to run. On top of that, each code is one-time use: the first scan checks someone in, and every scan after that returns "Already checked in" instead of letting the same code through twice. The one exception is re-entry mode, which an event can turn on when attendees are expected to leave and come back, such as a festival with an on-site camping area.

Getting the Size and Print Quality Right

The code follows the standard QR format (ISO/IEC 18004) with error correction Level M, meaning it will still scan correctly even if about 15 percent of it is smudged, creased, or partly covered — a real concern for a paper ticket that's been folded in a pocket on the way to a retreat. For screens, BrightStar's minimum is 100 by 100 pixels, with 200 by 200 pixels recommended so a scanner has margin to work with in low light or from an awkward angle. For anything printed, use at least 300 DPI; below that, the fine modules of the code start to blur together and the error correction has to work harder to compensate. Color matters too — the default is black on white, and any custom color scheme still needs a dark foreground on a light background with a contrast ratio of at least 3 to 1, because a scanner is reading contrast, not aesthetics.

Making the Code Match Your Brand

Within those limits, there's real room to make the code look like your event rather than a generic ticket. You can set custom colors as long as contrast holds, add a logo overlay in the center covering up to 30 percent of the code, apply a custom shape such as rounded corners, use a branded PDF ticket template, and issue Apple Wallet or Google Wallet passes. The 30 percent ceiling on a logo isn't arbitrary — QR error correction can only recover a limited share of missing or altered data, so a bigger overlay risks tipping a code from "still readable" to "unscannable" the moment it's also dealing with a fold or a scuff.

If you offer Apple Wallet passes, know that they surface automatically based on location and time — attendees who've added their ticket will see it appear on their lock screen simply by arriving near your venue, with no need to dig through apps or email at the door.

Common questions

What QR code standard do BrightStar tickets use?

BrightStar tickets use standard QR codes to the ISO/IEC 18004 specification with error correction Level M, which tolerates 15 percent damage. The version is dynamic based on data length and the encoding is UTF-8.

Read more

The same code is produced in several places rather than stored once and pointed at from everywhere. At order confirmation an image is rendered server-side and filed per ticket under its event, a step skipped entirely for online events since there is no door to scan at. The printable PDF renders its own copy, one page per ticket. Apple Wallet passes carry it as a QR barcode field and Google Wallet passes as a QR barcode object, both built from the ticket reference at the moment the pass is generated. Pass, PDF and email all resolve back to the same ticket record.

How big does the QR code need to be for printed tickets?

BrightStar specifies a minimum of 100 by 100 pixels, with 200 by 200 pixels recommended. For printed tickets, use a minimum of 300 DPI so the code stays crisp enough to decode.

Read more

The PDF BrightStar generates already meets that guidance without adjustment: each code is rendered two hundred pixels wide with a one-module quiet zone, on a US Letter page, one page per ticket. The file is produced on demand rather than stored, and it accepts either a registrant reference or an order reference so links in older confirmation emails keep resolving. One quirk worth knowing if you print for an international audience: the typeface used for the surrounding text is Latin-only, so accented characters are stripped from names and venue lines before rendering. The code itself is unaffected.

What happens if the QR code will not scan at the door?

Every BrightStar QR code is also encoded as a URL of the form https://brightstarevents.com/t/TKT-ABC123-XYZ, which allows manual entry if the QR scan fails. The payload itself carries a version number, the unique ticket ID, the event ID, an HMAC-SHA256 checksum and an expiry timestamp.

Read more

There are two manual routes that skip the camera entirely. In the scanner the operator can find the person on the attendee roster and check them in by tapping their name, which writes the same timestamp but records the method as manual rather than a scan, so the two are distinguishable afterwards. From the event dashboard a host can check in a single ticket, several at once, or an entire order in one action — and unlike a scan, a dashboard check-in can be undone, which clears the timestamp and puts the ticket back into circulation for whoever is actually holding it.

Can someone guess or forge a BrightStar ticket code?

Each BrightStar QR payload includes a checksum generated with HMAC-SHA256 using an event-specific secret key. That checksum is what prevents ticket ID guessing or modification, because an altered code will not produce a matching checksum at validation.

Read more

Whatever comes off the camera is treated as untrusted and re-resolved on the server. The scanner refuses a code whose event does not match the event it is working before any request goes out, and the server then independently re-checks the ticket's own event, refuses anything whose status is not active — a refunded or voided ticket fails here — and refuses a ticket that already carries a check-in time. Tickets sold at the door get an additional layer: a separate opaque code with its own expiry and a single-use flag, so once it has been redeemed it cannot be replayed.

Can the same ticket be scanned more than once?

No, by default. The first scan of a BrightStar ticket is valid and any subsequent scan returns Already checked in. The exception is re-entry mode, which is configurable if your event needs attendees to come and go.

Read more

The check rests on a single timestamp on the individual ticket row, so it holds regardless of how the second attempt arrives — a camera scan, a manual tap on the roster, or a queued offline scan replayed hours later all land on the same column. When a duplicate is refused the response includes the time of the original check-in, so the person at the door can say when the ticket was first used rather than simply turning someone away. A host can reverse a check-in from the event dashboard, which clears that timestamp and makes the ticket scannable again.

Can I put my logo or brand colours on the ticket QR code?

Yes. BrightStar supports custom colours as long as contrast is maintained at a minimum ratio of 3 to 1, a logo overlay in the centre covering up to 30 percent, custom rounded-corner shapes, a branded ticket PDF template, and Apple Wallet or Google Wallet passes. The default styling is black on white, and custom schemes need a dark foreground on a light background.

Read more

The wallet passes are built server-side from the ticket reference alone, with the event title, date, venue, attendee name, ticket type and any section, row and seat looked up at the moment the pass is generated rather than baked into the link. Both platforms are themed in BrightStar purple. Apple passes are signed and open Wallet directly on iPhone when a single ticket is requested; an order holding several tickets returns a page with one pass per ticket instead, so a group is not collapsed into one. Google passes are delivered as a signed save-to-wallet link.

Ready to get started?

Create your first event on EveryEvent Rio de Janeiro — it’s free.