Description
A user export tool built for multisite network admins.
Beardo Multisite User Export treats your network as a whole rather than as a set of separate sites. Pick a site and export its users, or pick roles and export every matching user across the entire network in a single file, with each person listed exactly once and every site they belong to in the same row.
Everything runs inside your own WordPress installation. There is no account to create, no API key, and no third-party service. The plugin makes zero external requests, and the only thing that ever leaves your server is the file you download.
Export the network, or export one site
- Export by Role exports across the entire network. Choose one or more roles, see a live count of unique users for each, and download one deduplicated list with a Sites column showing everywhere each user belongs.
- Export by Site exports a single subsite. Select the site and the plugin loads the roles that actually exist there, including custom roles that only that site’s theme or plugins define, so you export precisely the users you meant to.
Filter to exactly the users you need
- One or more roles, each with a user count
- Account status: active, spam, or deleted
- Registration date range
- Your choice of fields: user ID, username, email, first name, last name, role(s), registration date, sites, and status
Formats that open cleanly
- CSV, UTF-8 with BOM, so accented names and non-Latin scripts open correctly in Excel, Numbers, and Google Sheets
- Excel (.xls, Excel 2003 XML Spreadsheet format), opens directly in Microsoft Excel and LibreOffice
Security built in, not bolted on
User exports are personal data. This plugin was written to keep them safe by default and hardened against the mistakes that have gotten other export plugins removed from the directory.
- Exports are available only to super admins, only over HTTPS, and only with a valid security nonce
- Every submitted value is validated server-side against an allowlist: roles, fields, format, site ID, and dates
- Every exported cell is protected against CSV formula injection, so a username like
=HYPERLINK(...)opens as text, not as a live formula - Role names coming from subsites are escaped before they reach the admin screen
- No external requests, ever. Nothing is uploaded, synced, or phoned home
Built for real networks
- Users are queried in batches of 1,000, so large networks export without timeouts
- Role lists are gathered from every subsite, not just the main site
- Users who belong to several sites appear once, with all of their sites listed
- The admin screen follows your admin color scheme, including dark-mode themes
A complete audit trail
Every export is recorded: who ran it, which roles, which site, how many users, and in which format. The Export History tab shows the log, lets you download it as CSV, and prunes entries older than 90 days automatically. Developers can change the retention window through the beardo_mue_history_retention_days network option.
What it does not do (yet)
This is a focused export tool. It does not import users, and it exports the core user fields listed above rather than arbitrary user meta or WooCommerce data. If you need those, a general-purpose import/export plugin is a better fit. If you run a network and need a clean, safe, network-aware export, this plugin is built for that.
Part of the Beardo.Tools family
Beardo Multisite User Export is one of a set of lightweight, security-first tools for WordPress multisite networks from Beardo.Tools. Each does one job well, follows WordPress coding standards, and ships with a full test suite.
Screenshots




