Bootstrap 6 Border Radius

Border radius

Round the corners of an element with our border-radius utilities, from a subtle radius to a full pill.

ClassStyles
.rounded-size-0--cui-rounded-size: var(--cui-radius-0);
.rounded-size-1--cui-rounded-size: var(--cui-radius-1);
.rounded-size-2--cui-rounded-size: var(--cui-radius-2);
.rounded-size-3--cui-rounded-size: var(--cui-radius-3);
.rounded-size-4--cui-rounded-size: var(--cui-radius-4);
.rounded-size-5--cui-rounded-size: var(--cui-radius-5);
.rounded-size-6--cui-rounded-size: var(--cui-radius-6);
.rounded-size-7--cui-rounded-size: var(--cui-radius-7);
.rounded-size-8--cui-rounded-size: var(--cui-radius-8);
.rounded-size-9--cui-rounded-size: var(--cui-radius-9);
.rounded-size--cui-rounded-size: var(--cui-radius-5);
.rounded-size-circle--cui-rounded-size: 50%;
.rounded-size-pill--cui-rounded-size: var(--cui-radius-pill);
.rounded-0--cui-rounded-size: var(--cui-radius-0);
border-radius: var(--cui-rounded-size);
.rounded-1--cui-rounded-size: var(--cui-radius-1);
border-radius: var(--cui-rounded-size);
.rounded-2--cui-rounded-size: var(--cui-radius-2);
border-radius: var(--cui-rounded-size);
.rounded-3--cui-rounded-size: var(--cui-radius-3);
border-radius: var(--cui-rounded-size);
.rounded-4--cui-rounded-size: var(--cui-radius-4);
border-radius: var(--cui-rounded-size);
.rounded-5--cui-rounded-size: var(--cui-radius-5);
border-radius: var(--cui-rounded-size);
.rounded-6--cui-rounded-size: var(--cui-radius-6);
border-radius: var(--cui-rounded-size);
.rounded-7--cui-rounded-size: var(--cui-radius-7);
border-radius: var(--cui-rounded-size);
.rounded-8--cui-rounded-size: var(--cui-radius-8);
border-radius: var(--cui-rounded-size);
.rounded-9--cui-rounded-size: var(--cui-radius-9);
border-radius: var(--cui-rounded-size);
.rounded--cui-rounded-size: var(--cui-radius-5);
border-radius: var(--cui-rounded-size);
.rounded-circle--cui-rounded-size: 50%;
border-radius: var(--cui-rounded-size);
.rounded-pill--cui-rounded-size: var(--cui-radius-pill);
border-radius: var(--cui-rounded-size);
.rounded-top-0border-start-start-radius: var(--cui-radius-0);
border-start-end-radius: var(--cui-radius-0);
.rounded-top-1border-start-start-radius: var(--cui-radius-1);
border-start-end-radius: var(--cui-radius-1);
.rounded-top-2border-start-start-radius: var(--cui-radius-2);
border-start-end-radius: var(--cui-radius-2);
.rounded-top-3border-start-start-radius: var(--cui-radius-3);
border-start-end-radius: var(--cui-radius-3);
.rounded-top-4border-start-start-radius: var(--cui-radius-4);
border-start-end-radius: var(--cui-radius-4);
.rounded-top-5border-start-start-radius: var(--cui-radius-5);
border-start-end-radius: var(--cui-radius-5);
.rounded-top-6border-start-start-radius: var(--cui-radius-6);
border-start-end-radius: var(--cui-radius-6);
.rounded-top-7border-start-start-radius: var(--cui-radius-7);
border-start-end-radius: var(--cui-radius-7);
.rounded-top-8border-start-start-radius: var(--cui-radius-8);
border-start-end-radius: var(--cui-radius-8);
.rounded-top-9border-start-start-radius: var(--cui-radius-9);
border-start-end-radius: var(--cui-radius-9);
.rounded-topborder-start-start-radius: var(--cui-rounded-size, var(--cui-radius-5));
border-start-end-radius: var(--cui-rounded-size, var(--cui-radius-5));
.rounded-top-circleborder-start-start-radius: 50%;
border-start-end-radius: 50%;
.rounded-top-pillborder-start-start-radius: var(--cui-radius-pill);
border-start-end-radius: var(--cui-radius-pill);
.rounded-end-0border-start-end-radius: var(--cui-radius-0);
border-end-end-radius: var(--cui-radius-0);
.rounded-end-1border-start-end-radius: var(--cui-radius-1);
border-end-end-radius: var(--cui-radius-1);
.rounded-end-2border-start-end-radius: var(--cui-radius-2);
border-end-end-radius: var(--cui-radius-2);
.rounded-end-3border-start-end-radius: var(--cui-radius-3);
border-end-end-radius: var(--cui-radius-3);
.rounded-end-4border-start-end-radius: var(--cui-radius-4);
border-end-end-radius: var(--cui-radius-4);
.rounded-end-5border-start-end-radius: var(--cui-radius-5);
border-end-end-radius: var(--cui-radius-5);
.rounded-end-6border-start-end-radius: var(--cui-radius-6);
border-end-end-radius: var(--cui-radius-6);
.rounded-end-7border-start-end-radius: var(--cui-radius-7);
border-end-end-radius: var(--cui-radius-7);
.rounded-end-8border-start-end-radius: var(--cui-radius-8);
border-end-end-radius: var(--cui-radius-8);
.rounded-end-9border-start-end-radius: var(--cui-radius-9);
border-end-end-radius: var(--cui-radius-9);
.rounded-endborder-start-end-radius: var(--cui-rounded-size, var(--cui-radius-5));
border-end-end-radius: var(--cui-rounded-size, var(--cui-radius-5));
.rounded-end-circleborder-start-end-radius: 50%;
border-end-end-radius: 50%;
.rounded-end-pillborder-start-end-radius: var(--cui-radius-pill);
border-end-end-radius: var(--cui-radius-pill);
.rounded-bottom-0border-end-start-radius: var(--cui-radius-0);
border-end-end-radius: var(--cui-radius-0);
.rounded-bottom-1border-end-start-radius: var(--cui-radius-1);
border-end-end-radius: var(--cui-radius-1);
.rounded-bottom-2border-end-start-radius: var(--cui-radius-2);
border-end-end-radius: var(--cui-radius-2);
.rounded-bottom-3border-end-start-radius: var(--cui-radius-3);
border-end-end-radius: var(--cui-radius-3);
.rounded-bottom-4border-end-start-radius: var(--cui-radius-4);
border-end-end-radius: var(--cui-radius-4);
.rounded-bottom-5border-end-start-radius: var(--cui-radius-5);
border-end-end-radius: var(--cui-radius-5);
.rounded-bottom-6border-end-start-radius: var(--cui-radius-6);
border-end-end-radius: var(--cui-radius-6);
.rounded-bottom-7border-end-start-radius: var(--cui-radius-7);
border-end-end-radius: var(--cui-radius-7);
.rounded-bottom-8border-end-start-radius: var(--cui-radius-8);
border-end-end-radius: var(--cui-radius-8);
.rounded-bottom-9border-end-start-radius: var(--cui-radius-9);
border-end-end-radius: var(--cui-radius-9);
.rounded-bottomborder-end-start-radius: var(--cui-rounded-size, var(--cui-radius-5));
border-end-end-radius: var(--cui-rounded-size, var(--cui-radius-5));
.rounded-bottom-circleborder-end-start-radius: 50%;
border-end-end-radius: 50%;
.rounded-bottom-pillborder-end-start-radius: var(--cui-radius-pill);
border-end-end-radius: var(--cui-radius-pill);
.rounded-start-0border-start-start-radius: var(--cui-radius-0);
border-end-start-radius: var(--cui-radius-0);
.rounded-start-1border-start-start-radius: var(--cui-radius-1);
border-end-start-radius: var(--cui-radius-1);
.rounded-start-2border-start-start-radius: var(--cui-radius-2);
border-end-start-radius: var(--cui-radius-2);
.rounded-start-3border-start-start-radius: var(--cui-radius-3);
border-end-start-radius: var(--cui-radius-3);
.rounded-start-4border-start-start-radius: var(--cui-radius-4);
border-end-start-radius: var(--cui-radius-4);
.rounded-start-5border-start-start-radius: var(--cui-radius-5);
border-end-start-radius: var(--cui-radius-5);
.rounded-start-6border-start-start-radius: var(--cui-radius-6);
border-end-start-radius: var(--cui-radius-6);
.rounded-start-7border-start-start-radius: var(--cui-radius-7);
border-end-start-radius: var(--cui-radius-7);
.rounded-start-8border-start-start-radius: var(--cui-radius-8);
border-end-start-radius: var(--cui-radius-8);
.rounded-start-9border-start-start-radius: var(--cui-radius-9);
border-end-start-radius: var(--cui-radius-9);
.rounded-startborder-start-start-radius: var(--cui-rounded-size, var(--cui-radius-5));
border-end-start-radius: var(--cui-rounded-size, var(--cui-radius-5));
.rounded-start-circleborder-start-start-radius: 50%;
border-end-start-radius: 50%;
.rounded-start-pillborder-start-start-radius: var(--cui-radius-pill);
border-end-start-radius: var(--cui-radius-pill);

