Skip to content
Kubiskā Bezjē ģenerators
Tools

Kubiskā Bezjē ģenerators

Jauns

Projektē CSS iztukšošanas līkni, velkot vadības punktus, ar tiešraides priekšskatījumu.

A
 
CSS keywords
Named easing curves

Runs entirely in your browser. Nothing is uploaded.

Design custom CSS easing curves visually

This cubic-bezier generator turns the abstract cubic-bezier(x1, y1, x2, y2) value into something you can see and feel. Drag the two control-point handles on the graph to shape an acceleration curve, watch a live preview move with that exact timing, then copy a ready-to-use value for your CSS transitions and animations. It is a full easing curve editor and cubic-bezier visualizer in one, running entirely in your browser — no install, no account.

Every curve runs from (0,0) to (1,1). The horizontal axis is time and the vertical axis is progress, so a curve that rises steeply early means a fast start, and one that flattens near the end means a gentle finish. Type precise numbers into the four inputs, drag the handles, or paste an existing cubic-bezier() value to load and tweak it. The result updates in real time with each handle movement.

30+ presets: CSS keywords and named easing curves

The preset bar combines the two things competitors usually split apart. You get the five CSS keywords — linear, ease, ease-in, ease-out and ease-in-out — plus the full catalogue of named easing curves popularised by easings.net: Sine, Quad, Cubic, Quart, Quint, Expo, Circ and Back, each in In, Out and In-Out variants. That means easeInOutCubic, easeOutQuart, easeOutBack and the rest are one click away, already converted to a css cubic-bezier value.

Each preset shows a tiny curve thumbnail so you can recognise its shape at a glance, then loads it straight into the editor where you can refine it. Easings.net only lists the names and shows static images — you cannot edit or export from it. cubic-bezier.com shows the five CSS keywords but not the full Penner set. This tool gives you both, with editing, in one place.

Overshoot, bounce and anticipation

The y values of a cubic-bezier are not limited to 0–1. Push a handle above the box and the animation overshoots its target before settling — the springy feel of easeOutBack = cubic-bezier(0.34, 1.56, 0.64, 1). Pull a handle below the box and the element winds up first, like a run-up before a jump. The editor's graph extends beyond the unit box so you can drag into that overshoot territory and preview the result instantly.

Chrome DevTools has a built-in cubic-bezier editor but clamps handles to the 0–1 box, so you cannot create any overshoot or anticipation effects there. Firefox DevTools has the same limitation. Both also lack the named-preset catalog and export options you get here. If you need overshoot, this is one of the few tools that actually supports it.

How it compares to other cubic-bezier tools

cubic-bezier.com by Lea Verou is the reference that popularised the drag-and-preview format, and it remains excellent for quick CSS curve generation. But it has no GSAP export, no JavaScript easing function output, no compare mode, no Penner preset library, and the interface breaks on mobile. Easings.net is a read-only reference — you pick a named curve and it shows the values, but there is no editor and nothing to tweak.

Chrome and Firefox DevTools each include a lightweight cubic-bezier editor inside the browser inspector, which is convenient when you are already in DevTools. The trade-off: you cannot use them without DevTools open, they clamp handles to 0–1 (no overshoot), they cannot export GSAP or JS code, and they do not work on mobile at all. UtiloKit's generator combines the interactive editor, the preset library, the compare tool, and three export formats in one page that works on any device.

Live preview and side-by-side compare

Press play and a demo element loops with your curve so you judge the motion, not just the numbers. Switch the demo between translate, scale and opacity and adjust the duration to match your real animation. Turn on Compare to put a second curve next to the first — perfect for choosing the right transition timing function before you commit it to production.

The duration slider controls preview speed from 200ms to 3 seconds, so you can test how the same curve feels at different speeds. A slow-motion preview often reveals problems — like a stutter at the start — that are invisible at 300ms. Most other tools, including cubic-bezier.com, only preview at one fixed speed and do not offer side-by-side comparison.

Export to CSS, GSAP and JavaScript — free

Copy whatever your stack needs. The CSS tab gives you both a transition one-liner and a full @keyframes animation block. The GSAP tab outputs a CustomEase.create() call so your GSAP animation matches the curve exactly. The JS tab generates a standalone javascript cubic-bezier easing function — a Newton-Raphson solver you can drop into requestAnimationFrame or any tween with no dependencies.

Found a curve you like? Share it. The tool encodes the four values in the page URL, so a link reproduces your exact easing on any device. Everything runs in your browser — nothing is uploaded, stored, or logged — and it is completely free with no sign-up required.

