Skip to main content

Themes for Keycloak

Modern, accessible, brandable login and account themes for Keycloak — production-ready out of the box, no FreeMarker archaeology required.

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.

  1. 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.

  2. 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.

  3. 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.

  4. Themes rot on upgrade

    Every Keycloak release can move templates underneath you. Custom themes built in haste become a release blocker.

  5. 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.

  1. Modern visual defaults

    Clean, contemporary login and account screens that don't need redesign before they can ship.

  2. Accessibility-first

    Semantic markup, proper focus management, and contrast that actually passes — not bolted on after the fact.

  3. Configuration over customization

    Logos, colors, and copy through standard Keycloak theme properties. Reach for FreeMarker only when you really need to.

  4. 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.

  5. 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-themes

Skip the install

Phase Two managed Keycloak ships with the themes preinstalled and brandable from the dashboard.

Try the hosted version

Ready to Try Keycloak?
Create Your Free Deployment Today.