Examples

Add classes to an element to easily round its corners.

Example rounded image Example top rounded image Example right rounded image Example bottom rounded image Example left rounded image
html
<img src="..." class="rounded" alt="...">
<img src="..." class="rounded-top" alt="...">
<img src="..." class="rounded-end" alt="...">
<img src="..." class="rounded-bottom" alt="...">
<img src="..." class="rounded-start" alt="...">
Example small rounded image Example default left rounded image Example right completely round image Example left rounded pill image Example extra large bottom rounded image
html
<img src="..." class="rounded-bottom-1" alt="...">
<img src="..." class="rounded-start-2" alt="...">
<img src="..." class="rounded-end-circle" alt="...">
<img src="..." class="rounded-start-pill" alt="...">
<img src="..." class="rounded-5 rounded-top-0" alt="...">

Sizing

Use the scaling classes for larger or smaller rounded corners. Sizes range from 0 to 9 — the stops of the $radii scale, --cui-radius-0 through --cui-radius-9 — plus circle and pill, and can be configured by modifying the utilities API. .rounded without a number is size 5, the radius buttons and form controls use.

Example non-rounded image Example small rounded image Example default rounded image Example large rounded image Example larger rounded image Example extra large rounded image Example rounded image, size 6 Example rounded image, size 7 Example rounded image, size 8 Example rounded image, size 9 Completely round image Rounded pill image
html
<img src="..." class="rounded-0" alt="...">
<img src="..." class="rounded-1" alt="...">
<img src="..." class="rounded-2" alt="...">
<img src="..." class="rounded-3" alt="...">
<img src="..." class="rounded-4" alt="...">
<img src="..." class="rounded-5" alt="...">
<img src="..." class="rounded-6" alt="...">
<img src="..." class="rounded-7" alt="...">
<img src="..." class="rounded-8" alt="...">
<img src="..." class="rounded-9" alt="...">
<img src="..." class="rounded-circle" alt="...">
<img src="..." class="rounded-pill" alt="...">

