Title: Menu Backup &amp; Restore + Import/Export
Author: Matthew Reilly
Published: <strong>Morso 23, 2025</strong>
Last modified: Duujal 23, 2026

---

Search plugins

![](https://ps.w.org/menu-backup-restore/assets/Banner-772x250.png?rev=3487523)

![](https://ps.w.org/menu-backup-restore/assets/Icon-256x256.png?rev=3487523)

# Menu Backup & Restore + Import/Export

 By [Matthew Reilly](https://profiles.wordpress.org/creativemashwp/)

[Download](https://downloads.wordpress.org/plugin/menu-backup-restore.1.4.0.zip)

 * [Details](https://fuc.wordpress.org/plugins/menu-backup-restore/#description)
 * [Reviews](https://fuc.wordpress.org/plugins/menu-backup-restore/#reviews)
 *  [Installation](https://fuc.wordpress.org/plugins/menu-backup-restore/#installation)
 * [Development](https://fuc.wordpress.org/plugins/menu-backup-restore/#developers)

 [Support](https://wordpress.org/support/plugin/menu-backup-restore/)

## Description

Menu Backup & Restore protects every WordPress menu, both classic `nav_menu` menus
and block-theme `wp_navigation` posts edited in the Site Editor, with automatic 
backups, one-click restoration, and powerful import/export capabilities. Transfer
menus between sites seamlessly with intelligent per-item mapping that rewrites page,
post, and category references for the target site.

#### Key Features

 * Automatic backup of menus when they are updated
 * Works with both classic menus (`nav_menu`) and block-theme menus (`wp_navigation`
   posts edited in the Site Editor)
 * Site Editor inspector panel — back up, restore, rename, or apply a backup from
   another menu without leaving the editor, with a Navigation block selected
 * In-place restore replaces the existing menu directly, no duplicate menus, theme
   locations stay assigned
 * Import and export menus as JSON files for portability or locally saved backups
 * Multi-menu export and import — select multiple menus or backups to export in 
   a single file
 * Transfer menus between sites with intelligent object mapping, can be used to 
   update menus from development to production sites without full site migration
 * Manual mapping interface to override automatic matches and map menu items to 
   specific pages, posts, or taxonomies during import
 * Preserves complete menu structure: hierarchy, theme locations, CSS classes, and
   third-party plugin data (post_meta) icons etc…
 * Bulk actions — select multiple backups to export or delete at once
 * Rename backups inline with a click
 * Configurable maximum number of backups to keep
 * See who saved and created the backup
 * Tab-based interface for better organisation
 * Simple and intuitive user interface
 * No database modifications required
 * Lightweight and fast

#### How It Works

 1. The plugin automatically creates a backup whenever you update a menu
 2. Backups are stored in the WordPress options table with complete menu structure (
    hierarchy, locations, CSS classes, custom post_meta)
 3. Manage backups from the legacy Menus page (classic themes), the Appearance  Menu
    Backups page (block themes), or inline from the Site Editor inspector when editing
    a Navigation block — rename, export, delete, restore, or bulk-select
 4. Restore any previous version with a single click, the existing menu is updated 
    in-place, keeping theme locations intact
 5. Export one or multiple menus as a single JSON file for portability or import to
    other sites
 6. Configure the maximum number of backups to keep in the settings

#### Requirements

 * WordPress 5.0 or higher
 * PHP 7.2 or higher

#### What Users Have to Say on Reddit

“That’s a super useful idea! Menus are so easy to wipe out by accident, and restoring
from a full backup always feels like overkill. Nice work!”

“Really appreciate it, This will come in handy alot!”

“Oh man, I’ve done this before too. Lost a big menu while trying to rearrange items
and it was gone in a click. Ended up re-building from scratch.
 This plugin sounds
like a lifesaver — surprised WordPress hasn’t built something like this in by default.”

“Kind of an automatic backup vs having to schedule one.”

“that’s a killer quality of life plugin wp’s missing so many of those “one click
undo” features for common mistakes”

“Great idea! I do this more often than I care to admit. This needs to be in Core!”

“Dude I literally do this all the time and actually did it less than an hour ago.
I hate how the WordPress menu isn’t stored normally. Thanks for this!”

## Screenshots

 * [[
 * [Classic] Backup & Restore tab on the Appearance  Menus page. Automatic backups
   appear as a list with Rename, Restore, Export, and Delete actions.
 * [[
 * [Block] Site Editor inspector “Menu Backups” panel. Select a Navigation block
   and back up, restore, rename, or apply a backup from another menu, without leaving
   the editor.
 * [[
 * [Block] Appearance  Menu Backups admin page. Every block menu on the site with
   expandable backup sub-lists and per-row actions.
 * [[
 * [Both] Import preview with per-item mapping. Each navigation item gets a target
   dropdown so page, category, and post references are rewritten for the destination
   site.
 * [[
 * [Both] Settings  Menu Backups page. Independent backup caps for each system, 
   with optional confirmation before older backups are removed.

## Installation

 1. Upload the `menu-backup-restore` folder to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Go to Appearance > Menus (classic themes) or Appearance  Menu Backups (block themes)
    to see the backup panel. In the Site Editor (block themes), select any Navigation
    block to access the inspector panel.
 4. Configure the maximum number of backups in Settings > Menu Backups

## FAQ

### How many backups can I keep?

You can configure the maximum number of backups to keep in the plugin settings. 
The default is 10 backups.

### Where are the backups stored?

Backups are stored in the WordPress options table. No additional database tables
are created.

### Can I restore a menu to a previous version?

Yes, you can restore any previous version of your menu with a single click. If the
original menu still exists, it is updated in-place — the same menu ID is kept so
your theme locations stay assigned. If the original menu was deleted, a new menu
is created.

### Can I export and import menus?

Yes! You can export one or multiple menus at once as a single JSON file and import
it to the same or a different WordPress site. The plugin intelligently maps menu
items to objects on the target site. You can also export individual backups from
the Backup & Restore tab, or bulk-export multiple backups at once.

### Can I export and import multiple menus at once?

Yes! The Export tab lets you select multiple menus using checkboxes and export them
all in a single JSON file. When importing, the preview page shows each menu in its
own section with full mapping controls. Bulk export is also available on the Backup&
Restore tab for backups.

### Can I rename backups?

Yes! Click the pencil icon next to any backup name to rename it inline. Changes 
are saved instantly without a page reload.

### Can I transfer menus between sites?

Absolutely! Export a menu from one site and import it to another. The plugin will
automatically attempt to match pages, posts, and categories by slug, GUID, or title.
On the import preview screen, you have full control to manually map any menu item
to a different page, post, or category on the target site, or keep it as a custom
link.

### Can I manually control how menu items are mapped during import?

Yes! Version 1.1.1 introduced a manual mapping interface on the import preview page.
After uploading a menu, you’ll see a detailed mapping table where you can:
 * Review
automatic matches and change them if needed * Map unmatched items to specific pages,
posts, or taxonomies on your site * Choose to keep any item as a custom link instead
of linking to an object * See which items were automatically matched vs. which need
attention

This gives you complete control over exactly how your imported menu will be structured.

### What data is preserved during backup, restore, and import/export?

The plugin preserves all menu data including:
 * Complete menu hierarchy (parent/
child relationships) * Theme menu locations (which theme position the menu is assigned
to) * CSS classes for each menu item * Menu item titles, URLs, and descriptions *
Target and rel attributes * Display order of menu items * Custom post_meta from 
third-party plugins — any plugin that stores data on menu items via post_meta is
supported automatically

### Which third-party menu plugins are supported?

Any plugin that stores its menu item data in post_meta is automatically supported—
no configuration needed. This has been tested with:

 * If Menu – Visibility control for menus by Layered
 * Menu Icons by ThemeIsle
 * WP Menu Icons by QuadLayers
 * Menu Image by Freshlight Lab
 * Easy Menu Icons by Themewant

If your menu plugin stores data in post_meta (which most do), it will work out of
the box.

### Will this slow down my site?

No, the plugin is lightweight and only runs when menus are updated. It doesn’t affect
your site’s performance.

## Reviews

![](https://secure.gravatar.com/avatar/db543a43edf147aecee5c0c31c465e40ebd261c82c93e74e0d223ea03c89789e?
s=60&d=retro&r=g)

### 󠀁[SO useful!](https://wordpress.org/support/topic/so-useful-146/)󠁿

 [syzygist](https://profiles.wordpress.org/syzygist/) Seeɗto 21, 2026

I have a DIY client with a very large and complex menu who has accidentally deleted
that menu several times (not entirely his fault – the delete menu link is far too
similar in location and text to the delete menu item link). Having had to rebuild
it on each occasion, I am so grateful for this intuitive, straightforward option
to not only back up but restore (and even import/export) a deleted menu. This is
one of those capabilities that should be built in to WordPress, but since it isn’t,
thank you, thank you, thank you for seeing that unmet need, and taking the time 
to provide a solution!

![](https://secure.gravatar.com/avatar/11383f8e806e7d99592a4e8718733eb375052f39165db9fd54b084e02840f76f?
s=60&d=retro&r=g)

### 󠀁[Finally, a menu plugin that works!](https://wordpress.org/support/topic/finally-a-menu-plugin-that-works/)󠁿

 [fyrefli](https://profiles.wordpress.org/fyrefli/) Morso 29, 2025

Absolutely love this plugin. It’s on the neccessary installation list. I’m forever
messing up my menus and now I can back up and restore when needed to.

![](https://secure.gravatar.com/avatar/ed304304b88440f1d1f60938b797a0a58282433d1e5f304303ee376a98ac9011?
s=60&d=retro&r=g)

### 󠀁[Works great](https://wordpress.org/support/topic/works-great-9647/)󠁿

 [spapafot](https://profiles.wordpress.org/spapafot/) Morso 27, 2025

Exactly what I needed, works as expected!

 [ Read all 2 reviews ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/)

## Contributors & Developers

“Menu Backup & Restore + Import/Export” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Matthew Reilly ](https://profiles.wordpress.org/creativemashwp/)

[Translate “Menu Backup & Restore + Import/Export” into your language.](https://translate.wordpress.org/projects/wp-plugins/menu-backup-restore)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/menu-backup-restore/),
check out the [SVN repository](https://plugins.svn.wordpress.org/menu-backup-restore/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/menu-backup-restore/)
by [RSS](https://plugins.trac.wordpress.org/log/menu-backup-restore/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.4.0

 * Block theme support — menus stored as `wp_navigation` posts (used by the Site
   Editor) are now automatically backed up on save, and can be restored, exported,
   and imported with the same guarantees as classic menus
 * New admin page under Appearance  Menu Backups (block themes only) that lists 
   every block menu on the site, their backup counts, and per-backup Restore / Export/
   Delete / Rename actions. Hidden on classic themes since the legacy Appearance
   Menus page already covers classic backups
 * Site Editor block inspector panel — select any Navigation block to back up, restore,
   or browse recent backups inline. Auto-refreshes after a Site Editor save; restore
   reloads the editor with the restored content. A confirmation warns before restoring
   if you have other unsaved changes
 * Separate backup limits for classic and block menus — each system has its own 
   cap so they don’t compete for slots. Configure both on Settings  Menu Backups
 * Optional confirmation before any save or backup action that would delete the 
   oldest backup to make room. Toggle on or off in Settings  Menu Backups
 * Cross-system count notices — each backup surface tells you how many of the other
   system’s backups are stored elsewhere, so you don’t lose track of records after
   a theme switch
 * “Back up all menus now” button (Appearance  Menu Backups) backs up every menu
   of the active theme’s type in one click
 * Import dropzone on the new admin page — imports JSON files and returns to the
   page you started from
 * Schema 1.2 JSON format for exports containing block menus (mixed classic + block
   files supported). Readers accept schema 1.0, 1.1, and 1.2 files
 * Block-menu backups preserve post_meta for third-party plugins that attach data
   to `wp_navigation` posts
 * Classic Backup & Restore tab on the Nav Menus page is unchanged — block records
   are filtered out so classic users see no difference
 * Block menu imports now offer per-item remapping — every navigation link in an
   imported block menu shows up in the preview with a dropdown of matching pages,
   categories, or other targets on this site. Auto-matches by ID, URL slug, and 
   label across every public post type and taxonomy. Replaces the prior “imported
   verbatim, fix links yourself” behavior
 * Apply a backup from another menu (Site Editor inspector) — pick any block menu’s
   backup and apply it to the currently-selected Navigation block. Useful for copying
   menu structure between menus without leaving the editor
 * Inline rename of recent backups in the Site Editor inspector — pencil icon next
   to each backup name renames the backup record without leaving the editor
 * “Back up now” saves first if you have unsaved menu edits — the inspector’s backup
   button implicitly dispatches a Site Editor save so the backup captures what you
   see, not the previous on-disk state. Same applies to “Back up every Navigation
   block on this page”
 * Trim-warning confirm names the specific backup it will delete — when you’re at
   the backup limit, the confirmation tells you exactly which backup will be removed(
   name + date) instead of saying “the oldest backup”
 * No more stacked “- Restored …” suffixes on menu names — repeated restores replace
   the marker rather than appending it. Auto-backups also strip prior markers when
   capturing the menu name, so backup display names stay clean
 * Bulk select on the Appearance  Menu Backups sublists — checkboxes per backup 
   row plus Export Selected and Delete Selected buttons at the bottom of each sublist
 * Open sublists stay open across actions — deleting or backing up on Appearance
   Menu Backups no longer collapses your expanded sublists; the page preserves expanded
   state across the reload
 * Settings page gates the irrelevant cap — on block themes the classic-menu cap
   is grayed out (and vice versa). The “Manage your menu backups” link on the Settings
   page also adapts to your active theme

#### 1.3.0

 * Added custom post_meta support — third-party plugin data (e.g. If Menu, Menu 
   Icons, mega-menu plugins) is now automatically preserved during backup, restore,
   import, and export
 * In-place restore — restoring a backup now replaces the existing menu directly
   instead of creating a duplicate. Theme locations stay assigned, no cleanup needed
 * Multi-menu export — select multiple menus on the Export tab and export them all
   in a single JSON file
 * Multi-menu import — import files containing multiple menus, with per-menu mapping
   controls on the preview page
 * Bulk backup actions — select multiple backups with checkboxes to export or delete
   them at once
 * Inline backup rename — click the pencil icon to rename any backup without leaving
   the page
 * Import preview now shows custom data keys (post_meta) per item so users know 
   what third-party data is included
 * New multi-menu JSON format (schema 1.1) while remaining fully backward compatible
   with old single-menu exports
 * UI improvements — tighter spacing, clearer export tab description, responsive
   layout fixes

#### 1.2.0

 * Added a new Export tab to the Menus page, allowing you to export any menu directly
   as a JSON file. Menus can now be exported from your site even if they haven’t
   been backed up.
 * Improved the Menus page tab experience so switching between Backup & Restore,
   Import, and Export feels instant without a full page reload, while restore, delete,
   import, and export actions keep their existing secure processing flow.

#### 1.1.2

 * Fixed PHP 8.1 deprecation warnings caused by passing null to add_submenu_page()
 * Improved PHP 8.1+ compatibility across all admin interfaces and form handlers
 * Fixed CSS not loading on import preview page – styles now properly apply
 * Added max-width constraints (1200px) to import preview page for better readability
   on large screens
 * Improved layout consistency for all tables, notices, and forms on import preview
 * Synchronized dropdown widths between inline styles and CSS for uniform appearance
 * Moved inline CSS to admin.css file for better code organization and performance
 * Enhanced import preview page styling and user experience

#### 1.1.1

 * Added manual mapping interface on import preview page
 * Users can now override automatic object matches during import
 * Menu items can be manually mapped to specific pages, posts, or taxonomies on 
   the target site
 * Custom links can now be mapped to real pages/posts during import (not just kept
   as custom links)
 * Human-readable type labels in import preview (shows “Post”, “Page”, “Product”
   instead of “post_type”)
 * All mapping dropdowns now have uniform width for consistent UI
 * Fixed PHP 8.1+ deprecation warnings related to URL parameter handling
 * Fixed security warnings for POST data sanitization and validation
 * Fixed tab navigation issue when no WordPress menus exist but backups are present
 * Fixed bug where custom links mapped to pages weren’t being saved correctly
 * Option to keep any menu item as a custom link instead of mapping to an object
 * Improved import control and flexibility for cross-site menu transfers

#### 1.1.0

 * Added Import & Export functionality for menu backups as JSON files
 * Added tab-based interface with “Backup & Restore” and “Import” tabs
 * Smart tab defaults: Import tab shown first when no backups exist
 * Improved empty state with actionable guidance for new users
 * Added informational notice on Import tab when no backups exist
 * Added “Buy Me a Coffee” support link on settings page
 * Added “Rate 5 Stars” call-to-action on settings page
 * Fixed backup panel appearing on Manage Locations tab
 * Fixed bug where reducing backup limit didn’t delete old backups
 * Imported menus are now automatically saved as backups
 * Enhanced security with MIME type validation and checksum verification
 * Improved cross-site menu transfer with intelligent object mapping
 * Added schema versioning for future compatibility

#### 1.0.1

 * Added User column to show who created each backup
 * Improved responsive layout on smaller screens and mobile for a better user experience
 * Fixed H2 font size to match WordPress’s default H2 font size
 * Added friendly notice when no backups exist

#### 1.0.0

 * Initial release
 * Automatic menu backup on menu save
 * Backup restoration
 * Configurable backup limit
 * Settings page
 * User interface improvements

## Meta

 *  Version **1.4.0**
 *  Last updated **2 weeks ago**
 *  Active installations **400+**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.2 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/menu-backup-restore/)
 * Tags
 * [backup](https://fuc.wordpress.org/plugins/tags/backup/)[export](https://fuc.wordpress.org/plugins/tags/export/)
   [import](https://fuc.wordpress.org/plugins/tags/import/)[menu](https://fuc.wordpress.org/plugins/tags/menu/)
   [restore](https://fuc.wordpress.org/plugins/tags/restore/)
 *  [Advanced View](https://fuc.wordpress.org/plugins/menu-backup-restore/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  3 5-star reviews     ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/menu-backup-restore/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/menu-backup-restore/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/menu-backup-restore/reviews/)

## Contributors

 *   [ Matthew Reilly ](https://profiles.wordpress.org/creativemashwp/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/menu-backup-restore/)