Is the CSS button generator free?
Yes. It is completely free to use, with no signup, no account, and no paywall.
Can I use the generated CSS in commercial projects?
Yes. The CSS you copy from the tool is yours to use in any project, personal or commercial, with no attribution needed.
Does it stay local?
Yes. Everything runs in your browser, and nothing you configure is uploaded to a server.
What is missing from the generated rule?
The states. What you get is how the button looks when nothing is happening to it, and a real button needs at least three more rules: :hover, so a mouse user gets feedback; :active, so a click feels like a press; and :focus-visible, so a keyboard user can see where they are. The focus style is the one with genuine consequences, because without it the interface is unusable without a mouse. Add a transition on the background and the transform to make the changes feel smooth.
Is my button accessible?
Not automatically, and two things need checking. First, contrast: the label must reach a ratio of 4.5:1 against the button background for normal text, and a mid-saturation brand colour with white text frequently comes in below that. Second, focus: the rule sets border: none, and if you also remove the outline you have made the button invisible to keyboard users. Use a real button element, keep a focus-visible outline, and run the two colours through a contrast checker.
Why is the horizontal padding twice the vertical?
Because that is the ratio that reads as a button. A control with equal padding on all sides looks cramped and square, and the eye expects a label to have more breathing room to its left and right than above and below. Most design systems land somewhere between 1.5 and 2.5 times as much horizontal padding as vertical. If you change the vertical padding, scale the horizontal one with it rather than fixing it.
Should I style a div as a button?
No. The button element is focusable without a tabindex, is announced as a button by screen readers, activates on both Enter and Space, can submit a form, and is disabled correctly by the disabled attribute. Recreating that on a div means adding a role, a tabindex, key handlers for two keys, and a disabled state that also removes it from the tab order, and getting one of them wrong is the norm. Use the element that already works.
Is the preview rendered locally?
Yes. It is a real button element with the generated CSS applied, rendering in your browser, and nothing you configure is transmitted.