Setting the size without applying it

Added in v6.0.0

.rounded-size-* writes the radius into --cui-rounded-size without setting border-radius itself. The unprefixed corner classes — .rounded, .rounded-top, .rounded-end, .rounded-bottom, .rounded-start — read that token, so one size class drives whichever corners you round.

Top
Start
All

Without a .rounded-size-* in scope the corner classes fall back to --cui-radius-5. A numbered .rounded-{n} also writes the token, so .rounded-3 .rounded-top keeps the top corners on size 3 while a side class with its own number (.rounded-top-3) sets that side directly and ignores the token.

Customizing

CSS variables

The radius scale is emitted on :root as --cui-radius, the base, and --cui-radius-0 through --cui-radius-9, each a calc() multiple of the base, plus --cui-radius-pill. Components and the .rounded-* utilities read stops of the scale (--cui-radius-5, --cui-radius-7), so setting --cui-radius re-rounds every component that reads a stop and overriding one stop re-rounds everything that uses it, without recompiling. Shapes that are round by design keep their own value: --cui-radius-pill is a fixed 50rem for chips, switches and .rounded-pill, and nav pills, avatars and the range track carry fixed radii of their own.

scss
$root-token-defaults: map.set($root-token-defaults, --cui-radius, .5rem);
@each $key, $value in $radii {
  $root-token-defaults: map.set($root-token-defaults, --cui-radius-#{$key}, $value);
}
$root-token-defaults: map.set($root-token-defaults, --cui-radius-pill, 50rem);

Sass maps

Each entry is one --cui-radius-{step} token as a calc() multiple of --cui-radius — override the map to add or retune a step:

scss
$radii: () !default;
// stylelint-disable-next-line scss/dollar-variable-default
$radii: defaults(
  (
    0: 0,
    1: calc(var(--cui-radius) * .25),
    2: calc(var(--cui-radius) * .375),
    3: calc(var(--cui-radius) * .5),
    4: calc(var(--cui-radius) * .75),
    5: var(--cui-radius),
    6: calc(var(--cui-radius) * 1.25),
    7: calc(var(--cui-radius) * 1.5),
    8: calc(var(--cui-radius) * 1.75),
    9: calc(var(--cui-radius) * 2),
  ),
  $radii
);

Sass mixins

scss
@mixin border-radius($radius: var(--cui-radius-5), $fallback-border-radius: false) {
  @if $enable-rounded {
    border-radius: valid-radius($radius);
  }
  @else if $fallback-border-radius != false {
    border-radius: $fallback-border-radius;
  }
}

@mixin border-top-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-top-left-radius: valid-radius($radius);
    border-top-right-radius: valid-radius($radius);
  }
}

