Syntax
<input type="text" name="fieldname" placeholder="Enter value">Examples
Common Input Types
A few of the most frequently used input types.
<input type="text" placeholder="Name">
<input type="email" placeholder="Email">
<input type="password" placeholder="Password">
<input type="number" placeholder="Age">
<input type="date">Checkbox and Radio Buttons
Using inputs for multiple-choice selections.
<label><input type="checkbox" name="subscribe" checked> Subscribe to newsletter</label>
<label><input type="radio" name="plan" value="free"> Free</label>
<label><input type="radio" name="plan" value="pro"> Pro</label>Input Validation Attributes
Using built-in HTML validation without JavaScript.
<input type="email" required placeholder="you@example.com">
<input type="text" minlength="3" maxlength="20" pattern="[A-Za-z]+" placeholder="Letters only">
<input type="number" min="1" max="100" step="1">Attributes
- type (string): Determines the input's behavior: text, email, password, number, checkbox, radio, date, file, etc.
- name (string): Identifies the field when the form data is submitted
- value (string): The input's current or default value
- placeholder (string): Hint text shown when the field is empty
- required (boolean): Marks the field as mandatory for form submission
- disabled (boolean): Disables the input and excludes it from form submission
Best practices
- Always pair an <input> with a <label> using matching for and id attributes
- Use the most specific type available (email, tel, date, number) to get built-in validation and the right mobile keyboard
- Use the name attribute consistently — it is what actually gets sent to the server, not the id
- Rely on built-in validation attributes (required, pattern, min, max) before reaching for JavaScript
- Never use placeholder text as a replacement for a proper label — it disappears once the user starts typing
Browser compatibility
Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.
<input>
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1 · Before Firefox 89, manipulating the content of <input> elements using Document.execCommand() commands requires workarounds (see bug 1220696).
Safari
- From 1
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4 · Before Firefox for Android 89, manipulating the content of <input> elements using Document.execCommand() commands requires workarounds (see bug 1220696).
Samsung Internet
- From 1.0
<input> name
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
input — value attribute
Desktop
- Chrome
- Unknown
- Firefox
- Unknown
- Safari
- Unknown
- Edge
- Unknown
- Opera
- Unknown
Mobile
- Safari on iOS
- Unknown
- Chrome for Android
- Unknown
- Firefox for Android
- Unknown
- Samsung Internet
- Unknown
No single verified compatibility record for this topic. Use the feature-specific articles; no browser support is inferred.
<input> placeholder
Desktop
- Chrome
- Supported
From 3 - Firefox
- Supported
From 4 - Safari
- Supported
From 4 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 3.2 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 3
Firefox
- From 4
Safari
- From 4
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 3.2
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> required
Desktop
- Chrome
- Supported
From 4 - Firefox
- Supported
From 4 - Safari
- Supported
From 5 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 4 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 4
Firefox
- From 4
Safari
- From 5
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 4
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> disabled
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="text"
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
From 15
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- From 15
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="email"
Desktop
- Chrome
- Supported
From 5 - Firefox
- Supported
From 1 - Safari
- Supported
From 5 - Edge
- Supported
From 12 - Opera
- Supported
From 11
Mobile
- Safari on iOS
- Supported
From 3 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 5
Firefox
- From 1
Safari
- From 5
Edge
- From 12
Opera
- From 11
Safari on iOS
- From 3 · Doesn't do validation, but instead offers a custom 'email' keyboard, which is designed to make entering email addresses easier. · The custom 'email' keyboard does not provide a comma key, so users cannot enter multiple email addresses. · Automatically applies a default style of opacity: 0.4 to disable textual <input> elements, including those of type 'email'. Other major browsers don't currently share this particular default style.
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="password"
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
From 2
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- From 2
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="number"
Desktop
- Chrome
- Supported
From 7 - Firefox
- Supported
From 29 - Safari
- Supported
From 5.1 - Edge
- Supported
From 12 - Opera
- Supported
From 15
Mobile
- Safari on iOS
- Supported
From 5 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 29 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 7 · Prevents users from typing non-numeric content.
Firefox
- From 29 · Allows users to type non-numeric content, with the value reflecting an empty string.
Safari
- From 5.1 · Allows users to type non-numeric content, with the value reflecting an empty string.
Edge
- From 12
Opera
- From 15 · Prevents users from typing non-numeric content.
Safari on iOS
- From 5 · Allows users to type non-numeric content, with the value reflecting an empty string.
Chrome for Android
- From 18 · Prevents users from typing non-numeric content.
Firefox for Android
- From 29 · Allows users to type non-numeric content, with the value reflecting an empty string.
Samsung Internet
- From 1.0 · Prevents users from typing non-numeric content.
<input> type="date"
Desktop
- Chrome
- Supported
From 20 - Firefox
- Supported
From 57 - Safari
- Supported
From 14.1 - Edge
- Supported
From 12 - Opera
- Supported
From 11
Mobile
- Safari on iOS
- Supported
From 5 - Chrome for Android
- Supported
From 25 - Firefox for Android
- Supported
From 57 - Samsung Internet
- Supported
From 1.5
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 20
Firefox
- From 57
Safari
- From 14.1
Edge
- From 12
Opera
- From 11
Safari on iOS
- From 5
Chrome for Android
- From 25
Firefox for Android
- From 57
Samsung Internet
- From 1.5
<input> type="file"
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
From 11
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1 · You can set as well as get the value of HTMLInputElement.files in all modern browsers; this was most recently added to Firefox, in version 57 (see bug 1384030).
Safari
- From 1
Edge
- From 12
Opera
- From 11
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="checkbox"
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
From 15
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- From 15
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> type="radio"
Desktop
- Chrome
- Supported
From 1 - Firefox
- Supported
From 1 - Safari
- Supported
From 1 - Edge
- Supported
From 12 - Opera
- Supported
From 15
Mobile
- Safari on iOS
- Supported
From 1 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 1
Firefox
- From 1
Safari
- From 1
Edge
- From 12
Opera
- From 15
Safari on iOS
- From 1
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> pattern
Desktop
- Chrome
- Supported
From 4 - Firefox
- Supported
From 4 - Safari
- Supported
From 5 - Edge
- Supported
From 12 - Opera
- Supported
By 12.1 (possibly earlier)
Mobile
- Safari on iOS
- Supported
From 4 - Chrome for Android
- Supported
From 18 - Firefox for Android
- Supported
From 4 - Samsung Internet
- Supported
From 1.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 4
Firefox
- From 4
Safari
- From 5
Edge
- From 12
Opera
- By 12.1 (possibly earlier)
Safari on iOS
- From 4
Chrome for Android
- From 18
Firefox for Android
- From 4
Samsung Internet
- From 1.0
<input> minlength
Desktop
- Chrome
- Supported
From 40 - Firefox
- Supported
From 51 - Safari
- Supported
From 10.1 - Edge
- Supported
From 17 - Opera
- Supported
From 27
Mobile
- Safari on iOS
- Supported
From 10.3 - Chrome for Android
- Supported
From 40 - Firefox for Android
- Supported
From 51 - Samsung Internet
- Supported
From 4.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 40
Firefox
- From 51
Safari
- From 10.1
Edge
- From 17
Opera
- From 27
Safari on iOS
- From 10.3
Chrome for Android
- From 40
Firefox for Android
- From 51
Samsung Internet
- From 4.0
<input> type="date" · list
Desktop
- Chrome
- Supported
From 20 - Firefox
- Not supported
- Safari
- Supported
From 14.1 - Edge
- Supported
From 12 - Opera
- Supported
From 11
Mobile
- Safari on iOS
- Supported
From 14.5 - Chrome for Android
- Supported
From 33 - Firefox for Android
- Not supported
- Samsung Internet
- Supported
From 2.0
MDN BCD record for this feature · MDN reference
Support history and limitations
Chrome
- From 20
Firefox
- Not supported
Safari
- From 14.1
Edge
- From 12
Opera
- From 11
Safari on iOS
- From 14.5
Chrome for Android
- From 33
Firefox for Android
- Not supported
Samsung Internet
- From 2.0
MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.