search

CSS corner-shape: Beyond border-radius

For years, border-radius was the only tool we had for shaping corners in CSS. It could round them – and that was about it.

Every bevel, notch, or squircle required SVGs, images, or clip-path workarounds that broke borders and shadows. The new corner-shape property changes that – six corner geometries, animations between them, and borders that actually follow the shape.

The live demos below require Chrome 139+ or Edge 139+. If your browser doesn't support corner-shape yet, you'll see standard rounded corners instead.
Live Demo

What is corner-shape?

The corner-shape property controls how an element’s corners curve. It pairs with border-radius: the radius sets the corner size, corner-shape sets the geometry.

.element {
    border-radius: 30px;
    corner-shape: squircle;
}

Without corner-shape, every rounded corner is an elliptical arc. With it, you get six shapes beyond the standard arc, plus a superellipse() function that lets you dial in anything between them. Each keyword maps to a specific superellipse(K) value:

Keywordsuperellipse(K)Effect
roundsuperellipse(1)Standard rounded corner (default)
squirclesuperellipse(2)Smooth blend of square and circle
squaresuperellipse(infinity)Sharp right angle, cancels border-radius
bevelsuperellipse(0)Straight diagonal cut
scoopsuperellipse(-1)Concave inward curve
notchsuperellipse(-infinity)Sharp inward 90-degree corner

Positive K values push the curve outward (convex). Negative values pull it inward (concave).

You can use any number. superellipse(0.5) gives you something between a bevel and a round, while superellipse(3) creates an even smoother squircle.

The corner-shape property has no effect unless border-radius is set to a non-zero value. Always pair them together.

Interactive corner-shape Examples

Things get interesting when you start mixing values and combining different shapes on each corner. The following playgrounds let you experiment in real time.

Superellipse Explorer

Drag the K slider to morph between all corner shapes. The keyword buttons snap to specific values.

Try values between the keywords. That’s where superellipse() really shines.

Interactive Demo
K 1
R 40px
border-radius: 40px; corner-shape: round;

Per-Corner Playground

Each corner can have its own shape and radius. This playground gives you independent control over all four corners. Adjust the K value and radius for each one, then copy the generated CSS.

Interactive Demo - Per Corner Control
Top Left
K 1
R 40px
Top Right
K 1
R 40px
Bottom Left
K 1
R 40px
Bottom Right
K 1
R 40px

Try setting the top corners to bevel (K=0) and the bottom corners to scoop (K=-1) for a distinctive card shape. Or use squircle on all four with a large radius for iOS-style containers.

When you need different shapes per corner, you can use the shorthand or the individual longhand properties:

corner-shape: squircle square bevel round;
/* is equivalent to: */
corner-top-left-shape: squircle;
corner-top-right-shape: square;
corner-bottom-right-shape: bevel;
corner-bottom-left-shape: round;

Real-World Use Cases

Here’s where it gets practical. These patterns were painful or impossible in pure CSS before.

Sale Tags

E-commerce sale tags typically need a pointed end, the classic “price tag” shape. Before corner-shape, this required SVGs or clip-path hacks that broke borders.

With corner-shape: round bevel bevel round and asymmetric border-radius values, you get the shape with real borders intact.

.sale-tag {
    corner-shape: round bevel bevel round;
    border-radius: 6px 42px 42px 6px / 6px 50% 50% 6px;
}
Sale Tags
30% OFF
NEW
FEATURED

Breadcrumb Navigation

The breadcrumb pattern works the same way. corner-shape: bevel with border-radius: 0 32px 32px 0 / 0 50% 50% 0 creates a clean chevron arrow without pseudo-elements or layered backgrounds.

.breadcrumb {
    corner-shape: bevel;
    border-radius: 0 32px 32px 0 / 0 50% 50% 0;
}
Breadcrumb Navigation
Home
Products
Details

Coupon Card with Scoop Cutouts

The scoop value creates concave curves, the same shape you see on physical coupons where the tear-off perforation curves inward.

By applying corner-shape: round round scoop scoop, the bottom corners scoop inward while the top stays rounded.

.coupon {
    corner-shape: round round scoop scoop;
    border-radius: 12px 12px 40px 40px;
}

Borders, background clipping, and box-shadow all follow the scooped shape. That was never possible with clip-path alone.

Coupon Card
Limited Time Offer
SAVE20
20% off your next order

Morphing Corner Animation

Since corner-shape values interpolate through their superellipse() equivalents, you can animate between them smoothly. This creates organic morphing effects that would require JavaScript path interpolation otherwise.

@keyframes morph {
    0%   { corner-shape: round; }
    20%  { corner-shape: squircle; }
    40%  { corner-shape: bevel; }
    60%  { corner-shape: scoop; }
    80%  { corner-shape: notch; }
    100% { corner-shape: superellipse(3); }
}

.box {
    border-radius: 50px;
    animation: morph 4s ease-in-out infinite alternate;
}
Morphing Animation
Speed 4s

Notched Data Cards

