Small code base
Five PHP files, under 70 KB, with no frameworks and no bundled libraries.
One click to download any installed plugin or theme as a ZIP, from the Plugins list or a Tools page. Built on the fly, nothing stored, no outside services.
I move plugins and themes between client sites all the time: a licensed build that lives on one site and needs to go to another, a custom theme I want a copy of before an update, a plugin I need to hand to a developer. WordPress has no download button. The plugins that add one were either abandoned, bundled with upsells, or did more than I wanted. So I wrote the small one.
Five PHP files, under 70 KB, with no frameworks and no bundled libraries.
The ZIP is built in the temp folder, streamed to your browser, and deleted. Nothing stays on the server.
Needs the install-plugins or install-themes capability plus a per-link token, and the item is checked against the real installed list, so there is no path to anything else.
Self-hosted updates through the normal WordPress Updates screen, enrolled in auto-updates the moment it is activated.
Easy Downloader is free software, licensed under GPL-2.0-or-later, like WordPress itself.
There are no settings. Install it, activate it, and every plugin and theme on the site gets a Download ZIP link.
Install and activate the plugin. There is nothing to configure. A Download ZIP link appears in the row actions of every plugin on the Plugins screen, and Tools → Easy Downloader lists every plugin and theme with its own download button.
Updates arrive through the normal WordPress Updates screen, and auto-updates are switched on for the plugin when it is activated.
Hover a row on the Plugins screen and click Download ZIP. The file is named slug-version.zip, for example code-snippets-pro-3.9.6.zip, and re-uploads cleanly through Plugins → Add New → Upload Plugin on another site.
Must-use plugins and drop-ins are not offered a link, because WordPress cannot reinstall them from a ZIP. A single-file plugin such as Hello Dolly is packed into its own folder, so re-uploading it installs beside the original rather than over it.
Tools → Easy Downloader shows every plugin and theme with its version, whether it is active, its size on disk, and a download button. The filter box narrows both lists as you type. Sizes are counted once a day, so a plugin you just updated may show its old size until tomorrow.
The page also has a Check for updates now button for the plugin itself.
Themes are listed on the Tools page, and on a multisite network they also get a Download ZIP link on the network Themes screen. A child theme ZIP contains only the child; the Tools page marks it “child of …”, and the parent is a separate download.
Symbolic links
A symbolic link inside a plugin or theme folder is left out of the ZIP rather than followed, so a link that points outside the folder can never put another file into the download.
The plugin checks my update server once an hour and shows new releases on the Plugins and Updates screens like any other plugin. Auto-updates are turned on at activation so sites never sit on an old build; if you switch them off on the Plugins screen, that choice is respected.
Deleting the plugin removes everything it wrote: its update cache, the size cache, and its own entry in the auto-update list. It stores no settings.
The item was removed after the page loaded. Reload the list and try again.
Page-builder themes can run to hundreds of megabytes. The plugin lifts the PHP time limit while it packs the folder, so give it a minute. If the browser gives up first, a lighter copy over SFTP is the fallback.
The plugin falls back to the PclZip library that ships with WordPress. The ZIP is the same; building it is a little slower.
The result box reports the reason. “Could not reach the update server” usually means the host blocks outbound requests; ask your host to allow updates.webdevsandbox.com.
A full code review of the previous version. Symbolic links are no longer followed into the ZIP; the update manifest is validated before it is trusted; downloads no longer hang or truncate when output buffering is on; canceled downloads clean up after themselves; Download ZIP no longer appears on must-use plugin rows; uninstall removes everything. The admin page carries the 2026 brand and an accessibility pass. The full list is in the plugin changelog.
Threshold Easy Downloader is free software, released under GPL-2.0-or-later. Sites that run it get updates through the normal WordPress Updates screen, from my own update server.
Easy Downloader is developed and supported by Spencer Taylor, Threshold Solutions, South Jersey, USA. For questions about the plugin, use the contact page.
WordPress 6.0 or newer and PHP 7.4 or newer. Any web server; no other plugins needed.
Have an idea for a feature you'd like to see in Easy Downloader? Drop me a note.
Rate limiting, CAPTCHA, two-factor authentication, one-time login links, hardening, and an audit log in one small plugin, with no outside services.
Ask me about the plugin, Google sign-in, or the security of your own site.