The mathematics behind Bézier curves

Pierre Bézier, a French engineer at Renault, and Paul de Casteljau, an engineer at the rival carmaker Citroën, independently invented the parametric curve that now bears Bézier's name — both were trying to describe smooth car-body surfaces mathematically in the 1960s. De Casteljau's recursive algorithm came first in 1959 but was classified by Citroën; Bézier published his formulation in 1962, which is why the curve carries his name in most textbooks. The core insight was that a small number of control points could fully define a smooth, infinitely scalable curve without storing thousands of coordinates.

The parametric definition of a cubic Bézier curve is P(t) = (1−t)³P₀ + 3(1−t)²t·P₁ + 3(1−t)t²·P₂ + t³·P₃ where t ranges from 0 to 1. P₀ is the start point, P₃ is the end point, and P₁ and P₂ are the two control handles that pull the curve toward them without the curve actually passing through them. At t = 0 the formula evaluates to P₀; at t = 1 it evaluates to P₃; for every value in between you get a smooth interpolated point weighted by the cubic Bernstein polynomials.

One of the most important properties of a cubic Bézier is the convex hull property: the curve always lies entirely within the convex hull — the smallest convex polygon — that contains all four control points. This geometric guarantee is what makes Bézier curves stable for engineering and rendering; the curve can never wander outside the region bounded by its control points. The curve also degrades gracefully: if you set P₁ = P₀ the cubic reduces to a quadratic Bézier; set P₁ = P₀ and P₂ = P₃ and it collapses to a straight linear interpolation.

How CSS uses cubic-bezier() as a timing function

In CSS, cubic-bezier(x1, y1, x2, y2) is not describing a path on screen — it is describing a timing function, a mapping from elapsed time to animation progress. The horizontal axis of the curve graph represents time progressing from 0 to 1 (start to end of the animation duration), and the vertical axis represents how far along in value the animated property has moved. A steep segment of the curve means the property is changing quickly; a flat segment means it is barely moving. The two anchor points are always fixed at (0, 0) and (1, 1) — animations always start at their start value and end at their end value. Only the intermediate speed profile is customisable.

The five CSS timing-function keywords are just named aliases for specific cubic-bezier values: linear = cubic-bezier(0, 0, 1, 1); ease = cubic-bezier(0.25, 0.1, 0.25, 1.0); ease-in = cubic-bezier(0.42, 0, 1.0, 1.0); ease-out = cubic-bezier(0, 0, 0.58, 1.0); ease-in-out = cubic-bezier(0.42, 0, 0.58, 1.0). Every browser resolves those keywords to exactly these four-number forms before computing the animation, which means transition-timing-function: ease and transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1) are byte-for-byte identical in effect.

The x-coordinates of the two control points are constrained to the range [0, 1] — this ensures the timing function is a proper function (no time reversal). The y-coordinates, however, have no such restriction. Setting y₁ or y₂ above 1 causes the animated value to temporarily overshoot its target before snapping back, creating a spring-like bounce. Setting them below 0 creates anticipation — the element briefly moves backward before accelerating forward. The alternative to cubic-bezier for discrete animations is the steps() function, which jumps the value in a fixed number of equal increments rather than interpolating smoothly — useful for sprite-sheet animations or odometer-style counters.

The physics of natural motion and easing in UI design

Linear motion looks mechanical because nothing in the physical world actually moves at constant velocity. Every real object has inertia: it takes force to accelerate from rest and force to decelerate to a stop. When UI elements move linearly — sliding panels, expanding cards, fading modals — the motion registers as robotic and jarring to the human visual system, even when users cannot consciously articulate why. The solution is easing: applying a curve that mimics the acceleration and deceleration profile of real physical objects.

The four categories of easing each capture a different physical scenario. Ease-in (slow start, fast end) feels like an object falling or being thrown — natural for elements that are leaving the screen and do not need to land gracefully. Ease-out (fast start, slow end) mimics an object decelerating to a stop — the most natural choice for elements entering the screen, because they appear purposeful and settle calmly into place. Ease-in-out (slow at both ends, fast in the middle) suits elements that are moving across the screen and need both a smooth launch and a smooth landing. A fourth category — ease-out with slight overshoot, exemplified by Material Design's standard curve — adds a spring-like micro-bounce at the end, reinforcing the sense of physical mass stopping against a boundary.

