HTML select dropdowns in forms: complete practical guide
Use a <select> dropdown when the visitor must choose from a known list and showing every option as radio buttons would take too much space.
Dropdowns are common for topics, departments, countries, budgets, priorities, and categories. A good select field is not just a menu. It has a label, a meaningful name, stable option values, validation, and a fallback path if the selected value controls routing.
Basic select dropdown
<form action="https://api.formsfort.com/submit" method="POST"> <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<label for="topic">Topic</label> <select id="topic" name="topic" required> <option value="">Choose a topic</option> <option value="sales">Sales</option> <option value="support">Support</option> <option value="partnerships">Partnerships</option> </select>
<button type="submit">Send</button></form>If the visitor chooses “Support”, the backend receives:
topic=supportThe visible text can change later, but the submitted value should stay stable if automations depend on it.
Select vs radio buttons
Use radio buttons when the options are few and should be visible immediately. Use a select dropdown when the list is longer or secondary to the main form.
| Control | Best for |
|---|---|
| Radio buttons | 2-5 visible choices |
| Select dropdown | 5+ choices or compact layouts |
| Checkbox group | Multiple independent choices |
For a pricing form with three plans, radio buttons are usually clearer. For a country field, a select is usually better.
Required placeholder option
A required select needs an empty option first.
<label for="budget">Budget</label><select id="budget" name="budget" required> <option value="">Select a budget</option> <option value="under-1000">Under $1,000</option> <option value="1000-5000">$1,000 to $5,000</option> <option value="5000-plus">$5,000+</option></select>The empty value="" is what lets the browser detect that the visitor has not made a real selection yet.
Group long option lists
Use optgroup to split long menus into readable sections.
<label for="request_type">Request type</label><select id="request_type" name="request_type" required> <option value="">Choose a request type</option> <optgroup label="Sales"> <option value="demo">Book a demo</option> <option value="quote">Request a quote</option> </optgroup> <optgroup label="Support"> <option value="bug">Report a bug</option> <option value="billing">Billing help</option> </optgroup></select>This keeps the native select control while making the choices easier to scan.
Multiple select fields
HTML supports multiple selection:
<label for="integrations">Which integrations do you need?</label><select id="integrations" name="integrations" multiple> <option value="email">Email</option> <option value="webhook">Webhook</option> <option value="google-sheets">Google Sheets</option> <option value="discord">Discord</option></select>Use this carefully. Multi-select controls are often harder to use than checkbox groups, especially on mobile. If selecting more than one item is important, checkboxes are usually clearer.
Styling select controls
Native select controls vary across browsers. Keep styling modest so the control stays familiar.
select { width: 100%; border: 1px solid #d6d3d1; border-radius: 8px; padding: 10px 12px; background: white; color: #1c1917;}
select:focus { border-color: #059669; outline: 3px solid #d1fae5;}Avoid replacing a simple select with a custom dropdown unless you are ready to rebuild keyboard navigation, focus management, typeahead behavior, and screen reader semantics.
Complete contact form with dropdown routing
<form action="https://api.formsfort.com/submit" method="POST"> <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" /> <input type="hidden" name="subject" value="New website inquiry" />
<label for="email">Email</label> <input type="email" id="email" name="email" autocomplete="email" required />
<label for="topic">Topic</label> <select id="topic" name="topic" required> <option value="">Choose a topic</option> <option value="sales">Sales</option> <option value="support">Support</option> <option value="billing">Billing</option> </select>
<label for="message">Message</label> <textarea id="message" name="message" rows="5" required></textarea>
<input type="checkbox" name="botcheck" style="display:none" /> <button type="submit">Send inquiry</button></form>The dropdown gives you structured data without forcing the visitor to type a category manually. That makes submissions easier to filter, route, and export.
Related guides
Use dropdowns with the HTML input fields guide, HTML radio button guide, and HTML form examples.
Frequently asked questions
How do I create a dropdown in an HTML form?
Use a select element with option children. Add a name attribute to the select so the chosen option is submitted.
How do I make a dropdown required?
Add required to the select and include an empty placeholder option with value=''. The browser then requires a real choice.
What value does a select submit?
The form submits the value attribute from the selected option. If no value is set, browsers submit the option text.
Can an HTML select allow multiple choices?
Yes. Add the multiple attribute, but use it carefully because multi-select controls can be awkward on mobile.
Get started free
Ready to add forms to your static site?
No backend required. Point your HTML form at FormsFort and start receiving submissions in minutes.