Free CSS Clip Path Generator: Polygon, Inset, Circle & Ellipse
Build any non-rectangular shape with CSS `clip-path` — triangles, hexagons, stars, arrows, chevrons, circles, and ellipses. Editable vertex coordinates, live preview, ten curated presets, Tailwind v4 export. 100% client-side.
Vertices (3)
Presets
Four Shape Modes
Polygon (arbitrary N vertices), inset (rectangle with optional radius), circle (centred or off-centre), and ellipse — every clip-path basic-shape function with full browser support.
Vertex-Level Editing
Edit any vertex by typing exact percentage coordinates. Add or remove vertices to build custom shapes. Reorder with arrows to control the polygon's winding direction.
Multi-Format Output
Copy the CSS value, full declaration (with optional `-webkit-` prefix for old Safari), Tailwind v4 arbitrary-property value, or SCSS variable. Tailwind output is escape-safe.
100% Client-Side
Custom brand shapes, illustration accents, hero callout containers — all stay in your browser. No upload, no save, no analytics tied to your design tokens.
The CSS Clip Path Generator for Real Non-Rectangular Layouts
Non-rectangular shapes used to require either an SVG, a background image, or a stack of pseudo-elements with awkward transforms. Modern CSS `clip-path` replaces all three with a single declaration — and unlike the workarounds, the resulting shape is the element. Click events fire only on the visible region, the content inside flows naturally, and animation just works (within the rules). Our Free Online CSS Clip Path Generator builds every basic-shape function with universal browser support: polygon for arbitrary N-vertex shapes, inset for clipped rectangles, circle, and ellipse.
Use this generator with our Border Radius Generator (for the rounded-rectangle case where clip-path is overkill), the CSS Gradient Generator (to fill the clipped shape), the CSS Box Shadow Generator (note: shadows don't apply to clipped regions — use `filter: drop-shadow()` instead), and the Color Palette Generator for the fill colour.
The Four CSS Basic-Shape Functions
| Function | Syntax | Best For |
|---|---|---|
| polygon() | polygon(0 0, 100% 0, 50% 100%) | Triangles, hexagons, stars, arrows, custom shapes |
| inset() | inset(10% 10% 10% 10% round 8%) | Rectangles with margins, ticket cutouts, framed images |
| circle() | circle(50% at 50% 50%) | Avatars, profile photos, decorative dots, focus indicators |
| ellipse() | ellipse(50% 30% at 50% 50%) | Oval avatars, banner mask shapes, organic-feeling crops |
Where Each Shape Earns Its Keep in Production UI
Hexagonal Avatars
Team-page photos in a hex grid feel modern without resorting to SVG masks. Common on gaming, esports, and creative agency sites.
Chevron Section Dividers
Wide hero with chevron bottom edge that bleeds into the next section. Clip-path is dramatically cheaper than an SVG path.
Arrow CTA Buttons
Polygon arrows make "Next" / "Get Started" buttons feel directional. Pair with hover animation that translates left.
Parallelogram Banners
Skewed promotion banners with crisp diagonals. Cheaper and more flexible than CSS `transform: skew()` which distorts text inside.
Blob Hero Backgrounds
Soft, organic shapes behind hero text. Animate between two equal-vertex polygons for a slowly morphing blob.
Ticket Stub Cards
Inset clipping with negative-margin pseudo-elements gives that punched-edge ticket look for event tickets, vouchers, and receipts.
Four Clip-Path Pitfalls (and How to Avoid Them)
1. Box-Shadow Disappears
Shadows are clipped along with the element. Use filter: drop-shadow() on the parent instead — it shadows the visible shape, not the box.
2. Hit Area Too Small
A 24×24 star-shaped icon button has a hit area of maybe 12×12 — fails WCAG 2.5.5. Pad the parent or add a transparent rectangular overlay for clicks.
3. Animation Snaps Instead of Morphing
Source and target must have the same shape function AND the same vertex count. Add a vertex to one shape to match the other before transitioning.
4. Overflow Hides Children
Tooltips, dropdowns, and other overflow children get clipped along with the parent. Move them out of the clipped element entirely.