How to create folders in the WordPress Media Library
WordPress has shipped the same Media Library for years: one flat, endless grid ordered by upload date. There is no "New folder" button, no way to nest anything, and no bulk organizing. For a hundred files that is fine. For ten thousand it is the reason nobody on your team can find the logo.
This guide covers the options honestly, including the ones that do not need our plugin.
Why WordPress has no folders
Attachments are posts. WordPress stores the file on disk under
wp-content/uploads/2026/09/ and stores a database row describing it.
The date directories exist for filesystem sanity, not for you โ moving a
file between them changes its URL and breaks every page that used it.
That is the trap every folder solution has to avoid: the thing you see in wp-admin must not be the thing that determines the URL.
Option 1: work without a plugin
Two approaches genuinely work and cost nothing.
Name files properly before uploading. client-acme-logo-dark.svg
beats IMG_0294.png forever. The library's search box matches filenames
and titles, so a naming convention is a poor person's folder structure.
Use the built-in filters. The Media Library filters by type and date, and the list view sorts by title. On a small site that is often enough.
Neither scales. Search only helps when you remember what a file was called, and date filters assume you know roughly when something was uploaded. Past a few thousand files, people give up and re-upload a copy instead โ which is how libraries end up with the same logo eleven times.
Option 2: virtual folders
Every serious media folder plugin works the same way: it adds a taxonomy (the same mechanism behind categories and tags), attaches terms to attachments, and draws a folder tree from them.
The important consequence: nothing moves on disk. A "folder" is a database relationship. Assigning 5,000 files to folders is a bulk database write measured in milliseconds, not a file operation that can half-finish and leave you with broken images.
This is why the folders you see in wp-admin never match
wp-content/uploads โ and why they should not.
Doing it with MediaDock
- Install the plugin. MediaDock is on WordPress.org; install and activate it, then open Media โ Library. A folder sidebar appears next to the grid.
- Create folders. Use the New folder button. Right-click any folder to add a subfolder, rename it, give it a color or star it so it pins to the top. Nest as deep as you like.
- Move files in. Select files in the grid โ shift-click for a range, ctrl-click to add one โ and drag them onto a folder. Everything that existed before you installed the plugin sits in Uncategorized, ready to be selected and dragged in bulk.
- Keep it tidy. New uploads land in whichever folder you are viewing, so the structure maintains itself as you work.
Moves can be undone, and deleting a folder asks whether the files inside should go with it โ the destructive answer needs a typed confirmation.
What to check before you pick any plugin
Folder plugins are easy to install and painful to remove, so check these before committing:
- Does it move files or rewrite URLs? It should do neither. If a plugin rewrites URLs in your database, uninstalling it can leave dead links behind.
- Does it load anything on the public site? Media organization is an admin feature. CSS or JavaScript on the frontend is pure cost for your visitors.
- Does it work in the media modal? Folders that only appear on the Library screen are half a feature โ you pick images from inside Gutenberg, WooCommerce and page builders far more often.
- Can you leave? Look for importers out as well as in, and check what uninstalling actually deletes.
Also worth knowing
Folders solve findability, not storage. If the underlying problem is that your library is 40GB and backups take all night, organizing it will not help โ you want the files somewhere other than your web server. That is a different tool, and occasionally the same one.
Try it on your own library
MediaDock adds folders to the WordPress Media Library, and with Pro it moves your files to Cloudflare R2 or any S3-compatible storage. Free version on WordPress.org.