The theoretical foundation of modern UI motion design traces back to Disney's 1981 book The Illusion of Life, which codified 12 principles of animation including squash and stretch, anticipation, and follow-through. Anticipation (a brief backward motion before the main action) and follow-through (an overshoot that corrects after the primary motion stops) are exactly the effects that cubic-bezier y-values below 0 and above 1 produce in CSS. The reason ease-out is the default recommendation for most UI animations is also rooted in these principles: an element that decelerates as it arrives on screen reads as arriving with intention, while ease-in feels like the interface is flying away from you.

Bézier curves in fonts, SVG, and beyond

Bézier curves are the foundational geometry of digital typography. PostScript/Type 1 fonts — developed by Adobe — use cubic Bézier curves, with two control handles per segment, to describe every letter outline. TrueType fonts, created by Apple and Microsoft, use the simpler quadratic Bézier (one control point per segment), which requires fewer computations and historically rendered more clearly at small sizes on low-resolution Windows screens. OpenType, the current standard, supports both approaches in a single format. Font hinting — the practice of nudging control points at specific pixel sizes so that strokes snap to pixel grid lines — is essentially manual tuning of Bézier control points for optimal legibility on low-DPI displays.

In SVG, Bézier curves appear as path commands inside the d attribute: M moves the pen without drawing; L draws a straight line; C x1,y1 x2,y2 x,y draws a cubic Bézier curveto using two explicit control points and an endpoint (six parameters); Q x1,y1 x,y draws a quadratic Bézier with one control point (four parameters); S x2,y2 x,y is a smooth cubic that inherits the first control point by reflecting the previous segment's second handle, saving parameters when chaining curves. Every smooth path in an SVG illustration — every logo, icon, or chart — is a sequence of these commands.

The original application of Bézier curves in CAD/CAM (Computer-Aided Design and Manufacturing) never went away. Adobe Illustrator's Pen tool, unchanged in its fundamentals since the late 1980s, is still the industry standard for vector illustration — every anchor point and direction handle in Illustrator is a Bézier control point. Animation tools including After Effects store motion paths as Bézier curves. In 3D graphics, NURBS (Non-Uniform Rational B-Splines) generalise the Bézier concept to smooth surfaces in three dimensions and underlie the organic shapes of CGI film production and industrial product design — the same mathematical heritage that Pierre Bézier applied to the body panels of a Renault in 1962.

Frequently asked questions

What is cubic-bezier in CSS?

cubic-bezier() is an easing (timing) function defined by a Bézier curve. You write it as cubic-bezier(x1, y1, x2, y2) in transition-timing-function or animation-timing-function, and its two control points bend the curve so an animation speeds up and slows down instead of moving at a constant rate. For example, cubic-bezier(0.25, 0.1, 0.25, 1) is exactly the same easing as the CSS keyword 'ease'. Without it, all your transitions move at a flat, robotic constant speed.

What does cubic-bezier do?

It controls the speed curve of a transition or animation — how an element's progress maps to elapsed time. A steep part of the curve means fast motion and a flat part means slow motion. With cubic-bezier(0.42, 0, 1, 1) — the same as ease-in — an element starts slowly and accelerates. With cubic-bezier(0, 0, 0.58, 1) — ease-out — it starts fast and settles gently. The right easing curve is often what separates UI that feels polished from UI that feels mechanical.

What is bezier easing?

'Bézier easing' means using a cubic Bézier curve as the easing function for motion. The curve always runs from (0,0) to (1,1); its shape — set by two control points — decides the acceleration. It is the standard way CSS, GSAP, and most JavaScript animation engines describe custom easing, which is why a single cubic-bezier() value works almost everywhere. Framer Motion, React Spring, and vanilla CSS transitions all accept the same four numbers.

How do the four cubic-bezier values work?

cubic-bezier(x1, y1, x2, y2) lists two control points: P1 = (x1, y1) pulls the start of the curve and P2 = (x2, y2) pulls the end. The curve itself always begins at (0,0) and finishes at (1,1). The x values represent time and must stay between 0 and 1; the y values represent progress and may dip below 0 or rise above 1 for overshoot effects. Drag the two handles on the graph above and all four numbers update live as you move them.

What is the cubic-bezier for ease and ease-in-out?

The CSS keywords map to exact curves you can load as presets: ease = cubic-bezier(0.25, 0.1, 0.25, 1), linear = cubic-bezier(0, 0, 1, 1), ease-in = cubic-bezier(0.42, 0, 1, 1), ease-out = cubic-bezier(0, 0, 0.58, 1) and ease-in-out = cubic-bezier(0.42, 0, 0.58, 1). Click any of them in the preset bar to load it into the editor, then fine-tune from there. These are baked into every browser — no library needed.

