I Love the New CSS corner-shape Property
April 20, 2026
For years, border-radius has been the only tool we have for shaping corners in CSS. It is genuinely powerful (we can make pill buttons, circles, and all manner of rounded rectangles), but it only ever gives us one type of corner: a circular or elliptical arc. Every rounded corner on the web looks essentially the same. That changes with the new corner-shape CSS property, which lets you control the actual shape of a corner, not just its size.
If you prefer to learn visually, check out the video version of this article.
Why corner-shape Matters
The limitation of border-radius is subtle but real. No matter what radius you set, the curve you get is always a circular arc. Designers have long wanted:
- Angled corners: straight lines meeting at a point, like a diamond or a cut-gem effect
- Concave corners: corners that curve inward, creating scooped-out shapes
- Squircles: the rounded-square hybrid used by iOS app icons, which is mathematically a superellipse, not a circle
Before corner-shape, achieving any of these required clip-path, SVG masks, or complex border tricks, all of which are fragile and hard to combine with other CSS features like box-shadow or border. The corner-shape property solves this cleanly at the CSS level.
How corner-shape Works
The corner-shape property works together with border-radius. Think of it this way:
border-radiusdefines how far from the corner the curve extends (the size of the corner)corner-shapedefines what shape that corner takes (the type of curve)
Without a border-radius, corner-shape has no visible effect because there is no corner area to reshape. The two properties are a team.
.element {
/* border-radius sets the corner size */
border-radius: 1rem;
/* corner-shape sets the corner shape */
corner-shape: round;
}
Here is a preview of some of the things you can do with corner-shape, each with the same border-radius: 40%:
Your browser doesn't support corner-shape yet
The visual examples below require browser support for the corner-shape CSS property. All boxes may appear as simple rounded
corners in your browser.
round Standard circular arc (default) bevel Straight lines to a point scoop Concave inward curve notch Sharp concave right angle squircle iOS app icon shape square Right-angle corners Interactive Playground
round
round is the default value and produces the same circular arc you already know from border-radius. You will never need to write it explicitly unless you are overriding another value, but it is important to know it exists.
.card {
border-radius: 1rem;
corner-shape: round; /* This is the default */
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
bevel
bevel replaces the curved arc with straight lines from point to point. This is great for creating hexagonal or diamond shapes.
/* With a large border-radius, you get a diamond */
.diamond {
width: 120px;
height: 120px;
border-radius: 50%;
corner-shape: bevel;
}
/* With a smaller border-radius, you get a cut-corner effect */
.cut-corner {
border-radius: 1.5rem;
corner-shape: bevel;
}
1
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.diamond
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.cut-corner scoop
scoop is the inverse of round. Instead of the corner curving outward like a rounded rectangle, it curves inward, creating a concave indentation at each corner.
.scooped-card {
border-radius: 1.5rem;
corner-shape: scoop;
}
/* With a large radius, you get a pronounced pinched/star effect */
.pinched {
border-radius: 40%;
corner-shape: scoop;
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.scooped-card
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.pinched The square Value
square may seem counterintuitive since it completely removes the visual effect of border-radius, giving right-angle corners even when border-radius is set, but this value is useful for animation. Rather than animating border-radius from a value down to 0, you can keep border-radius constant and transition corner-shape between values, which makes it easy to create smooth transitions between shape types.
.button {
border-radius: 0.5rem;
corner-shape: square;
transition: corner-shape 0.3s ease;
}
.button:hover {
corner-shape: round;
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
notch
notch is the concave counterpart to square. While square gives right-angle corners, notch cuts a straight line into the element, creating a sharp indentation at each corner.
.notched {
border-radius: 1.5rem;
corner-shape: notch;
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
squircle
squircle produces the rounded-square hybrid. The difference from round is subtle, but squircle has a more rectangular shape with a softer curve that is especially noticeable at larger border-radius values.
.squircle {
border-radius: 28%;
corner-shape: squircle;
}
.round {
border-radius: 28%;
corner-shape: round;
}
Before corner-shape, getting a proper squircle required custom SVG or clip-path with complex coordinate math. Now it is one CSS property.
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.round
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.squircle superellipse()
The superellipse() function is the mathematical foundation that all corner-shape keyword values are built on. Each keyword is a shorthand for a specific superellipse(n) value:
| Keyword | Equivalent | Shape |
|---|---|---|
notch | superellipse(-infinity) | Sharp concave right angle |
scoop | superellipse(-1) | Concave arc |
bevel | superellipse(0) | Straight diagonal line |
round | superellipse(1) | Standard elliptical arc |
squircle | superellipse(2) | Rounded square |
square | superellipse(infinity) | Right-angle corners |
The n parameter controls curvature:
- Negative values produce concave (inward) shapes. The more negative, the sharper the notch.
n = 0produces a straight bevel with no curvature.n = 1is a standard circular arc, matching the behavior ofborder-radiusalone.- Larger positive values produce shapes that look increasingly square.
You use superellipse() when you want a shape that falls between the named keywords:
/* Between bevel (n=0) and round (n=1) */
/* A subtly curved bevel */
.soft-bevel {
border-radius: 1.5rem;
corner-shape: superellipse(0.5);
}
/* Between round (n=1) and squircle (n=2) */
/* Squarer than round, rounder than squircle */
.soft-squircle {
border-radius: 40%;
corner-shape: superellipse(1.5);
}
/* Between bevel (n=0) and scoop (n=-1) */
/* Gentle concave curve */
.gentle-scoop {
border-radius: 1.5rem;
corner-shape: superellipse(-0.5);
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.soft-bevel
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.soft-squircle
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.gentle-scoop Controlling Individual Corners
Just like border-radius has individual corner longhand properties (border-top-left-radius, etc.), corner-shape has its own set of longhands for per-corner control:
corner-top-left-shapecorner-top-right-shapecorner-bottom-right-shapecorner-bottom-left-shape
This lets you mix and match shapes on different corners for creative effects:
/* Speech bubble tail */
.speech-bubble {
border-radius: 1rem;
corner-shape: round;
/* Make the bottom-right corner pointed for a speech tail */
corner-bottom-right-shape: square;
}
/* Mixed decorative element */
.mixed-corners {
border-radius: 2rem;
corner-top-left-shape: round;
corner-top-right-shape: bevel;
corner-bottom-right-shape: scoop;
corner-bottom-left-shape: superellipse(4);
}
The corner-shape shorthand also accepts up to four values following the same clockwise pattern as border-radius (top-left, top-right, bottom-right, bottom-left):
/* Shorthand: top-left top-right bottom-right bottom-left */
.mixed-shorthand {
border-radius: 2rem;
corner-shape: round bevel scoop superellipse(4);
}
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.speech-bubble
Your browser doesn't support corner-shape yet
This example requires browser support for the
corner-shape property.
.mixed-shorthand Interactive Playground
Try different values and see exactly what CSS is generated. Use the shape buttons to switch between round, squircle, square, bevel, scoop, notch, and superellipse(), and adjust the sliders to fine-tune the result:
Browser Support
corner-shape currently only has 69% support and is only available in Chromium-based browsers as of April 2026.
Because border-radius degrades gracefully when corner-shape is not recognized, you can start using corner-shape today for progressive enhancement without any risk to unsupported browsers. The shape will simply fall back to a standard rounded corner.
Conclusion
The corner-shape property is a small addition to CSS that unlocks a surprisingly large design space. For the first time, we can create angled, concave, squircle, and notched corners entirely in CSS without clip-path, without SVG, and without losing access to box-shadow, border, or overflow.