How to Make a Semicircle (Right) with CSS

Learn two clean CSS techniques to draw a right-facing semicircle and see a live preview you can copy and paste into your project.

Live Preview: Semicircle (Right)

Method 1: Using Border-Radius

.semicircle-right {
  width: 75px;            /* half of the diameter */
  height: 150px;          /* full diameter */
  background: #cd5454;
  border-radius: 0 75px 75px 0; /* TL TR BR BL */
}

Method 2: Using Clip-Path on a Circle

.semicircle-right-clip {
  width: 150px;
  height: 150px;
  background: #cd5454;
  border-radius: 50%;           /* make a circle */
  clip-path: inset(0 0 0 50%);  /* keep the right half */
}

How This Works

In the border-radius method, the element’s height is the circle’s diameter and its width is the radius. Rounding just the right corners to the radius value (top-right and bottom-right) creates a smooth semicircle on the right with a straight vertical edge on the left.

In the clip-path method, we first draw a full circle, then crop away the left half with inset(0 0 0 50%). The visible remainder is a right-facing semicircle.

How to Center Content Inside a Semicircle (Right)

The easiest way is to turn the shape into a flex or grid container and center children with one or two lines of CSS.

Method 1: Use CSS Flexbox

.semicircle-right {
  display: flex;
  justify-content: center;
  align-items: center;
}

Method 2: Use CSS Grid

.semicircle-right {<br>  display: grid;<br>  place-items: center;<br>}

Optional: If you place content inside the border-radius semicircle and want it confined to the curved shape, add overflow: hidden to the container.

.semicircle-right {
  overflow: hidden;
}

When to Use Each Shape Method

Use the border-radius method for a lightweight, box-friendly shape where the element’s box matches the visible shape width (good for layout). Use the clip-path method when you want to start from a true circle, animate cropping, or combine with masks, just note the element’s box remains the full circle for layout/flow, which can affect spacing and alignment. Hit testing (clicks/hover) respects clip-path, so the interactive area is limited to the visible clipped semicircle, not the full box.

Quick Customizations

Change the color via background: yourColor; and adjust the size by scaling the diameter (height) and matching the radius (half the height) in border-radius or the element’s width for the circular base. Mirror the direction with transform: scaleX(-1) to flip right to left.

Outlines:

  • Border-radius method: A full outline works with border: 2px solid #000.
  • Clip-path method: Borders are clipped to the half-circle and won’t draw along the straight cut edge. Use a pseudo-element with the same clip-path as a “stroke,” or switch to SVG for a true stroked outline.
/* Clip-path outline via pseudo-element */
.semicircle-right-clip {
  position: relative;            /* enable absolute positioning */
  width: 150px;
  height: 150px;
  background: #cd5454;
  border-radius: 50%;
  clip-path: inset(0 0 0 50%);
}

.semicircle-right-clip::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  clip-path: inset(0 0 0 50%);
  box-shadow: 0 0 0 2px #000;    /* stroke-like outline */
  pointer-events: none;          /* keep clicks on the element */
}

Accessibility & SEO

If the semicircle conveys meaning, include accessible text nearby or add role=”img” and an aria-label on the element to describe its purpose.