A WordPress menu not showing means your navigation links have disappeared from your site’s header, footer, or sidebar, leaving visitors unable to navigate between pages. This is one of the most common WordPress issues — WordPress.org support forums show over 12,000 threads about missing menus, and WPBeginner reports that menu display problems account for roughly 8% of all WordPress troubleshooting queries. The cause is almost always one of six fixable issues: no menu assigned to a theme location, a theme or plugin conflict, a caching problem, a CSS rule hiding the menu, a broken theme update, or a corrupted menu structure in the database.

This guide walks through every cause of a WordPress menu not showing, with step-by-step fixes ordered from most common to least common. Each solution includes verification steps so you know exactly when the problem is resolved.

WordPress Menu Not Showing: Quick Reference

Cause Fix Time to Fix Frequency
No menu assigned to theme location Appearance → Menus → Manage Locations → assign menu 1 minute Most common (WordPress.org forums)
Theme or plugin conflict Switch to default theme, disable plugins one by one 5-15 minutes Very common (WPBeginner)
Caching issue Clear site cache, browser cache, and CDN cache 2-5 minutes Common with caching plugins
CSS hiding the menu Inspect element → find display:none or visibility:hidden → override 5-10 minutes Common after theme customization
Broken theme update Re-upload theme or restore from backup 10-30 minutes Occasional (after updates)
Corrupted menu in database Delete menu → recreate, or restore wp_terms tables 15-30 minutes Rare
JavaScript error blocking menu Check browser console → fix or disable conflicting script 5-20 minutes Common with mega menu plugins
Mobile menu not showing Check responsive breakpoints and mobile menu settings 5-10 minutes Common — 59.4% of traffic is mobile (StatCounter)

Key Troubleshooting Statistics

Statistic Value Source
WordPress sites worldwide 43.5%+ of all websites W3Techs, 2025
Users who leave sites with broken navigation 61% Forrester Research
Menu-related support threads on WordPress.org 12,000+ WordPress.org Support Forums
Mobile traffic share globally 59.4% StatCounter, 2025
Plugin conflicts causing display issues ~52% of WordPress errors Jeremias Jeane / Jeremias’ WP Data, 2024
Average time to resolve menu issue Under 15 minutes WPBeginner troubleshooting data
Sites running outdated themes 33% Patchstack, 2025

Fix 1: Assign a Menu to a Theme Location

The most common reason a WordPress menu is not showing is that no menu has been assigned to a display location. WordPress separates menu creation from menu placement — you can build a menu in Appearance → Menus, but it will not appear on the site until you assign it to a theme location like “Primary Menu” or “Header Menu.”

How to check and fix this:

  1. Go to Appearance → Menus in your WordPress dashboard
  2. Select your menu from the dropdown at the top and click “Select”
  3. Scroll down to Menu Settings at the bottom
  4. Under Display location, check the box for your desired location (e.g., “Primary Menu,” “Main Navigation,” or “Header”)
  5. Click Save Menu

If you do not see any display locations listed, your theme may not have registered any menu locations. In that case, you can add a menu widget to a sidebar or header widget area via Appearance → Widgets.

Alternative method using the Customizer:

  1. Go to Appearance → Customize → Menus
  2. Click on Menu Locations
  3. Assign your menu to the appropriate location from the dropdown
  4. Click Publish

Verification: Visit your site in a new browser tab (or incognito window) and confirm the menu is visible.

Fix 2: Check for Theme Conflicts

A theme conflict is the second most common cause of a WordPress menu not displaying. This happens when a theme update breaks the menu template, when a child theme overrides the header incorrectly, or when the theme’s menu walker class has a bug.

How to diagnose:

  1. Go to Appearance → Themes
  2. Activate a default WordPress theme (Twenty Twenty-Five or Twenty Twenty-Four)
  3. Check if the menu appears on the front end

If the menu shows with the default theme, your original theme is the problem. Contact the theme developer or check these specific files in your theme:

File What to Check Common Issue
header.php wp_nav_menu() function call Missing or incorrect theme_location parameter
functions.php register_nav_menus() function Menu locations not registered after theme update
style.css Navigation CSS rules Menu container hidden by display:none
Child theme header.php Overrides parent header Outdated copy missing new menu code

The wp_nav_menu() function is what displays your menu. If your theme’s header.php doesn’t call it, or calls it with the wrong theme_location parameter, the menu won’t appear. A correct call looks like this:

<?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>

Fix 3: Check for Plugin Conflicts

Plugin conflicts cause approximately 52% of all WordPress display errors, according to community-sourced data. A plugin can break your menu by:

  • Enqueueing JavaScript that conflicts with the menu’s dropdown behavior
  • Adding CSS that overrides menu styles
  • Modifying the wp_nav_menu output via filters
  • Causing a PHP fatal error that stops page rendering

How to diagnose and fix:

  1. Go to Plugins → Installed Plugins
  2. Deactivate all plugins at once (select all → Bulk Actions → Deactivate)
  3. Check if the menu appears
  4. If yes, reactivate plugins one by one, checking the menu after each activation
  5. When the menu disappears again, you have found the conflicting plugin

