Meet the Squircle: CSS’s Most Underrated Shape

02 Lut 2026 / Web design
Meet the Squircle: CSS’s Most Underrated Shape
CSS Deep Dive · 2025

Meet the Squircle:
CSS's Most Underrated Shape

Why Apple, Android and Figma abandoned the circle - and how you can too

✦ 8 min read ✦ CSS · Design ✦ Interactive demos

Look at the app icons on your phone. Notice how none of them are perfectly round, yet none are just a rectangle with rounded corners either? That shape has a name - and it's finally coming to CSS.

The squircle (square + circle) is a mathematical shape called a superellipse, described by the equation |x/a|ⁿ + |y/b|ⁿ = 1 where n > 2. Unlike border-radius: 50% which creates a mathematically perfect circle, a squircle has sides that remain flatter for longer before curving - producing a shape that feels more natural and intentional to the human eye.

Shape comparison
■
Square
border-radius: 0
■
Rounded
border-radius: 18px
SQUIRCLE Squircle
superellipse n≈5
●
Circle
border-radius: 50%
· · ·

How to make one in CSS today

As of 2025, CSS is gaining native squircle support via the new corner-shape property proposed in the CSS Basic UI specification. Here's how the future API looks:

Method 1 - Native CSS (Chromium 137+, experimental)

/* Requires Chrome 137+ or Edge 137+ with experimental flags */
.squircle {
  width: 120px;
  height: 120px;
  border-radius: 35%;
  corner-shape: squircle;
  background: #eef0f8;
}

Method 2 - SVG clip-path (works everywhere)

<!-- Define once in your SVG defs -->
<svg width="0" height="0" style="position:absolute">
  <defs>
    <clipPath id="squircle" clipPathUnits="objectBoundingBox">
      <path d="M0.5,0.025 C0.79,0.025,0.975,0.21,0.975,0.5
             C0.975,0.79,0.79,0.975,0.5,0.975
             C0.21,0.975,0.025,0.79,0.025,0.5
             C0.025,0.21,0.21,0.025,0.5,0.025Z"/>
    </clipPath>
  </defs>
</svg>

/* Then apply to any element */
.squircle {
  clip-path: url(#squircle);
}

Method 3 - CSS mask (flexible, gradient-ready)

.squircle {
  /* Works as a mask for images and gradients */
  mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><path d='M50,5 C78,5,95,22,95,50 C95,78,78,95,50,95 C22,95,5,78,5,50 C5,22,22,5,50,5Z' fill='black'/></svg>");
  mask-size: 100%;
  mask-repeat: no-repeat;
  mask-position: center;
}
Live demo - adjust border-radius
border-radius 35%
Using SVG clip-path superellipse (true squircle)
· · ·

Browser support & fallbacks

⚠ Current support: The native corner-shape: squircle property is experimental and only available in Chromium 137+ behind a flag. Firefox and Safari do not support it yet. The SVG clip-path method below works in all modern browsers.

When using native corner-shape, always provide a graceful fallback using @supports. Browsers that don't support the property will render a regular border-radius - which is perfectly acceptable:

The @supports pattern

.icon {
  /* Fallback - works in ALL browsers */
  border-radius: 22%;
}

@supports (corner-shape: squircle) {
  .icon {
    /* Enhanced - only where supported */
    border-radius: 35%;
    corner-shape: squircle;
  }
}

This approach ensures users on older browsers get a tasteful rounded rectangle, while those on supporting browsers enjoy the true squircle.

❌ Without fallback
✓ With rounded fallback

Full progressive enhancement example

.app-icon {
  width: 64px;
  height: 64px;

  /* Layer 1 - wide support: rounded rect */
  border-radius: 18px;

  /* Layer 2 - clip-path squircle (all modern browsers) */
  clip-path: url(#squircle-clip);
}

@supports (corner-shape: squircle) {
  .app-icon {
    clip-path: none; /* remove SVG fallback */
    border-radius: 35%;
    corner-shape: squircle;
  }
}
Fallback degradation - same icon, different browser support
No support
(square)
Rounded rect
(fallback)
SVG squircle
(modern)
Native CSS
(Chromium 137+)
· · ·

Who's already using squircles?

The squircle didn't start with CSS - it's been quietly powering the visual language of the world's most refined digital products for years. Here's who led the charge:

🍎
Apple iOS
Introduced the squircle icon grid with iOS 7 in 2013. Every app icon on iPhone uses this shape - it's baked into the OS at the system level using a superellipse with n≈5.
🤖
Android 12+
With Material You (Android 12), Google adopted squircle-based icon shapes as the new adaptive icon standard, replacing the earlier circle and teardrop shapes.
🎨
Figma
Uses squircle shapes in its own UI and introduced "smooth corners" (continuous curvature) as a native feature - directly borrowing Apple's superellipse approach.
🖥️
macOS
App icons in the Mac App Store and Launchpad all use the same superellipse shape as iOS, creating visual consistency across the entire Apple ecosystem.
🎵
Spotify
Album art thumbnails and UI elements in the mobile app use squircle-shaped containers that follow iOS system conventions.
💬
Slack
Workspace and user avatar thumbnails use squircle shapes, differentiating workspaces from round user avatars - a deliberate UX distinction.
Why does it look better? The human eye perceives corners as more natural when curvature is continuous - meaning the rate of change of curvature is smooth. A circle attached to a straight line creates an abrupt curvature discontinuity (C1 continuity). A squircle achieves C2 continuity - the same property that makes Bézier curves in typography feel refined.
· · ·

Practical use cases

App icons & avatars

.avatar {
  width: 48px;
  height: 48px;
  border-radius: 30%; /* fallback */
  clip-path: url(#squircle);
  object-fit: cover;
}

@supports (corner-shape: squircle) {
  .avatar {
    clip-path: none;
    border-radius: 35%;
    corner-shape: squircle;
  }
}

Cards & containers

.card {
  border-radius: 20px; /* standard fallback */
  padding: 2rem;
  background: #13161e;
  box-shadow: 0 8px 40px rgba(0,0,0,.3);
}

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

Buttons

.btn {
  padding: .75rem 1.5rem;
  border-radius: 12px; /* rounded fallback */
  border: none;
  cursor: pointer;
  font-size: 1rem;
}

@supports (corner-shape: squircle) {
  .btn {
    border-radius: 40%;
    corner-shape: squircle;
  }
}
Pro tip: For the SVG clip-path approach, keep your SVG <defs> block at the top of your <body> with width="0" height="0" style="position:absolute" so it takes no space but remains accessible to all elements on the page.
· · ·

What's coming next

The CSS Working Group is actively developing the corner-shape specification. Beyond squircle, the spec also proposes values like scoop (concave corners) and notch - opening up a whole new design vocabulary in pure CSS without any SVG hacks.

Until full browser support lands, the SVG clip-path technique is the most reliable approach and works in every modern browser today. It does have one limitation: clip-path hides box-shadow, so shadows need to be applied to a wrapper element.

/* box-shadow workaround with clip-path */
.squircle-wrapper {
  filter: drop-shadow(0 8px 24px rgba(0,0,0,.4));
}
.squircle-inner {
  clip-path: url(#squircle);
  background: #13161e;
}

The squircle is no longer just a footnote in Apple's design guidelines. It's becoming a first-class citizen of the web. Start using it today - your corners will thank you.

Written with care for pixels & curves · CSS Basic UI Level 5 Spec · 2025