<button>: The BUTTON Element
Last updated: 2026-10-13
<button>The BUTTON Element
The <button> element creates a clickable button. Unlike <input type="button">, it can contain arbitrary HTML (text, icons, images). The default type is submit.
| Category | Forms |
|---|---|
| Content Model | Phrasing content (no interactive content) |
| Allowed Parents | Any element that accepts phrasing content |
| Content Tag | Yes — requires closing </button> tag |
| Status | Standard |
📝 Syntax
<button type="button">Button text</button>
⚙️ Attributes
This element supports the global attributes plus the following:
| Attribute | Value | Description |
|---|---|---|
type | Keyword | The behavior type of the button.
|
name | Text | Button name, submitted with the form. |
value | Text | The value submitted with the button. |
disabled | Boolean | Disables the button. |
form | Form ID | Associates the button with a form (can be outside it). |
▶ Example
Edit the code below and see the live result in the playground:
🌐 Browser Support
| Browser | |||||
|---|---|---|---|---|---|
| <button> | ✓ v1 | ✓ v12 | ✓ v1 | ✓ v1 | ✓ v1 |
| Supported in all major browsers | |||||
Tip: Set type="button" for buttons outside forms, otherwise clicking may unexpectedly submit.
❓ FAQ
QWhat values can the button type attribute take, and what is the default?
AThree values:
submit (submits the form), reset (clears it), and button (no default behavior). The default is submit — harmless outside a form, but inside one a button without an explicit type will unexpectedly trigger submission. This is the most common pitfall; always set type explicitly.QWhat is the difference between button and input type='button'?
A
<button> has a richer content model — icons, bold text, nested elements; <input type='button'> only takes plain text via value and cannot contain children. Modern projects standardize on <button>.QCan a button contain another button?
ANo — interactive elements cannot nest: no
<button>, <a>, or <input> inside a <button>. For compound interactions, split the structure or delegate events on an outer container with JS.