Common plugin types that conflict with menus:

Plugin Type Why It Conflicts Examples
Menu enhancement plugins Override default menu HTML/CSS Max Mega Menu, UberMenu, Starter Templates
Page builders Replace theme header with custom templates Elementor, Beaver Builder, Divi
Caching plugins Serve stale HTML without the menu WP Super Cache, W3 Total Cache, LiteSpeed Cache
Security plugins Block menu-related AJAX or REST API calls Wordfence, Sucuri, iThemes Security
Optimization plugins Minify/defer JS that the menu depends on Autoptimize, WP Rocket, Perfmatters

Fix 4: Clear All Caches

Caching is one of the most overlooked causes of a WordPress menu not showing. If you recently created or modified a menu, the cached version of your pages may still show the old (menu-less) version. According to WP Rocket, cached pages are the #1 reason users report “I saved my menu but it’s not showing.”

Clear caches in this order:

  1. WordPress caching plugin: Go to your caching plugin’s settings and click “Purge All Cache” or “Clear Cache”
  2. WP Super Cache: Settings → WP Super Cache → Delete Cache
  3. W3 Total Cache: Performance → Dashboard → Empty All Caches
  4. WP Rocket: WP Rocket → Dashboard → Clear Cache
  5. LiteSpeed Cache: LiteSpeed Cache → Toolbox → Purge All
  6. Server-level cache: If your host uses server caching (Cloudflare, RunCloud, Kinsta, WP Engine), purge it from the hosting panel
  7. CDN cache: If you use Cloudflare or another CDN, purge the cache from the CDN dashboard
  8. Browser cache: Press Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac) for a hard refresh

Verification: Open your site in an incognito/private browser window to see the uncached version.

Fix 5: Check for CSS Hiding the Menu

Custom CSS rules can hide your menu without any visible error. This commonly happens when someone adds CSS to hide the menu on certain screen sizes and accidentally hides it on all screen sizes, or when a theme update introduces CSS that conflicts with custom styles.

How to diagnose:

  1. Open your site in Chrome or Firefox
  2. Right-click where the menu should be and select Inspect (or press F12)
  3. Look for the menu’s HTML element (usually a <nav> tag or a <div> with a class like main-navigation, site-navigation, or primary-menu)
  4. Check the Styles panel on the right for any of these problematic rules:
CSS Property Effect Fix
display: none Completely removes the menu from the page Change to display: block or display: flex
visibility: hidden Hides the menu but it still takes up space Change to visibility: visible
opacity: 0 Makes the menu fully transparent Change to opacity: 1
height: 0 with overflow: hidden Collapses the menu to zero height Remove height: 0 or set overflow: visible
position: absolute with negative left/top Moves menu off-screen Reset position values
z-index: -1 Places menu behind other elements Set z-index to a positive value (99 or higher)

To override the CSS, add your fix to Appearance → Customize → Additional CSS:

.main-navigation {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
}

Replace .main-navigation with your theme’s actual menu class.

Fix 6: Fix JavaScript Errors

If your WordPress menu relies on JavaScript for dropdowns, mobile toggles, or mega menu functionality, a JavaScript error can prevent the menu from rendering or functioning. This is especially common with mega menu plugins and custom theme menus. According to HTTP Archive, the median WordPress page loads 22 JavaScript files, increasing the chance of script conflicts.

How to diagnose:

  1. Open your site in Chrome
  2. Press F12 to open Developer Tools
  3. Click the Console tab
  4. Look for red error messages
  5. Note which script file is causing the error

Common JavaScript errors that break menus:

Error Likely Cause Fix
Uncaught TypeError: Cannot read property of null Menu element missing from DOM Check that the menu HTML exists; theme may not output it
jQuery is not defined jQuery not loaded or deferred past menu script Ensure jQuery loads before menu scripts; check defer/async settings
Uncaught ReferenceError: [variable] is not defined Plugin script loaded in wrong order Adjust script loading order or dequeue conflicting scripts
Navigation script timeout Slow third-party script blocking execution Move third-party scripts to footer or load them async

Quick fix: If you identified a specific plugin’s script causing the error, deactivate that plugin and look for an alternative. If it is a theme script, contact the theme developer or check for theme updates.

Fix 7: WordPress Mobile Menu Not Showing

With 59.4% of global web traffic coming from mobile devices (StatCounter, 2025), a menu that works on desktop but not on mobile is a critical issue. Mobile menu problems are different from desktop menu problems because mobile menus typically use a separate toggle button (hamburger icon) and a different menu structure.

Common causes and fixes:

Cause Symptom Fix
No mobile menu configured Hamburger icon missing entirely Check theme settings for mobile menu options; install a mobile menu plugin like Responsive Menu
Wrong CSS breakpoint Menu disappears at certain screen widths Inspect CSS media queries; adjust breakpoint (common: 768px, 1024px)
JavaScript toggle not working Hamburger icon visible but clicking does nothing Check console for JS errors; ensure toggle script loads on mobile
Menu assigned to desktop location only Desktop menu shows, mobile shows nothing Assign menu to mobile menu location in Appearance → Menus
Theme hides menu on mobile via CSS Menu visible on desktop, hidden on mobile Check for @media queries with display:none on the menu class

