Faruk ToolsVisit Portfolio

CSS clip-path Editor

Drag handles to design a CSS clip-path shape — polygon(), circle(), ellipse(), or inset() — with a live preview on a real element, common shape presets, and a synced CSS value box.

Nothing leaves the browser. The shape and preview are built entirely on this device — there is no network request, no logging, and nothing is saved.

Presets

Drag the white-bordered handles on the preview, or edit the CSS value directly. Value only (no property name): polygon(93.3% 25%, 93.3% 75%, 50% 100%, 6.7% 75%, 6.7% 25%, 50% 0%)

clip-path cuts an element down to a shape — a polygon, a circle, an ellipse, or an inset rectangle — hiding everything outside it without affecting layout the way overflow: hidden or a mask image would. This editor renders the real CSS property live on an actual element as you drag, not an approximation, so what you see is exactly what you'll get.

Switch between the four clip-path shape functions, drag the white-bordered handles to reshape, or paste an existing clip-path value to load it straight into the editor. A handful of common shapes — triangle, hexagon, star, arrow, speech bubble, cross — are one click away as a starting point for polygon().

Every coordinate here is a percentage, which is what makes clip-path shapes responsive: the same polygon() value keeps its proportions whether the element is 100px or 1000px wide.

How to use this editor

  1. 1Pick a shape type — Polygon, Circle, Ellipse, or Inset — or click a preset to start from a common shape.
  2. 2Drag the handles on the preview to reshape it. For polygon, use + Add point to insert a new vertex at the widest gap, and Remove to delete any point (minimum 3).
  3. 3Type or paste a clip-path value directly into the CSS box to load it into the editor instead.
  4. 4Copy the value and drop it into any element's clip-path property.

The four clip-path shapes

FunctionShapeExample
polygon()Any straight-edged shape from 3+ pointspolygon(50% 0%, 100% 100%, 0% 100%)
circle()A circle at a given radius and positioncircle(25% at 50% 50%)
ellipse()An oval with independent x/y radiiellipse(35% 25% at 50% 50%)
inset()A rectangle inset from each edge, with optional rounded cornersinset(10% round 8%)

Frequently asked questions

Why did part of my image disappear instead of just getting a colored cutout?+

clip-path doesn't paint anything — it only hides whatever falls outside the shape, revealing the page background underneath (or whatever's behind the element). If you want a colored shape, apply clip-path to an element that already has that background color or image; the shape itself doesn't add color.

Can clip-path points go outside the 0-100% box?+

Yes, for polygon(), circle(), and ellipse() — a coordinate below 0% or above 100% is valid CSS and pushes part of the shape outside the element's own box, which is sometimes exactly what you want (e.g. a shape that bleeds off one edge). inset() edges are clamped to non-negative values here since a negative inset doesn't have a sensible meaning.

Does clip-path affect layout or click targets?+

No — clip-path only changes what's painted, not the element's box size or position in the layout, and in most browsers it also clips pointer events to the visible shape (so clicks outside the shape but inside the original box pass through). This is different from overflow: hidden, which doesn't reshape hit-testing at all.

Can I animate a clip-path change?+

Yes, but only between two polygon() values with the exact same number of points (or two circle()/ellipse()/inset() values) — the browser interpolates each coordinate individually, so a mismatched point count can't be animated smoothly. If you're building a hover effect, make sure both states use the same shape function and point count.

Is clip-path supported in every browser?+

Yes for polygon(), circle(), ellipse(), and inset() — support has been solid across Chrome, Firefox, and Safari for years. The newer shape(), path(), and CSS Shapes Level 2 features aren't covered by this editor, which sticks to the four widely-supported basic shapes.