superellipse() CSS function

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The superellipse() CSS function defines the curvature of an ellipse, and is used to specify corner shapes either directly, or via <corner-shape-value> keywords.

Syntax

css
superellipse(infinity)
superellipse(4)
superellipse(1.7)
superellipse(0)
superellipse(-2.8)
superellipse(-3)
superellipse(-infinity)

Parameters

<number>

A number in the range of -infinity to infinity, inclusive.

Return value

A superellipse shape.

Description

The superellipse() function returns a superellipse shape, which is used to specify corner-shape values. A superellipse is a closed curve symmetric shape between a rectangle and an ellipse. It resembles an ellipse that retains the geometric features of its two axes.

The superellipse shape is calculated using a modified version of an ellipse. The following equation defines an ellipse centered at the origin:

x 2 a 2 + y 2 b 2 = 1

The a and b variables refer to the radii of the ellipse, while the x and y coordinates are points on the ellipse's circumference.

A circle is an ellipse where the radii, the a and b in the previous equation, are the same length. With a and b both equal to r, the equation for a circle can be written as:

x 2 + y 2 = r 2

In this equation, the x and y are coordinates of points on the circle's circumference, and the r is the radius of the circle, with the center of the circle being (0, 0). The ellipse is produced by scaling a circle shape along the x and/or y axis.

A superellipse shape is created by replacing the 2 exponent in each case with 2K, K being the argument passed to the superellipse() function, which modifies the curvature of the ellipse:

x 2 K + y 2 K = 1

The following diagram illustrates different superellipse() values for the top right corner of a container: infinity, 1, 0, -1, and -infinity:

Line diagram illustrating the ellipses created using different K values, as described subsequently

  • A K value of 0 creates a straight line. This value can be used to create bevelled corners and corresponds to the <corner-shape-value> bevel keyword.
  • A K value of 1 creates an ordinary ellipse, corresponding to the round keyword.
  • A K value of >1 makes the ellipse shape more square; 2 corresponds to the squircle keyword.
  • A K value of infinity creates a perfect square (corresponding to the square keyword), although K values of 10 or more are virtually indistinguishable from a square.
  • Negative K values result in a concave curve, resulting in corner shapes that are curved inward, or "scooped out". A K value of -1 corresponds to the scoop keyword and -infinity corresponds to the notch keyword.

A negative or positive superellipse would appear symmetrical to a superellipse with its inverse value.

Note: For any K parameter value passed, the superellipse() function's return value will always be the same for that K value. When that value is applied to two elements, the appearance of the corner shape may differ if the box size or border-radius values differ.

Formal syntax

<superellipse()> = 
superellipse( <number> |
infinity |
-infinity )

Examples

superellipse() value comparison

In this example, two <input type="range"> sliders allow you to cycle through many different corner-shape superellipse() values and border-radius values enabling you to compare the effects of each on a container. The code is hidden for brevity, but the full explanation of the superellipse value comparison is provided on the corner-shape reference page.

Note: See also the <corner-shape-value> value comparison example.

Specifications

Specification
CSS Borders and Box Decorations Module Level 4
# funcdef-superellipse

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
superellipse()
Experimental
Chrome – Full support
Chrome 139 (Release date: 2025-08-05)
footnote Full support
Edge – Full support
Edge 139 (Release date: 2025-08-07)
footnote Full support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 123 (Release date: 2025-10-28)
footnote Full support
Safari – No support
Safari
footnote No support
Chrome Android – Full support
Chrome Android 139 (Release date: 2025-08-05)
footnote Full support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – Full support
Opera Android 91 (Release date: 2025-08-19)
footnote Full support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – Full support
WebView Android 139 (Release date: 2025-08-05)
footnote Full support
WebView on iOS – No support
WebView on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

See also