Skip to content
BrandCloud

Build your brand and see it pass

Change a colour, a font or the button style and the preview changes with it. Every contrast check below comes from the same code the kit's build uses, so a brand that passes here passes there.

Free, in your browser. Nothing you choose or upload leaves this page.

Your brand

Jump to the checks and live preview

Saved in the file as "my-brand".

The BrandCloud example brands. Your choices below change it.

Colours

Buttons, links and highlights.

Text. Made darker if it needs to be, to pass.

The page background.

Colours from your logo

Read in this browser on a small canvas. The file is never uploaded.

Type and buttons
Default button
Preview in

Accessibility

Passes WCAG 2.2 AA in light and darkRequired text pairs passing: light 51 of 51, dark 51 of 51.

  • Depth button label, 44px tall, light4.92:1Pass
  • Depth button label, 48px tall, light4.97:1Pass
  • Depth button label, 56px tall, light5.05:1Pass

Live preview

Real components from the kit, styled only by your brand's tokens.

Fresh bread on the counter before the school run

A made-up bakery shows how your headings, body text and buttons sit together. Swap the colours on the left and watch every part follow.

Fictional example copy.

Buttons

How ordering works

  1. Choose by 6pm

    Pick loaves and pastries for the next morning.

  2. We bake overnight

    Everything is made fresh from 3am.

  3. Collect from 7am

    Your order waits on the counter with your name on it.

Questions

Can I change an order?

Yes, until 6pm the evening before.

Do you deliver?

Not yet. Orders are collected from the shop.

Tomorrow's bake closes at 6pm

A dark section, so you can check text and buttons on the inverse colours too.

Form fields

Enter a full email address, with an @ and a domain.

Disabled: filled in for you.

Every contrast check, light mode

All 51 required pairs pass. Advisory pairs (status colours, focus ring, strong border) are there for information and do not block the build.

Show all 61 checks for light mode
Contrast checks from checkTokens for the light mode
TextOnRatioNeedsResult
Body text textcanvas16.33:14.5:1Pass
Body text textsurface18.37:14.5:1Pass
Body text textsurface-raised18.37:14.5:1Pass
Body text textsurface-muted14.78:14.5:1Pass
Muted text text-mutedcanvas6.48:14.5:1Pass
Muted text text-mutedsurface7.29:14.5:1Pass
Subtle text text-subtlecanvas4.57:14.5:1Pass
Subtle text text-subtlesurface5.14:14.5:1Pass
Links (accent) accentcanvas4.85:14.5:1Pass
Solid button label accent-textaccent5.46:14.5:1Pass
Solid button label accent-textaccent-hover7.04:14.5:1Pass
Text on dark sections inverse-textinverse-canvas16.33:14.5:1Pass
Text on dark sections inverse-textinverse-surface14.09:14.5:1Pass
Muted text on dark sections inverse-text-mutedinverse-canvas7.96:14.5:1Pass
Depth button label action-depth-textaction-depth-from4.80:14.5:1Pass
Depth button label action-depth-textaction-depth-to7.04:14.5:1Pass
Ink button label action-ink-textaction-ink18.37:14.5:1Pass
Ink button label action-ink-textaction-ink-hover13.13:14.5:1Pass
WhatsApp button label whatsapp-textwhatsapp6.69:14.5:1Pass
WhatsApp button label whatsapp-textwhatsapp-hover8.18:14.5:1Pass
WhatsApp button label whatsapp-textwhatsapp-highlight9.40:14.5:1Pass
Warning text status-warning-textcanvas6.09:14.5:1Pass
Warning text status-warning-textstatus-warning-subtle6.15:14.5:1Pass
Sky level label level-sky-textlevel-sky-highlight8.23:14.5:1Pass
Sky level label level-sky-textlevel-sky-base5.27:14.5:1Pass
Sky level label level-sky-textlevel-sky-hover4.71:14.5:1Pass
Sky level text level-sky-inkcanvas4.83:14.5:1Pass
Sky level text level-sky-inksurface5.43:14.5:1Pass
Blue level label level-blue-textlevel-blue-highlight6.25:14.5:1Pass
Blue level label level-blue-textlevel-blue-base8.57:14.5:1Pass
Blue level label level-blue-textlevel-blue-hover11.10:14.5:1Pass
Blue level text level-blue-inkcanvas6.01:14.5:1Pass
Blue level text level-blue-inksurface6.76:14.5:1Pass
Navy level label level-navy-textlevel-navy-highlight9.26:14.5:1Pass
Navy level label level-navy-textlevel-navy-base15.39:14.5:1Pass
Navy level label level-navy-textlevel-navy-hover17.30:14.5:1Pass
Navy level text level-navy-inkcanvas10.75:14.5:1Pass
Navy level text level-navy-inksurface12.10:14.5:1Pass
Pearl level label level-pearl-textlevel-pearl-highlight19.67:14.5:1Pass
Pearl level label level-pearl-textlevel-pearl-base16.34:14.5:1Pass
Pearl level label level-pearl-textlevel-pearl-hover14.48:14.5:1Pass
Pearl level text level-pearl-inkcanvas6.49:14.5:1Pass
Pearl level text level-pearl-inksurface7.30:14.5:1Pass
Obsidian level label level-obsidian-textlevel-obsidian-highlight10.52:14.5:1Pass
Obsidian level label level-obsidian-textlevel-obsidian-base17.57:14.5:1Pass
Obsidian level label level-obsidian-textlevel-obsidian-hover13.94:14.5:1Pass
Obsidian level text level-obsidian-inkcanvas15.62:14.5:1Pass
Obsidian level text level-obsidian-inksurface17.57:14.5:1Pass
Depth button label action-depth-textaction-depth-fill@44px4.96:14.5:1Pass
Depth button label action-depth-textaction-depth-fill@48px4.97:14.5:1Pass
Depth button label action-depth-textaction-depth-fill@56px5.02:14.5:1Pass
success colour status-successcanvas4.57:14.5:1 (advisory)Pass
warning colour status-warningcanvas4.63:14.5:1 (advisory)Pass
info colour status-infocanvas5.27:14.5:1 (advisory)Pass
danger colour dangercanvas5.59:14.5:1 (advisory)Pass
success colour status-successstatus-success-subtle4.68:14.5:1 (advisory)Pass
warning colour status-warningstatus-warning-subtle4.68:14.5:1 (advisory)Pass
info colour status-infostatus-info-subtle5.17:14.5:1 (advisory)Pass
danger colour dangerstatus-danger-subtle5.24:14.5:1 (advisory)Pass
Focus ring focuscanvas4.85:13:1 (advisory)Pass
Strong border border-strongcanvas1.85:13:1 (advisory)Fail

Export

The JSON has the same shape as the brand files in the kit. The CSS holds every token for light and dark, ready to import.

my-brand.jsonJSON
{
  "name": "my-brand",
  "label": "My brand",
  "accent": "#b8430d",
  "ink": "#17140f",
  "paper": "#f6f1e8",
  "fonts": {
    "body": "'Hanken Grotesk Variable', Arial, sans-serif",
    "display": "'Bricolage Grotesque Variable', Arial, sans-serif"
  },
  "appearance": "depth"
}

When your brand passes

Hand the JSON file to your developer, or to whoever builds your site. In the kit it goes in the brands folder and every component picks it up. The guide to accessible colours explains what each check means and how to fix a fail.