Description
Jelly Folders adds a folder tree to the WordPress Media Library. Drag files into folders, nest folders as deeply as you like, and find things without scrolling through a thousand thumbnails.
Folders are virtual, and that is the important part. Jelly Folders never moves, renames or reorganizes anything under wp-content/uploads/. Folders are a database layer built on a WordPress taxonomy, so every file URL keeps working exactly as before: in published posts, in caches, in CDNs, in emails you sent last year. Deactivate the plugin and every link still resolves.
What you get
- Unlimited folders, unlimited nesting. No cap, no counter.
- Drag and drop. Drag files into folders, drag folders to reorder or reparent them. Multi-select and move a whole batch at once.
- Right-click menu on any folder: add a subfolder, rename, change colour, delete.
- Folder colours, to make a long tree scannable at a glance.
- A resizable, collapsible sidebar that remembers its width per user.
- New-file badges showing what has arrived since you last looked, per folder or rolled up through the tree.
- Safe delete. Deleting a folder never deletes files: they move to Uncategorized.
- Upload straight into a folder, with a destination picker in the upload panel.
- Bulk select and bulk move, in both grid and list view.
- Folders inside the insert-media modal, so the tree is there while you are writing a post, not only while you are managing files.
- SVG upload with sanitization. SVGs are scrubbed of scripts, event handlers and external references before they are stored.
- Translation ready, with WPML and Polylang support for per-language folder names.
- Right-to-left layouts supported.
Built on WordPress, not around it
The folder tree mounts inside core’s own media browser instead of replacing it. Page builders and blocks that use the standard WordPress media modal get the folder sidebar automatically, and anything reading the media selection keeps working, because nothing about the underlying data changed.
Third-party services
Jelly Folders bundles the Freemius WordPress SDK, which handles the upgrade, checkout and license flow for the paid version.
The SDK does not run its usage tracking, and does not send your account or site details, until you explicitly opt in on the connect screen shown after activation (or, in the paid version, until you enter a license key). Choosing Skip there leaves the plugin fully functional and shares no usage data, user details or plugin list. Three things you do yourself still contact Freemius after a Skip: opening Media > Upgrade loads pricing from the Freemius API, and every such request carries your site’s address in its user agent; starting a checkout from there puts your WordPress user’s first and last name, email address and your site’s address in the checkout link; and submitting the feedback form shown when you deactivate the plugin sends Freemius an anonymous uninstall event with the reason you gave. If you opt in, the SDK shares: your WordPress user’s first and last name and email address; your site’s homepage URL and title, WordPress and PHP versions and site language; the plugin and SDK versions and whether the plugin is active or uninstalled; and the names, slugs, versions and active state of your installed plugins and themes. A license activation shares your WordPress user’s first and last name and email address (unless the license already has a known owner), the homepage URL, plugin and SDK versions and plugin state, plus the diagnostic details (WordPress and PHP versions, site language and title), which are ticked by default and can be unticked, and the plugin/theme list, which is unticked by default. To stop sharing, open the Plugins screen and click Opt Out under Jelly Folders; this stops future sharing and does not recall what was already sent. If you chose Skip, the same place offers Opt In should you change your mind. In the paid version, the Opt Out link appears once a license is active.
- Freemius terms of service: https://freemius.com/terms/
- Freemius privacy policy: https://freemius.com/privacy/
Source code
Jelly Folders is GPL licensed. Your site loads the minified files (build/index.min.js, build/style-index.min.css and the per-block ones). The readable, unobfuscated form of every one ships beside it in the same folder (build/index.js, build/style-index.css, and so on): the scripts with readable identifiers and formatting, and the stylesheets in expanded, multi-line form. Each .min file is plain minification of the readable file next to it, so no separate source download is required to review the code. Add define( 'SCRIPT_DEBUG', true ); to wp-config.php to load the readable files instead.
Screenshots






Installation
- Upload the plugin to
/wp-content/plugins/jelly-folders/, or install it through Plugins Add New. - Activate it through the Plugins screen.
- Go to Media Library. The folder sidebar appears beside your files.
There is no separate settings page. Everything — creating folders, colours, upload destination, SVG uploads — lives in the Media Library screen itself, behind the gear icon above the folder tree.
FAQ
-
Will this move or rename my files?
-
No. Folders exist only in the database. Nothing under
wp-content/uploads/is touched, so every existing file URL keeps working. -
What happens if I deactivate or delete the plugin?
-
Your files are untouched and every URL still resolves. Folder assignments stay in the database on deactivation, so reactivating restores your tree. On deletion, folder data is purged only if you have explicitly opted in to that setting.
-
What happens when I delete a folder?
-
The folder is removed and its files move to Uncategorized. Deleting a folder never deletes files.
-
Is there a limit on how many folders I can create?
-
No. There is no cap on folders, no cap on uploads, and no time limit on anything in this plugin.
-
Does it work with page builders?
-
If the builder uses the standard WordPress media modal — most do — the folder sidebar appears there automatically, because Jelly Folders extends core’s media browser rather than replacing it.
-
Is SVG upload safe?
-
SVG files are sanitized on upload using svg-sanitize, which strips
<script>elements, event handler attributes and external references. SVG upload is switched off by default and limited to users who can manage options. -
Can I translate folder names?
-
Yes. Folder names are your data, not plugin strings, so they are translated through WPML’s and Polylang’s taxonomy term translation. A folder can have a different name in each language.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Jelly Folders – Media Library Folders & Organizer” is open source software. The following people have contributed to this plugin.
Contributors“Jelly Folders – Media Library Folders & Organizer” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “Jelly Folders – Media Library Folders & Organizer” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.0
- Security: SVG files uploaded through WordPress’ own upload routes are now sanitized or refused. Uploads in the Media Library, uploads sent as a raw request body and sideloads are cleaned or refused, and uploads over XML-RPC are refused.
- SVG files already in your Media Library are not changed by this update, and files that another plugin writes to disk itself are outside this fix.
- SVG files that declare custom DOCTYPE entities are now refused.
- Fixed: the folder menu stays on screen on phones and small windows, clear of the admin bar.
- Updated the bundled SVG sanitizer to 1.0.0.
- The listing is now called “Jelly Folders – Media Library Folders & Organizer” and is tagged “organize media”, so it is easier to find. Nothing changes in how the plugin works.
- The listing has an animated screenshot of moving several files into a folder at once.
- After a week of use and five or more folders, a dismissible note in the admin asks once for an honest review. “Maybe later” hides it for 30 days and “I already did” hides it for good.
1.0.0
- Initial release.