What's the difference between ease, linear, ease-in, ease-out and ease-in-out?

linear moves at a constant speed with no easing — it looks unnatural for most UI. ease — the CSS default — starts a little fast and then eases out. ease-in starts slow and accelerates into the end, which often feels like something falling or dropping. ease-out starts fast and decelerates, which usually feels the most natural for UI elements appearing on screen. ease-in-out is slow at both ends and fastest in the middle, ideal for elements that travel across the screen and need to stop smoothly.

Can cubic-bezier values go above 1 or below 0?

The y values can, and that is how you get overshoot and anticipation effects. The x (time) values are always clamped to 0–1, but a y above 1 makes the element shoot past its target and settle back — like a spring — while a y below 0 makes it pull back first. A classic example is easeOutBack = cubic-bezier(0.34, 1.56, 0.64, 1). This editor lets you drag the handles outside the 0–1 box to create those effects and previews the result live. Chrome DevTools' built-in editor does not let you go outside the box at all, which makes it useless for overshoot curves.

How do I make a bounce or overshoot easing?

Drag a control-point handle above the top of the box (y greater than 1) for overshoot, or below the bottom (y less than 0) for anticipation. A popular 'back' overshoot is cubic-bezier(0.68, -0.55, 0.27, 1.55). Note that a true multi-bounce (the ball that bounces several times) cannot be done with a single cubic-bezier — it only has one curve — so use a CSS @keyframes animation or GSAP's bounce ease for that. This tool exports both @keyframes and GSAP CustomEase code for exactly that case.

How does this compare to cubic-bezier.com?

cubic-bezier.com by Lea Verou is the original reference tool and genuinely excellent, but it does not export GSAP CustomEase or a standalone JavaScript easing function. It also has no preset catalog for named Penner easings, no compare mode, and struggles on mobile screens. UtiloKit's cubic-bezier generator adds a 30+ preset library covering all Penner variants, a compare mode (two curves side by side), GSAP and JavaScript export tabs, and a mobile-friendly drag interface. easings.net is read-only — you can look up named curves but cannot tweak them or export code.

How do I convert a named easing like easeInOutQuad to cubic-bezier?

Load it from the preset catalog — the Penner / easings.net curves all have standard cubic-bezier approximations. For example easeInOutQuad = cubic-bezier(0.45, 0, 0.55, 1), easeOutCubic = cubic-bezier(0.33, 1, 0.68, 1) and easeInOutCubic = cubic-bezier(0.65, 0, 0.35, 1). Pick the named curve from the gallery and copy the value straight into your CSS. Easings.net only shows the curve names with no editor — here you can load any of them and tweak live.

How do I use a cubic-bezier in a CSS transition or animation?

Put it in the timing-function slot. For a transition: transition: transform 600ms cubic-bezier(0.33, 1, 0.68, 1);. For a keyframe animation: animation: slide 600ms cubic-bezier(0.33, 1, 0.68, 1) both;. The CSS tab in this tool generates both snippets automatically using your current curve and duration, so you can copy and paste them directly into your stylesheet without manually typing the four numbers.

What's the cubic-bezier equivalent in GSAP or JavaScript?

In GSAP, use the CustomEase plugin: CustomEase.create('custom', 'M0,0 C0.25,0.1 0.25,1 1,1') and then set ease: 'custom'. In plain JavaScript you need a function that solves the curve for a given time. The JS tab outputs a ready-to-paste cubic-bezier easing function you can call as ease(t) inside requestAnimationFrame or any tween loop — no library required. Framer Motion users can pass the four numbers directly to the ease prop as an array.

Does this work on iPhone and Android?

Yes, fully. The curve editor, drag handles, live preview, and export tabs all work on mobile browsers — tested on iOS Safari and Android Chrome. The canvas scales to fit the screen and the drag handles are large enough to use with a finger. Chrome DevTools' built-in cubic-bezier editor is desktop-only and requires opening DevTools, which is not available on mobile at all. This is one of the only fully functional bezier curve editors that actually works well on a phone.

Is this cubic-bezier generator free and private?

Completely free, no sign-up, and nothing is uploaded anywhere. The curve editor, live preview, and CSS, GSAP, and JavaScript export all run locally in your browser. Nothing you create is sent to a server, so your work stays entirely on your device. You can also share a curve via a link that encodes the four values in the URL — no account needed for sharing.