The problem
Keycloak's default theme is showing its age
Functional, dated, and quietly inaccessible. The login page is the first surface every user sees — and the upstream default doesn't match the bar modern SaaS sets.
Branding is an afterthought
Login is one of the most-seen surfaces of your product and a primary brand touchpoint — yet Keycloak treats it as a server admin concern, not a customer-facing experience.
No modern dev tooling
FreeMarker templates live outside the modern frontend ecosystem. No React, no component libraries, no design tokens, no Storybook — and no hot reload while you iterate.
Testing is painful
There's no straightforward way to visually test theme changes in isolation. You build, deploy, click through every flow by hand, and hope you didn't break a screen you forgot existed.
Themes rot on upgrade
Every Keycloak release can move templates underneath you. Custom themes built in haste become a release blocker.
Accessibility is an afterthought
Semantic markup, focus management, and color contrast in the default theme don't pass current accessibility standards without rework.
Why we built it
The starting line we wanted for our own product
We built and open sourced our theme suite as the baseline we wanted in our managed product — and that the wider Keycloak community deserves.
Modern visual defaults
Clean, contemporary login and account screens that don't need redesign before they can ship.
Accessibility-first
Semantic markup, proper focus management, and contrast that actually passes — not bolted on after the fact.
Configuration over customization
Logos, colors, and copy through standard Keycloak theme properties. Reach for FreeMarker only when you really need to.
Built on Keycloakify
We leverage Keycloakify so themes can be written in React with modern tooling, hot reload, and Storybook — and stay version-compatible across Keycloak releases instead of breaking on every upgrade.
Maintained against Keycloak
New theme releases tracking upstream Keycloak versions, so login doesn't break on the next upgrade.
What teams use it for
White-label SaaS login
Match your product's brand without writing FreeMarker. Override colors and logos from configuration; deeper customization through the standard theme inheritance chain.
Accessibility-first surfaces
Semantic markup, proper focus management, and contrast that actually passes — without bolting it on after the fact.
Consistent across login and account
Themes cover the login flow, account console, and admin surfaces in one bundle. Users get one branded experience end-to-end.
Up-to-date with Keycloak releases
Maintained against current Keycloak versions, so upgrades don't break your login page.
Key capabilities
Drop-in installation
Install as a Keycloak theme bundle and select it per realm. Override branding from the admin console without rebuilding.
Configuration over customization
Logos, colors, and copy via standard Keycloak theme properties. Reach for FreeMarker only when you need to.
Get started
Install from GitHub
Theme bundle JAR. Drop into your Keycloak providers directory and select the theme per realm.
p2-inc/keycloak-themesSkip the install
Phase Two managed Keycloak ships with the themes preinstalled and brandable from the dashboard.
Try the hosted version