@mixin border-end-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-start-end-radius: valid-radius($radius);
    border-end-end-radius: valid-radius($radius);
  }
}

@mixin border-bottom-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-bottom-right-radius: valid-radius($radius);
    border-bottom-left-radius: valid-radius($radius);
  }
}

@mixin border-start-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-start-start-radius: valid-radius($radius);
    border-end-start-radius: valid-radius($radius);
  }
}

@mixin border-top-start-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-start-start-radius: valid-radius($radius);
  }
}

@mixin border-top-end-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-start-end-radius: valid-radius($radius);
  }
}

@mixin border-bottom-end-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-end-end-radius: valid-radius($radius);
  }
}

@mixin border-bottom-start-radius($radius: var(--cui-radius-5)) {
  @if $enable-rounded {
    border-end-start-radius: valid-radius($radius);
  }
}

Utilities API

Border radius utilities are declared in our utilities API in scss/_utilities.scss. Learn how to use the utilities API.

scss
"rounded": (
  property: (
    --cui-rounded-size: null,
    border-radius: var(--cui-rounded-size)
  ),
  class: rounded,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-radius-5),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),
"rounded-size": (
  property: --cui-rounded-size,
  class: rounded-size,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-radius-5),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),
"rounded-top": (
  property: border-start-start-radius border-start-end-radius,
  class: rounded-top,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-rounded-size, var(--cui-radius-5)),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),
"rounded-end": (
  property: border-start-end-radius border-end-end-radius,
  class: rounded-end,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-rounded-size, var(--cui-radius-5)),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),
"rounded-bottom": (
  property: border-end-start-radius border-end-end-radius,
  class: rounded-bottom,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-rounded-size, var(--cui-radius-5)),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),
"rounded-start": (
  property: border-start-start-radius border-end-start-radius,
  class: rounded-start,
  values: map.merge(
    $utilities-radii,
    (
      null: var(--cui-rounded-size, var(--cui-radius-5)),
      circle: 50%,
      pill: var(--cui-radius-pill)
    )
  )
),