What breaks

Dropdown not working on website: find the fault

The dropdown opens, or it does not, and the choice never sticks. Mimiq sends a simulated visitor to pick an option on a phone and shows the step where the pick failed.

5 visitors try to .
First test free with an accountRun it from your coding agent

Why is my dropdown not working on my website?

A dropdown that will not open or pick usually has one of three faults: a banner or header covers the list, a custom list closes before the option's click lands, or a second list waits for a value that never gets set. Check which kind of control the page uses, then tap the toggle at phone width and read which element is under the tap. A simulated visitor makes the same pick from a blank page and shows the step where the choice failed.

What this looks like in a report

Who
Tomoko, comparing hosting for a small bakery website
How they arrived
Opened a search result for website hosting plans on a phone
Where they stopped
Plan picker, the first dropdown on the signup page

“I tapped the plan box and the list flashed open for a second, then shut. I tapped again and the same thing happened. I could not pick anything, so I went looking for a different host.”

The fix. Stop the outside-click handler from closing the list when the press lands inside it, and choose the value on the option's own click. Test the picker at phone width, and check that the sticky header does not sit over the list.

An illustration. Run a test to see your own.See a real sample report

The list opens, but the tap never reaches an option

A dropdown has to survive three things: the page layout, the order of the clicks and the data behind it. A cookie banner or a sticky header can sit on top of the list, so the tap lands on the banner and the list never hears it. A custom list can close on the press that was meant to choose an option, because the press counts as a press outside the toggle. A list filled from a slow or failed request shows nothing at all. The owner tests on a laptop with the page already loaded and a mouse, so none of these show up.

  • Is the dropdown a native select, or a custom list built from boxes and links? The checks differ.
  • Tap the toggle at phone width. Is any part of the open list under a banner or a sticky header?
  • Pick an option, then read the displayed label. Does the box show the choice, or the old value?
  • Does the list fill from a request? An empty list usually means the request failed or is still running.
  • Tab to the dropdown and use the arrow keys and Enter. A list that ignores the keyboard fails those visitors too.

Native select, custom list, and why they fail differently

A native select is the browser's own control. On a phone it opens the system picker, and on a laptop it opens a small list. It fails rarely, and when it does, the cause is usually the script that reads it. A custom dropdown is a list built from boxes or list items, with styles and a toggle that someone wrote. It fails often, because it depends on click order, stacking order and the layout around it. The visitor sees the same thing in both cases: the box is tapped and nothing is chosen. Find out which kind is on the page first, because each needs different checks.

Find the element under the tap

Open the page in a laptop browser with device mode set to phone width, and open the Console. Tap the dropdown's toggle, then run document.elementFromPoint with the x and y position of the option. The element it returns is the one that receives the tap. If it is a cookie banner, a sticky header or a promotion layer, the list is open but covered. If it is the option itself, the click reaches the list, and the fault is in the handler. Device mode runs Chrome on your laptop, not the phone's own browser, so confirm the result on the phone before you rely on it.

The option that disappears before the click lands

This is the most common fault in a custom dropdown. The list listens for a press anywhere on the page, and it closes whenever a press lands outside the toggle. A press on an option lands inside the list, but a careless handler can still count it as outside. Some scripts close the list on the press itself, then remove the options from the page. The click that follows has nothing to land on, so no option is picked, and the visitor sees the list flicker shut. The fix is to ignore presses inside the list when it decides to close, and to set the value in the option's own click handler.

Dependent dropdowns that stay locked

A second dropdown that depends on the first is often disabled until a real value is chosen. If the first one's placeholder, such as Choose one, counts as a value, the second list goes active with nothing in it. If the first value is set by the script but no change event fires, the second list never learns that the first one changed. Check this by picking the first option, then reading the disabled attribute on the second dropdown in the Elements panel. A simulated visitor makes the same choices in order, and the report names the step where the second list stayed empty, with a screenshot.

What you get with Mimiq

  1. 01

    Run it by hand, or on every pull request

    Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.

  2. 02

    Bugs and usability problems in one report

    The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.

  3. 03

    Visitors that behave like your audience

    Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.

  4. 04

    A prompt to fix each problem

    Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.

  5. 05

    Follow every visitor

    See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.

The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.

A banner or a new header can cover the dropdown after the next release

A cookie banner, chat bubble or sticky header added in a later release can sit over the list and take the taps. Rerun the same simulated visitor after each change to the layout, in a phone-sized browser. If the dropdown sits behind a login, test it with a test account, and check each preview deploy before the change goes live.

Starter

Try it on one launch

$9 once
120 credits, never expire

About 4 tests of 5 visitors

  • Visitors on your landing page, signup and checkout
  • Where they left and why, with a fix to copy for each problem
  • Run it in the app or on every pull request
  • Ask any visitor a question, included
  • Test accounts and protected previews
Buy 120 credits

Builder

Test every build

$19 a month
500 credits every month

About 20 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Builder

Pro

Test every release, as a team

$49 a month
1,500 credits every month

About 60 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Pro

Scale

Test at scale, every day

$149 a month
6,000 credits every month

About 240 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Priority support
  • Cancel anytime
Choose Scale
$0for your first test, with a free account (Google sign-in, no card). It includes 50 credits, enough for 10 visitors. After that a visitor uses 5 credits, and packs start at $9 for 120 credits.
See a sample report

Questions

Why does the dropdown work on desktop but not on my phone?

A phone adds three things a laptop often hides: a sticky header or banner that sits over the list, a touch that the list handles differently from a mouse click, and a native picker that sends a change event but no click. Open the page at phone width and check the list under a real tap. Desktop runs the same script, so the fault is usually in the layout or the events.

Can a simulated test tell me which dropdown fault I have?

It shows the step, the option that could not be picked and a screenshot of the list at that moment. A screenshot of a covered list shows the covering element, and console errors name a script that failed. It does not predict how many real visitors would leave at the dropdown.

Should I replace a custom dropdown with a native select?

Often yes, for a short list. A native select gives the phone its own picker and handles keyboard input, and it has fewer ways to fail. A custom list is worth keeping when you need search or grouped options. Test either version with a simulated visitor before you decide, since the test names the step that breaks in your version.

Does a dropdown need to work without a mouse?

Yes. Some visitors reach a dropdown with the keyboard, using Tab, the arrow keys and Enter. Check it yourself by tabbing to the dropdown and pressing those keys. A failure there is a separate fix from the tap, so test both before you call the dropdown working.

Keep reading

Send visitors and see what breaks first.

Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.

5 visitors try to .