The notch value creates sharp 90-degree inward cuts. Pair it with a generous border-radius and a colored top bar and you get something that used to require clipping masks.

.data-card {
    corner-shape: notch;
    border-radius: 20px;
}
Notched Data Cards
2.4s
First Contentful Paint
97
Performance Score
142KB
Total CSS Weight

Scooped Event Ticket

Physical tickets curve inward where the stub tears off. Flip the scoop corners on each half and you get that perforated-edge look in pure CSS.

.ticket-left {
    corner-shape: round scoop scoop round;
    border-radius: 12px 24px 24px 12px;
}

.ticket-right {
    corner-shape: scoop round round scoop;
    border-radius: 24px 12px 12px 24px;
}
Event Ticket
CSS Summit 2026
March 15, 2026 - 09:00 AM
Hall B - Row 4, Seat 12
B4-12

Beveled Pricing Table

The bevel shape gives elements a chamfered feel – straight diagonal corners instead of curves. On a pricing table, that edge reads more assertive than the usual soft rounds.

.price-card {
    corner-shape: bevel;
    border-radius: 16px;
}
Beveled Pricing
Starter
$9/mo
  • 5 Projects
  • 10GB Storage
  • Email Support
Enterprise
$99/mo
  • Everything in Pro
  • Unlimited Storage
  • Dedicated Account Manager
  • SLA Guarantee

corner-shape vs. clip-path

These two properties overlap but serve different purposes:

PropertyWhat it controlsBorders follow shape?Shadows follow shape?Support
corner-shapeCorner geometry onlyYesYesChrome 139+
clip-pathVisual clipping maskNoNoAll modern browsers

Use corner-shape when you need custom corners with proper border and shadow support. Use clip-path when you need broad browser support and don’t need borders on the clipped shape.

Browser Support

corner-shape is part of the CSS Borders and Box Decorations Module Level 4 specification. It has shipped in stable Chromium browsers but is not yet available in Firefox or Safari.

Property
Chrome
Edge
Firefox
Safari
Opera
corner-shape
139+
139+
No
No
123+
superellipse()
139+
139+
No
No
123+

Progressive Enhancement with @supports

Use @supports to provide corner-shape styles only to browsers that understand them, while keeping a solid border-radius fallback for everyone else.

.card {
    border-radius: 16px;
}

@supports (corner-shape: squircle) {
    .card {
        corner-shape: squircle;
        border-radius: 24px;
    }
}

The transition and animation behavior is also gracefully degraded. Browsers that don’t support the property simply ignore the animation keyframes.

FAQs

Common questions about corner-shape:

Does corner-shape work without border-radius?
No. corner-shape only takes effect when border-radius is set to a non-zero value. If border-radius is 0 or not specified, corner-shape has no visible effect.
Can I set a different corner-shape for each corner?
Yes. The corner-shape shorthand accepts 1 to 4 values in clockwise order (top-left, top-right, bottom-right, bottom-left), just like border-radius. You can also use individual longhand properties like corner-top-left-shape: bevel to set specific corners.
Can I animate between corner-shape values?
Yes. Corner shape values interpolate through their superellipse() equivalents, so CSS transitions and @keyframes animations work smoothly between any two corner shapes - for example, animating from round to bevel or from scoop to squircle.
What is the superellipse() function in CSS?
superellipse(K) takes a single numeric parameter that controls the curvature. Positive values create outward curves (superellipse(1) is round, superellipse(2) is squircle), negative values create inward curves (superellipse(-1) is scoop), and superellipse(0) creates a straight bevel cut. You can use any numeric value for fine-grained control.
Do borders and box-shadow follow the corner-shape?
Yes. When you apply corner-shape, the border, outline, box-shadow, backdrop-filter, overflow clipping, and background-color/background-image all follow the defined corner shape. This is a key advantage over clip-path, which clips away borders and shadows.
When will Firefox and Safari support corner-shape?
As of early 2026, corner-shape is supported in Chrome 139+ and Edge 139+ only. There are no public timelines from Mozilla or Apple for Firefox or Safari support. Use @supports (corner-shape: squircle) for progressive enhancement so your designs work everywhere and get the upgraded corners where supported.
What is the difference between corner-shape and clip-path?
corner-shape modifies the actual box geometry, so border, outline, and box-shadow all follow the new shape. clip-path only masks the visual output - borders and shadows are clipped away. Use corner-shape when you need styled corners with proper box-model behavior, and clip-path for complex clipping masks with broader browser support.

Summary

I’ve been waiting for something beyond border-radius for a long time, and corner-shape delivers. Squircles, bevels, scoops, notches – and borders and shadows actually follow them. That alone makes it worth adopting.

Start using it behind @supports today. Browsers that don’t support it get normal rounded corners, and your users on Chrome and Edge get the upgraded experience.

Join the Discussion
0 Comments  ]

Leave a Comment

To add code, use the buttons below. For instance, click the PHP button to insert PHP code within the shortcode. If you notice any typos, please let us know!

Savvy WordPress Development official logo