Real numbers from this tool, line by line.

If you ship an iOS or Android app to consumers in the EU, your brand colour is now a compliance question. The European Accessibility Act applies to consumer services since 28 June 2025. In Germany it arrives as the BFSG, and BFSG § 37 (Germany): fines up to €100,000 for a service that breaks those rules. Most of the technical requirements point back to WCAG, and the first one a design file can fail is plain text contrast.
WCAG 2.2 AA asks for a contrast ratio of 4.5:1 for normal-size text and 3:1 for large text. A button label at 16 px is normal text. So the question for your primary button is simple: white label on your brand colour, what is the ratio?
We measured a very common mid-tone blue, #3B82F6. With white text it comes out at 3.68:1. On a light grey surface such as #F1F5F9, used as the label colour of a secondary button, it is 3.36:1. Both are below 4.5:1. The colour looks fine on a bright monitor, which is exactly why it ships.
The fix is rarely a new brand. Keep the hue, lower the lightness until both pairs pass. For #3B82F6 the nearest shade that clears 4.5:1 against white and against #F1F5F9 is #0F66F4, at 4.97:1 on white and 4.53:1 on the surface. A green like #10B981 starts at 2.54:1 and moves to #0B7E58 at 5.07:1. A violet like #7C3AED already sits at 5.70:1 and needs no change. That is what our free page does: type your hex, and it prints these numbers for your colour, in your browser, with no account.
Contrast is one of three things a UI kit can get right before a single screen is built. The second is touch size. Apple asks for hit targets of at least 44 pt; Material asks for 48 dp. WCAG 2.2 adds its own minimum at AA. If every tappable component in the kit is 48 px tall, a designer does not have to remember any of this while laying out a checkout.
The third is state that does not depend on colour. A red border on an email field tells a colour-blind user nothing. In this kit every error variant starts with the word "Error:", and every toggle and checkbox row says On or Off in words.
The kit has 8 components and 24 variants: button, text field, checkbox row, toggle row, tab, alert banner, filter chip and status badge. Each variant's contrast is measured and printed in the README. The lowest pair in the whole kit is error text #B91C1C on #F1F5F9, at 5.91:1. The primary button is 6.70:1.
The Button component with its 4 variants is free: Primary, Secondary, Destructive and Disabled, as SVG, a .sketch file and a Figma plugin. That is enough to put an accessible call to action in your own brand colour on a real screen today.
Figma does not accept outside .fig files, so the kit arrives three ways. Drag the .sketch into Figma to import it. Paste any SVG onto the canvas as editable vectors. Or load the plugin from manifest.json and it draws each variant as a named frame. Some structure is simplified on import: auto layout and Figma variant sets are not rebuilt, and menu names differ by version and language. Sketch users open the same file.
What this does not do: it is not an audit of your app, and it cannot see your screens. It gives you components whose contrast, size and state labels you can check line by line, and a number for your own brand colour before you commit to it.