Skip to content
Run here 100% in your browser, no upload, no login

Cubic Bezier Editor

Drag two control points to shape a cubic-bezier and compare it with CSS keywords.

Curve editor

Drag the two round handles on the canvas. y values may leave the 0 to 1 range to create overshoot.

Control points

cubic-bezier(0.25, 0.1, 0.25, 1)

x1 and x2 must stay between 0 and 1; CSS rejects a curve whose x escapes that range.

Side-by-side motion preview

Generated CSS

How to use it

  1. Drag the pink handle to move the first control point and the amber handle to move the second one.
  2. The canvas draws the unit square, the resulting curve and two guide lines from the corners to the handles.
  3. Fine-tune x1, y1, x2 and y2 in the number fields. x1 and x2 stay inside 0 to 1 because CSS rejects anything else.
  4. Press Play to run all six tracks at once. The first track is your curve; the five below are the CSS keywords.
  5. Copy the generated CSS. When the values match a keyword exactly, the snippet says so.

Common use cases

Why it stays private

The curve is evaluated and drawn in your browser. No values, project names or snippets are sent anywhere.

FAQ

Q: Why are x1 and x2 locked between 0 and 1 but y is not? A: CSS requires the x coordinates of a cubic-bezier to sit inside 0 to 1, otherwise the declaration is invalid. The y coordinates may go outside, which is what produces overshoot and undershoot.

Q: Is the preview the same thing the browser will do? A: It uses the same curve definition, sampling the cubic-bezier for x and reading y. Your browser applies the same math, so the shape and timing match.

Q: Can I use the values in keyframes as well? A: Yes. The generated snippet includes an animation-timing-function form alongside the transition form, and the same four numbers work in both places.

Your data stays on this device

Cubic Bezier Editor runs 100% locally. Everything you paste or drop is processed by your own browser and never transmitted. Nothing is stored on our servers — close the tab and it is gone.

Nothing you type is sent to a server, logged, or used for analytics. The page works even with your network disconnected after first load.