Select name
Moderate effortFound on 11% of audited stores.
Add a descriptive, programmatically associated label to every `<select>` dropdown element on the site so assistive technologies can announce its purpose to users.
What it is
Every dropdown menu (`<select>` element) on a webpage — such as a size selector, country picker, or sort-by filter — needs a visible or programmatically associated label that tells users what the dropdown is for. Without one, screen readers and other assistive technologies simply announce it as "combo box" or read out the first option, giving blind and low-vision shoppers no idea what they're selecting. WCAG Success Criterion 4.1.2 (Name, Role, Value) requires that all interactive controls, including dropdowns, have an accessible name. The label can be a visible `<label>` element linked by a `for`/`id` pair, a wrapping `<label>`, or an `aria-label` / `aria-labelledby` attribute when a visible label isn't practical.
Why it matters
In many countries (the US, UK, EU, Canada, Australia) accessibility laws require that online stores meet WCAG 2.1 AA, meaning an unlabelled dropdown is a documented legal liability that can trigger complaints, lawsuits, or regulatory action — and ecommerce is one of the most targeted industries. Beyond legal risk, screen-reader users who can't understand a dropdown will abandon the purchase, directly harming conversions and revenue. Google's crawlers also read ARIA and label attributes to better understand form context, so fixing labels can improve how product-filter and checkout pages are indexed. Fixing this issue also benefits voice-control users (e.g. Dragon NaturallySpeaking) who activate controls by speaking their label out loud.
How to fix it
- Identify every <select> element on the page (size pickers, sort dropdowns, quantity selectors, country/state fields, variant selectors, etc.).
- For each <select>, choose the labelling method that fits the design: (a) a visible <label> element with a matching 'for' attribute pointing to the select's 'id'; (b) wrap the <select> inside a <label> element; (c) if no visible label is possible, add an aria-label attribute directly on the <select>; or (d) if there is existing visible text nearby, add an aria-labelledby attribute whose value is the 'id' of that text element.
- Ensure the label text is descriptive and unique — e.g. 'Select size', 'Sort results by', 'Shipping country' — not generic text like 'Choose' or 'Select'.
- Never use the 'placeholder' or first <option> text alone as a substitute for a label; the first option disappears after a choice is made, leaving no accessible name.
- Test the fix with a browser accessibility checker (e.g. axe DevTools browser extension) and manually tab to each dropdown with a screen reader (NVDA + Firefox, VoiceOver + Safari) to confirm the label is announced correctly.
- Re-run your automated scanner to confirm the select-name violation is resolved.
<!-- Method 1: explicit <label> with for/id pair (recommended) -->
<label for="sort-by">Sort results by</label>
<select id="sort-by" name="sort-by">
<option value="price-asc">Price: Low to High</option>
<option value="price-desc">Price: High to Low</option>
</select>
<!-- Method 2: wrapping <label> (implicit association) -->
<label>
Select size
<select name="size">
<option value="s">Small</option>
<option value="m">Medium</option>
</select>
</label>
<!-- Method 3: aria-label when no visible label is feasible -->
<select name="country" aria-label="Shipping country">
<option value="us">United States</option>
<option value="gb">United Kingdom</option>
</select>
<!-- Method 4: aria-labelledby pointing to existing visible text -->
<span id="qty-label">Quantity</span>
<select name="quantity" aria-labelledby="qty-label">
<option value="1">1</option>
<option value="2">2</option>
</select>Fix it on your platform
Pick your platform for the exact steps.
How to fix select name on Shopify
- In your Shopify admin, go to Online Store → Themes → click the three-dot menu next to your active theme → Edit code.
- Locate the template or snippet that renders the offending dropdown. Common culprits: 'snippets/product-variant-picker.liquid' (variant/size selectors), 'sections/collection-template.liquid' or 'snippets/sort-by.liquid' (sort dropdowns), and 'snippets/country-selector.liquid' (currency/country pickers).
- Find the bare <select> tag and add a linked <label> immediately before it, e.g.: <label for="SortBy">Sort by</label> <select id="SortBy" name="sort_by">. Make sure the 'for' value matches the select's 'id' exactly.
- If the design has no room for a visible label (e.g. a compact header sort), add aria-label="Sort results by" directly on the <select> tag instead.
- Click Save, then preview the storefront and verify with the axe DevTools browser extension or VoiceOver/NVDA.
How to fix select name on Shopify Plus
- Follow identical steps to Shopify above. On Shopify Plus you can also edit checkout.liquid (available to Plus merchants): go to Online Store → Themes → Edit code → layout/checkout.liquid to label any custom checkout dropdowns.
- For headless/custom storefronts using the Storefront API, edit the React/Vue component that renders the <select> and add a <label htmlFor="..."> or aria-label prop.
How to fix select name on WooCommerce
- The safest approach is to override the WooCommerce template file rather than editing the plugin directly. Copy the relevant template from 'wp-content/plugins/woocommerce/templates/' into 'wp-content/themes/YOUR-THEME/woocommerce/' maintaining the same folder structure.
- Common files to check: 'woocommerce/loop/orderby.php' (sort-by dropdown), 'woocommerce/single-product/add-to-cart/variable.php' (variation selects), 'woocommerce/checkout/form-billing.php' and 'form-shipping.php' (country/state dropdowns).
- Open the copied file and locate the <select> element. Add <label for="MATCHING-ID">Descriptive text</label> immediately before it, ensuring the select has a matching id attribute.
- If you use a page-builder or custom theme, locate the template part via Appearance → Theme File Editor (or your child theme) and apply the same edit.
- Flush caches (WP Super Cache, WP Rocket, etc.), then verify with axe DevTools.
How to fix select name on BigCommerce
- Go to Storefront → My Themes → click Customize on your active theme → click Advanced → Edit Theme Files (or use the Stencil CLI for local development).
- Search the Handlebars templates for bare <select> tags. Likely files: 'templates/components/products/product-view.html' (variant pickers), 'templates/components/faceted-search/facets.html' (filter dropdowns), 'templates/components/cart/item-options.html'.
- Add a <label for="MATCHING-ID">Descriptive text</label> before each <select>, or add aria-label="..." directly on the <select> if a visible label would break the layout.
- Save changes, publish the theme update, and test with the axe DevTools extension.
How to fix select name on Wix
- Open the Wix Editor for the page containing the dropdown. Click the dropdown element to select it.
- In the Settings panel that appears, look for a 'Label' or 'Placeholder' field — fill it in with a clear, descriptive label (e.g. 'Select your country'). Wix renders this as a visible label associated with the input.
- If you are using Wix Forms, open the form widget → Manage Fields → select the dropdown field → ensure 'Label' is filled in and 'Hide label' is NOT checked.
- For custom-coded dropdowns added via Velo (Wix's dev platform): in the code panel, set the element's aria-label property: $w('#myDropdown').setAttribute('aria-label', 'Sort results by');
- Preview the page and test with your screen reader or the axe DevTools extension.
How to fix select name on Wix Studio
- Open Wix Studio and navigate to the page with the dropdown. Click the dropdown component.
- In the right-hand Properties panel, ensure the 'Label' field is populated with descriptive text. Toggle label visibility on if it is currently hidden.
- For custom widgets or code components, open the Velo code editor and use: $w('#dropdownId').setAttribute('aria-label', 'Descriptive label text here');
- Publish and verify with the axe DevTools browser extension.
How to fix select name on Squarespace
- For form blocks: click the form block → Edit → click the dropdown field → ensure the 'Label' field contains descriptive text. Squarespace automatically associates this label with the <select>.
- For product variant dropdowns (Commerce plans): Squarespace renders these automatically. If the label is missing, go to Pages → [Product page] → Edit → click the product block, and ensure variant option names (e.g. 'Size', 'Color') are set in the Products catalog under the Variants tab — Squarespace uses those names as labels.
- For custom code injections (Settings → Advanced → Code Injection or a Code Block): find the <select> in your injected HTML and manually add a <label for="ID">Text</label> or aria-label attribute.
- Preview and test. Note: deep template-level edits require Squarespace Developer mode or a custom template.
How to fix select name on Webflow
- Open the Webflow Designer. Click the Select element (dropdown) on the canvas to select it.
- In the left-hand Element Settings panel (the gear icon), find the 'Label' field — type your descriptive label text here. Webflow will render a visible <label> element linked to the select.
- If you want a visible label on the canvas, add a Form Label element from the Add panel (A → Form elements → Label), place it above the Select, then in the Label settings set 'For' to the Select's element ID.
- To use aria-label instead of a visible label: select the Select element → go to Element Settings → Custom Attributes → click '+' → Name: aria-label, Value: 'Your descriptive text'.
- Publish the site and verify with axe DevTools or VoiceOver.
How to fix select name on Adobe Commerce (Magento)
- Identify the PHTML template responsible for the <select>. Common locations: 'app/design/frontend/VENDOR/THEME/Magento_Catalog/templates/product/view/options/' (product options), 'app/design/frontend/VENDOR/THEME/Magento_Checkout/templates/onepage/' (checkout country/state), 'app/design/frontend/VENDOR/THEME/Magento_LayeredNavigation/' (filter dropdowns).
- Copy the core template into your custom theme directory to avoid losing changes on upgrade, then open the file.
- Locate the <select> tag and add a <label> element with a matching 'for' attribute, or add aria-label="..." directly on the <select> tag.
- Run 'bin/magento cache:clean' and 'bin/magento setup:static-content:deploy' (production mode) after saving.
- Verify the fix with axe DevTools and NVDA/VoiceOver.
How to fix select name on Magento Open Source
- Follow the same steps as Adobe Commerce (Magento) above — the template structure and cache-clearing commands are identical.
How to fix select name on PrestaShop
- In your PrestaShop back office, go to Design → Theme & Logo → your active theme. Template files are in '/themes/YOUR-THEME/templates/'.
- Find the template rendering the unlabelled <select> — common files: 'catalog/product.tpl' (variant selectors), 'checkout/checkout.tpl' (address country/state), '_partials/form-fields.tpl' (generic form fields).
- Add a <label for="MATCHING-ID">{l s='Descriptive text' d='Shop.Theme'}</label> before the <select> tag, or add aria-label="{l s='Descriptive text' d='Shop.Theme'}" on the element itself.
- Clear the PrestaShop cache via Advanced Parameters → Performance → Clear cache, then verify.
How to fix select name on OpenCart
- Navigate to your OpenCart store's theme files. The default theme path is 'catalog/view/theme/YOUR-THEME/template/'.
- Find the template with the offending <select> (e.g. 'product/product.tpl' for variant selectors, 'checkout/checkout.tpl' for address dropdowns).
- Add a <label for="MATCHING-ID">Descriptive text</label> before each bare <select>, or add aria-label="Descriptive text" directly on the element.
- Save, clear caches from Admin → Dashboard → the blue cog icon → Refresh, then verify with axe DevTools.
Does your site have this issue?
Run a free SEOLZ audit to find select name — and every other issue — across your whole site in minutes.
Scan my site freeFrequently asked questions
What is Select name?
Every dropdown menu (`<select>` element) on a webpage — such as a size selector, country picker, or sort-by filter — needs a visible or programmatically associated label that tells users what the dropdown is for. Without one, screen readers and other assistive technologies simply announce it as "combo box" or read out the first option, giving blind and low-vision shoppers no idea what they're selecting. WCAG Success Criterion 4.1.2 (Name, Role, Value) requires that all interactive controls, including dropdowns, have an accessible name. The label can be a visible `<label>` element linked by a `for`/`id` pair, a wrapping `<label>`, or an `aria-label` / `aria-labelledby` attribute when a visible label isn't practical.
Why does select name matter?
In many countries (the US, UK, EU, Canada, Australia) accessibility laws require that online stores meet WCAG 2.1 AA, meaning an unlabelled dropdown is a documented legal liability that can trigger complaints, lawsuits, or regulatory action — and ecommerce is one of the most targeted industries. Beyond legal risk, screen-reader users who can't understand a dropdown will abandon the purchase, directly harming conversions and revenue. Google's crawlers also read ARIA and label attributes to better understand form context, so fixing labels can improve how product-filter and checkout pages are indexed. Fixing this issue also benefits voice-control users (e.g. Dragon NaturallySpeaking) who activate controls by speaking their label out loud.
How do I fix select name?
Add a descriptive, programmatically associated label to every `<select>` dropdown element on the site so assistive technologies can announce its purpose to users.
Authoritative references
- How to fix this specific rule — Deque/axe (rule reference)
- WCAG 2 overview — W3C WAI
- Forms tutorial — W3C WAI
- ARIA basics — MDN