Installation
- In Network Admin > Plugins > Add New, search for “Beardo Multisite User Export” and install it, or upload the
beardo-multisite-user-exportfolder to/wp-content/plugins/. - Network Activate the plugin.
- Go to Network Admin > Users > Export Users.
Requirements: WordPress Multisite, HTTPS enabled on the network admin, and a super admin account.
FAQ
-
Does this work on a single-site WordPress install?
-
No. It is built specifically for multisite networks and requires multisite to be enabled. On a single site it shows an admin notice and does nothing else.
-
Exports require HTTPS. Enable SSL/TLS on your network and the button becomes available. This is deliberate: user data should never travel over an unencrypted connection.
-
Who can export users?
-
Only super admins, meaning users with the
manage_networkcapability. Administrators of individual subsites cannot see or use the export tool. -
What happens with users who belong to several sites?
-
In network-wide exports each user appears exactly once, with a Sites column listing every site they belong to. Site-specific exports list only that site’s users.
-
A subsite uses custom roles. Will they show up?
-
Yes. Role lists are collected from every subsite in the network, so roles that a theme or plugin defines on one site only are included, with their correct labels.
-
Can I export custom user meta or WooCommerce customer data?
-
Not in this version. The export covers user ID, username, email, first name, last name, roles, registration date, sites, and account status.
-
Can I import users with this plugin?
-
No. It is export-only by design.
-
Are exports logged?
-
Yes. Every export is recorded in the Export History tab with the user who ran it, the roles, the site, the row count, and the format. Entries are kept for 90 days by default, and the log itself can be downloaded as CSV. Developers can change the retention window through the
beardo_mue_history_retention_daysnetwork option. -
Does any user data leave my server?
-
No. The plugin makes no external requests of any kind. Exports are generated on your server and streamed straight to your browser as a download.
-
Is the CSV safe to open in Excel?
-
Yes. Every cell is checked for formula-injection characters (
=,+,-,@, tab, and carriage return) and escaped so spreadsheet applications treat them as text rather than executable formulas. -
Which Excel format is the .xls file?
-
Excel 2003 XML Spreadsheet, which Excel and LibreOffice open directly. Excel may show a one-time notice that the file format and extension differ. Click Yes and the file opens normally. If you prefer a plain format, choose CSV.
-
What happens when I uninstall the plugin?
-
All plugin data is removed: its network options (retention setting, batch size, cache expiry, export history) and cached transients. Nothing is left behind. Files you already downloaded are of course unaffected.
-
What versions of WordPress and PHP are required?
-
WordPress 5.8 or later and PHP 8.0 or later, with multisite enabled.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Beardo Multisite User Export” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Beardo Multisite User Export” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.3
- Rebrand: Plugin is now Beardo Multisite User Export, published by Beardo.Tools; the slug and text domain are now
beardo-multisite-user-export - Rename: All classes, constants, options, transients, hooks, and asset handles now use the
Beardo_MUE/beardo_mue_prefix, matching the Beardo plugin family - Cleanup: Removed six obsolete
class_alias()backwards-compatibility shims - Fix: Corrected the minimum PHP version in composer.json to 8.0, matching the plugin header
- Note: Because the option keys changed, settings and export history from earlier versions are not carried over
- Fix: Export, history-export, and site-roles AJAX handlers were registered under the old
msue_action names after the rename, so every request silently did nothing; all three now match thebeardo_mue_actions the forms and script send, with a test that pins them together - Improvement: All admin-script messages are now translatable via wp_localize_script instead of hardcoded English
- Improvement: Uninstall cleanup now also runs under WP-CLI, which has no logged-in user
- Cleanup: Removed unused sub-tab CSS and prefixed the required-field marker class
1.2.1
- Improvement: Admin screen now inherits colors from WordPress core and admin themes (dark-mode compatible) — removed hardcoded palette colors from plugin CSS
- Improvement: Export information box now renders as a native WordPress notice
1.2
- Security: Escape role names/keys/counts at the HTML insertion point in admin JS (prevents stored XSS via subsite-defined role names)
- Security: Validate posted site IDs against existing network sites (AJAX and export paths)
- Security: Apply CSV formula-injection escaping to the history CSV export (matching the main export)
- Security: Unslash and strictly sanitize all request input; strict Y-m-d validation for date filters
- Compliance: Full WordPress Coding Standards alignment — naming, escaping, and i18n on all output; class files renamed to WPCS conventions with previous class names aliased for backwards compatibility
- Compliance: All user-facing strings internationalized with the beardo-multisite-user-export text domain
- Refactor: New Beardo_MUE_Security class centralizes capability/nonce constants, CSV escaping, and site validation
- Performance: Site dropdown no longer switches blogs per site; network role counts cached for 5 minutes; per-site role counts use count_users()
- Cleanup: Removed dead transient references, a no-op JS branch, and inline styles (moved to CSS classes)
- Requires PHP 8.0
1.1
- Maintenance: Updated plugin tooling baseline and test coverage pipeline
1.0.3
- Maintenance: Minor revision update
1.0.2
- Maintenance: Minor revision update
1.0.1
- Fix: Plugin Check/PHPCS escaping warnings in Excel export output
- Fix: Removed direct database query from uninstall routine
1.0.0
- Initial release
- CSV and Excel export support
- Multi-role and multi-site filtering with per-role user counts
- User status filtering (active, spam, deleted)
- Registration date range filtering
- Export history tracking with configurable retention
- CSV formula-injection prevention and HTTPS enforcement
- Chunked query processing for large networks