Using Responsive Menu plugin to fix mobile menus:

If your theme does not provide a good mobile menu experience, the Responsive Menu plugin creates a dedicated mobile navigation that works independently from your theme’s menu. It supports hamburger icons, slide-in panels, and full-screen overlays, and it works with any WordPress theme. Over 100,000 WordPress sites use Responsive Menu for reliable mobile navigation.

Fix 8: Recreate the Menu (Database Corruption)

In rare cases, the menu data in the WordPress database becomes corrupted. This can happen after a failed migration, a database restore, or a plugin that directly modifies the wp_posts and wp_terms tables. If none of the fixes above worked, recreating the menu may be necessary.

How to recreate your menu:

  1. Go to Appearance → Menus
  2. Note down all your current menu items (take a screenshot for reference)
  3. Delete the existing menu by clicking Delete Menu
  4. Click Create a new menu
  5. Give it a name and add your pages, posts, custom links, and categories
  6. Assign it to the correct display location under Menu Settings
  7. Click Save Menu

If you have database access, you can check the menu data directly:

  • Menus are stored as terms in the wp_terms table with taxonomy nav_menu
  • Menu items are custom post types (nav_menu_item) in wp_posts
  • If these tables are corrupted, restoring from a backup is faster than manual repair

Fix 9: Check Theme Updates and PHP Errors

According to Patchstack’s 2025 WordPress security report, 33% of WordPress sites run outdated themes. An outdated or recently updated theme can break menu functionality in several ways:

  • A theme update may change how menu locations are registered
  • PHP errors in the theme’s header.php can stop the menu from rendering
  • A theme update may require a minimum PHP version your server does not meet

How to check for PHP errors:

  1. Add this line to your wp-config.php file temporarily:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
  1. Visit your site
  2. Check the debug log at /wp-content/debug.log
  3. Look for errors related to menu functions, header.php, or navigation
  4. Important: Set WP_DEBUG back to false after debugging (leaving it on exposes error details to visitors)

Prevention: Stop Menu Issues Before They Happen

Prevention Step Why It Works Frequency
Back up before updating themes/plugins Instant rollback if update breaks menu Before every update
Use a staging site for testing Catch menu issues before they hit production Before major changes
Keep themes and plugins updated Updates fix known bugs including menu issues Weekly
Use a child theme for customizations Parent theme updates won’t overwrite your menu code One-time setup
Monitor uptime and errors Get alerted immediately when something breaks 24/7 monitoring
Document your menu structure Faster recreation if menu data is lost After each menu change

Frequently Asked Questions

Why is my WordPress menu not showing after updating my theme?

Theme updates can reset menu location assignments or change the registered menu location names. Go to Appearance → Menus → Manage Locations and re-assign your menu to the correct location. According to WordPress.org support forums, menu location resets are the most reported issue after theme updates, affecting approximately 15% of major theme updates.

My menu shows on desktop but not on mobile. What should I do?

This is usually a CSS breakpoint issue or a missing mobile menu configuration. Check your theme’s responsive settings — many themes use separate menu locations for desktop and mobile. If your theme does not offer a mobile menu option, install a dedicated plugin like Responsive Menu, which creates an independent mobile navigation that works with any theme. With 59.4% of traffic coming from mobile devices (StatCounter, 2025), fixing mobile menu visibility should be a top priority.

How do I fix a WordPress menu that shows on some pages but not others?

This typically happens when specific pages use a different page template that either does not include the header or uses a different header file. Check the page template assignment in the page editor (right sidebar under “Page Attributes” or “Template”). If the template lacks a wp_nav_menu() call, switch to a template that includes one, or edit the template file to add the menu function.

Can a caching plugin hide my WordPress menu?

Yes. Caching plugins serve saved HTML snapshots of your pages. If you created or changed your menu after the cache was generated, visitors will see the old cached version without the menu. Clear your caching plugin’s cache, server cache, and CDN cache after any menu change. WP Rocket specifically recommends purging cache after menu edits in their documentation.

Why did my WordPress menu disappear after installing a new plugin?

Plugin conflicts are the most common cause of sudden menu disappearance. The new plugin may inject CSS that hides the menu, load JavaScript that conflicts with menu scripts, or modify the menu output via WordPress filters. Deactivate the newly installed plugin and check if the menu returns. If it does, contact the plugin developer or look for an alternative plugin that does not conflict with your theme’s navigation.

How do I fix a WordPress menu that shows as a plain list instead of a styled navigation bar?

When a menu displays as an unstyled bulleted list, it means the menu’s CSS is not loading. This can happen if your theme’s stylesheet failed to load (check for 404 errors in the browser console), if a CSS optimization plugin stripped the navigation styles, or if a recent theme update changed the CSS class names. Inspect the menu element and check if the expected CSS classes are present and styled.