What breaks
Hamburger menu not working on mobile: find it
The icon is tapped and the menu stays shut, or it opens and the links do not respond. Mimiq sends a simulated visitor to open the menu on a phone and shows the step where it failed.
Why is my hamburger menu not working on mobile?
The hamburger icon fails on a phone for one of three reasons: the tap misses the icon, the script behind it does not change the menu, or the menu changes but sits off screen or under another layer. Find out which by reading what happens after the tap, in order: does the page react, does the menu's state change, and can the links be tapped. A simulated visitor opens the menu on a phone and records the step where the tap or the link failed.
What this looks like in a report
“The three lines in the corner did nothing when I tapped them. I tried twice, then tried the logo, which also did nothing. I could not find returns anywhere, so I left.”
The fix. Give the icon button a larger tap area, and set its click handler on the button itself, calling preventDefault when the button is a link. Test the open menu at phone width and tap each link in it.
An illustration. Run a test to see your own.See a real sample report
A tap can change the menu's state and still show nothing
A mobile menu depends on three things working in order: the tap reaches the icon, the script changes the menu's state, and the panel that state controls is on screen and clickable. The tap can miss a small icon. The script can listen for hover, or fail before it attaches. The panel can open off screen, or a layer behind it can take every tap meant for the links. From the visitor's side all three look the same: they press the icon and nothing happens. The owner usually tests in a wide browser window, where the menu may not be a hamburger at all.
- Tap the icon and watch the page. Does it react, or jump to the top of the page?
- Tap the icon with the Elements panel open. Does a class or attribute on the menu change?
- Tap the four corners of the icon button at phone width, not just the middle.
- Tap a link in the open menu. Does the page move, or does a banner or header take the tap?
- Open the Console and tap the icon. A red error at that moment means the handler never attached.
Read what the tap does, in order
Start with the tap and watch three things. First, does the page react at all? A page that jumps to the top has a link with an empty address, a hash, that the script never stopped, so the tap did something, just not the thing you wanted. Second, does the menu's state change? In the Elements panel, watch the element that holds the menu while you tap, and look for a class or attribute that appears or flips. Third, is the panel visible? A state that changes without a visible panel points to layout, not to the handler.
A handler written for hover, or never attached
Menus written for a mouse often open on hover, with a mouseenter listener on the icon. A phone has no hover, so the menu never opens, and a visitor who taps sees nothing. Check the handler by reading the script, or by tapping the icon with the Console open. A script error on load means the handler never attached, and the icon does nothing at any width.
The icon's tap area is smaller than the tap
The icon is often a small glyph, a few lines or a single icon character, and the click area is only the glyph's own box. A finger covers a wide patch, so a tap that looks centered can land beside the element. Test by tapping the four corners of the button at phone width, not the middle. If only the middle responds, enlarge the element that holds the click, not the glyph, so the padding around the icon is part of the tappable area.
The panel opens off screen or under another layer
An open menu can be off screen. Panels often slide in from the side with a transform, and if the open class does not reset the position, the panel waits outside the screen edge. The other fault is a panel that is on screen while a sticky header, a banner or a page wrapper sits above it, so taps on the links go to that layer. In the Console, run document.elementFromPoint at a link's position: it returns the covering element if one exists. The simulated visitor's report shows the link that failed, with a screenshot.
How each check sees the menu
| Method | Shows you | Misses |
|---|---|---|
| Tap in browser device mode | Whether the handler runs and the panel opens at phone width | The phone's own browser, since device mode runs Chrome on your laptop |
| Tap on your own phone | The exact tap on the exact browser you hold | Every other phone and screen size, unless you test each one |
| A simulated visitor on a phone browser | Each step the visitor took, any error or failed request on it, and a screenshot | Whether a real person would tap the menu at all |
| Asking a chatbot what the menu should do | A plausible code change to try | Whether the menu opens in any real browser |
A simulated visitor records the step and a screenshot. It does not replace a look at the menu on your own phone.
What you get with Mimiq
- 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.
- 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.
- 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.
- 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.
- 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 new header or a scroll lock can close the menu after a release
A new sticky header, a chat bubble or a script that locks scrolling can break the menu in the next release without touching the menu code. Rerun the same simulated visitor after each change, on a phone-sized browser, and try the links in the open menu. If the site sits behind a login, test with a test account, and check each preview deploy before it reaches the live site.
Starter
Try it on one launch
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
Builder
Test every build
About 20 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Pro
Test every release, as a team
About 60 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Scale
Test at scale, every day
About 240 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Priority support
- Cancel anytime
Questions
Does this only happen on iPhones?
No. Android phones have their own tap, scroll and overlay behavior, and a menu built for a mouse can fail on both. Test on each phone system your visitors use. Device mode is a laptop browser pretending to be a phone, so confirm on a real one.
Why does the menu work in my browser window but not on a phone?
A wide window often shows the full navigation with no icon, so the hamburger code never runs for you. When the window narrows to phone width, the menu code is the first thing a visitor touches.
Can a simulated test tell me which cause I have?
It shows the tap, the menu step, the link that did not respond and a screenshot of the menu when it failed. The report lists the step and includes a fix prompt, but you still check the code to confirm the cause. It does not predict how many real visitors would stop at the menu.
Should I replace the icon with a full screen menu?
A full screen menu has the same tap and link problems, plus the risk of a layer hiding its own links. If you keep the icon, make the tap area generous, make the open panel sit above the page, and test the links with the menu open.
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.