Bar in a Can

Methodology

Where every number comes from

Bar in a Can lists American canned cocktails from their federal label approvals (TTB COLAs), then adds nutrition from the label's Serving Facts panel and brands' sites. Every number names its source, calculated values are labeled, and anything we couldn't source reads “Not listed.”

Where does the data come from?

Every can starts from its federal label approval: the Certificate of Label Approval (COLA) that the Alcohol and Tobacco Tax and Trade Bureau (TTB) issues before a drink can be sold across state lines. COLAs are public records; each can page links to its filings in the TTB's public COLA registry. We add numbers from the Serving Facts panel on the label and from brands' own websites.

Each number on a can page carries a chip naming its source. When two sources give the same field, the page shows the highest-ranked one:

Tasted
We had the can in hand and checked it ourselves. Outranks everything else.
Serving Facts
The Serving Facts panel printed on the approved label.
Brand
The brand's own website, with the page linked and the date we checked it.
Label
Anything else printed on the approved label: ABV, container size, claims.
Calculated
Worked out from sourced numbers, and always labeled as calculated.

How often is it updated?

Daily. Each morning (15:30 UTC) we rescan the last ten days of TTB label approvals, because filings post late, and read any new cocktail labels. New cans appear on the site once their label read passes our checks. Pages refresh within an hour of a change.

What counts as a canned cocktail?

A mixed drink sold ready to drink from its own single-serve container: spirit-based and malt-based cocktails in cans, and pouches or bottles meant to be drunk as they are. Pour-over batches are left out: bottles above 16% ABV, cans and pouches above 20%, and any label that says it makes several cocktails. Plain spirits, wine, and beer are left out.

How are labels read?

An AI model (Anthropic's Claude) reads each approved label image and fills in a fixed set of fields. Code then checks the reading: a dietary claim or a sugar figure is kept only when the model quotes the words on the label that state it, labels with a Serving Facts panel are read twice by a stronger model, and any disagreement or low-confidence read goes to a person for review instead of the site.

In September 2026 we checked 50 random label reads by hand against the labels. After these checks were added, the re-check got all 42 of its canned-cocktail calls right and invented no claims or sugar figures. We fix errors when we find them, and we re-read older labels whenever the checks improve.

How are calories calculated when the label doesn't list them?

Only when the label gives carbohydrates, and only for the whole can: container ml × ABV × 0.789 g/ml × 7 kcal/g, plus 4 kcal per gram of carbs and 9 per gram of fat. A calculated number shows “≈” and the word “calculated,” and it never replaces a published one.

What do the dietary badges mean?

A badge (gluten-free, vegan, real juice, no artificial sweeteners) is marked only when the label or the brand makes that claim. We never infer one from the ingredients. Everything else reads “not stated.”

Where do tasting notes come from?

Scores, the flavor radar, and the can-vs-glass verdict come only from our own tastings, marked “Our tasting” with the date.

For cans we haven't tasted, we look for the brand's own description and for published reviews, then summarize them in our own words with a link to every source. Before a note is published, code checks that each source page really says what we cite it for. We skip retailers and store ratings, and we never turn outside reviews into a score.

What are the limits?

  • A label approval is an early signal, not a launch. Many approved cans reach shelves weeks later, some only regionally, and some never.
  • Brands change recipes and labels; the filing date on each page says which label we read.
  • A field we couldn't source reads “Not listed.” Filters on the registry leave out cans whose number is unknown rather than guessing.