侘寂 – because imperfection is beautiful
wabi.js adds small, organic imperfection to your HTML elements using CSS clip-path polygons. Adjust the settings below to see the effect in action.
The eye gets tired on perfection.
Enough with the 2015 aesthetic already!
Uses CSS clip-path polygon for GPU-accelerated effects.
Go to the wabi.js GitHub repository and download the latest release.
Download wabi.min.js from the dist folder and include it in your HTML:
Add this script before the closing </body> tag. The effect is applied when the page loads:
The library works by applying a CSS clip-path polygon to your elements. No dependencies, no build step required.
corners.x / corners.y — Maximum random displacement of corners in each direction (as % of element size).edges.points — Number of additional points to add along each edge between corners.edges.edgeWobble — How far edge points can deviate perpendicular to the edge line.edges.distribution — How edge points are spaced: 'random', 'even', or 'weighted-center'.seed — Fixed seed for reproducible randomness; use null for different results each time.cutCorners — Number of corners (0-4) to randomly cut off, creating angled shapes.cornerChamfer — How far cut corners move inward (0 = no change, 1 = full cut).If you're using a bundler or ES modules:
The function returns an object with a restore() method:
Continuously randomize the shape at a given interval:
You can also auto-start animation via options: wabi('.cards', { animate: true }) or { animate: { interval: 200 } }