{"id":7663,"date":"2024-12-11T01:08:42","date_gmt":"2024-12-11T07:08:42","guid":{"rendered":"https:\/\/infiniteuploads.com\/?p=7663"},"modified":"2026-10-26T23:22:21","modified_gmt":"2026-10-27T04:22:21","slug":"can-you-create-folders-in-your-wordpress-media-library-heres-how","status":"publish","type":"post","link":"https:\/\/infiniteuploads.com\/blog\/can-you-create-folders-in-your-wordpress-media-library-heres-how\/","title":{"rendered":"How to Create Folders in the WordPress Media Library"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><p class=\"wp-block-paragraph\">It starts small. You upload a few images, then a few hundred, and one day you need the logo from last spring. You scroll. And scroll. Forty seconds later you give up and upload it again, which is exactly how a library ends up with six copies of the same file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress doesn't have media folders. Core sorts your uploads into year and month paths on the server and shows everything in one flat grid. The <a href=\"https:\/\/make.wordpress.org\/core\/2026\/09\/wordpress-7-1-field-guide\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress 7.1 field guide<\/a> covers a new default browsing experience for the Media Library, including infinite scrolling, but it doesn't mention folders. So you add them with a plugin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-create-folders-in-the-wordpress-media-library-the-short-answer-\">How to Create Folders in the WordPress Media Library (the Short Answer)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Install a media folder plugin. These plugins make <em>virtual<\/em> folders. The folder tree lives in your database, and your files stay exactly where they were uploaded, so no URL changes and no links break. <a href=\"https:\/\/infiniteuploads.com\/features\/media-library-folders\/\">Infinite Uploads includes media folders on every plan<\/a>, and that's what I use. Here's the whole process:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install and connect a folder plugin. With Infinite Uploads, go to <strong>Plugins &gt; Add New<\/strong>, search for Infinite Uploads, then click <strong>Install Now<\/strong> and <strong>Activate<\/strong>. Connect your site from the plugin screen (the <a href=\"https:\/\/infiniteuploads.com\/docs\/getting-started\/connecting-and-configuring-infinite-uploads-plugin\/\">connect guide<\/a> walks through it). Folders switch on once you have an active plan.<\/li>\n\n\n\n<li>Open <strong>Media &gt; Library<\/strong>. A folder sidebar appears next to your files.<\/li>\n\n\n\n<li>Click <strong>Add New Folder<\/strong>, type a name like \"Blog Images\" and press <strong>Enter<\/strong>. Right-click a folder and choose <strong>Add Subfolder<\/strong> to nest one inside it.<\/li>\n\n\n\n<li>Select the files you want to move and drag them onto the folder.<\/li>\n\n\n\n<li>Click a folder before you upload, and new files land in it from the start.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The longer version is below, along with how the free options compare and what folders can't fix.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-wordpress-doesn-t-have-media-folders\">Why WordPress Doesn't Have Media Folders<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress keeps uploads in <strong>wp-content\/uploads<\/strong>, sorted by year and month. A picture you upload in August 2025 ends up at a path like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"867\" height=\"48\" src=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/file-name-in-wordpress-media-library-1.png\" alt=\"Browser address bar showing an uploaded image URL with the wp-content\/uploads\/2025\/08 path and the file name\" class=\"wp-image-9941\" srcset=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/file-name-in-wordpress-media-library-1.png 867w, https:\/\/infiniteuploads.com\/wp-content\/smush-webp\/2024\/12\/file-name-in-wordpress-media-library-1-480x27.png.webp 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 867px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Those year and month folders exist on the server only. The Media Library screen never shows them, and you can't move a file between them from the dashboard. For a small site that's fine. Once you have thousands of images, videos and PDFs, it turns into a headache fast.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You can't group files by project or topic, like \"Landing Page Assets\".<\/li>\n\n\n\n<li>Team members upload duplicates because they can't find the original.<\/li>\n\n\n\n<li>Publishing slows down while you hunt through endless thumbnails.<\/li>\n\n\n\n<li>Cleanups and migrations get messy when nobody knows what's used.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"virtual-folders-vs-physical-upload-paths\">Virtual Folders vs. Physical Upload Paths<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Virtual folders<\/strong> organize your attachment records in the WordPress interface. The file stays in its <code>wp-content\/uploads\/YYYY\/MM\/<\/code> location, so attachment IDs and public URLs don't change. Think of it like sticky notes on filing cabinets. You can rearrange the notes all day and the cabinets never move.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Physical folder tools<\/strong> move files or create real directories. That can fit a storage workflow, but it can also change URLs, responsive image data, offload rules and backups. If you go that route, test on staging first. For an established site, I stick with virtual folders.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"media-folder-plugins-compared\">Media Folder Plugins Compared<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every plugin in this table creates virtual folders, according to its own listing. The differences are in what's free and what you pay for.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Plugin<\/th><th>What you get<\/th><th>Cost<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/infiniteuploads.com\/features\/media-library-folders\/\">Infinite Uploads<\/a><\/td><td>Unlimited nested folders, drag and drop bulk moves, color coding, 8 sort options and 6 search filters, plus cloud offload and CDN delivery<\/td><td>Included on every plan, from $8.25\/mo billed yearly<\/td><\/tr><tr><td><a href=\"https:\/\/wordpress.org\/plugins\/filebird\/\" target=\"_blank\" rel=\"noreferrer noopener\">FileBird<\/a><\/td><td>Unlimited folders and subfolders for media in the free version. Pro adds sorting by file size, folder colors and more<\/td><td>Free, with a paid Pro version<\/td><\/tr><tr><td><a href=\"https:\/\/wordpress.org\/plugins\/folders\/\" target=\"_blank\" rel=\"noreferrer noopener\">Folders by Premio<\/a><\/td><td>Unlimited folders in the free version. Unlimited subfolders need Pro<\/td><td>Free, with a paid Pro version<\/td><\/tr><tr><td><a href=\"https:\/\/wordpress.org\/plugins\/real-media-library-lite\/\" target=\"_blank\" rel=\"noreferrer noopener\">Real Media Library<\/a><\/td><td>Core folder features in the Lite version. Pro adds subfolders and more<\/td><td>Free Lite, with a paid Pro version<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If all you want is folders, the free versions above work. I use Infinite Uploads because the folders come with the rest of the media setup I need, which I get to below. Whichever you pick, know that your folder structure lives in that plugin. Switch plugins later and you'll likely rebuild it by hand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"create-and-use-folders-with-infinite-uploads\">Create and Use Folders with Infinite Uploads<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1-create-your-first-folder\">Step 1: Create Your First Folder<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">With the plugin connected, go to <strong>Media &gt; Library<\/strong>. You'll see a new sidebar for creating and managing folders.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the <strong>Add New Folder<\/strong> button.<\/li>\n\n\n\n<li>Give it a descriptive name, such as \"Blog Images\" or \"Product Photos\".<\/li>\n\n\n\n<li>Press <strong>Enter<\/strong> and the folder appears in the sidebar.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/wordpress-media-library-screenshot-showing-image-thumbnails-and-test-text-on-chalkboard.gif\" alt=\"Animated screenshot of the WordPress Media Library with the folder sidebar, creating a new folder next to the image thumbnails\" class=\"wp-image-11375\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Need subfolders? Right-click a folder and choose <strong>Add Subfolder<\/strong>. A \"Blog Images\" folder with one subfolder per blog category is a good example. Infinite Uploads has no nesting limit, but I'd stop at two levels. Deeper trees get harder to browse than the flat library you started with.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/media-library-interface-displaying-multiple-image-thumbnails-with-test-text-visible.gif\" alt=\"Animated screenshot of the Media Library folder sidebar showing a folder with a subfolder inside it\" class=\"wp-image-11376\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2-move-your-existing-files\">Step 2: Move Your Existing Files<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now the cleanup. Select the files you want, one or a few thousand, and drag them onto a folder in a single move. Bulk selection works in both the grid and list views of the Media Library.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/media-library-interface-screenshot-with-test-image-folders-and-elementor-ai-button.gif\" alt=\"Animated screenshot of dragging an image from the Media Library grid onto a folder in the sidebar\" class=\"wp-image-11377\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Remember, these are virtual folders. The file itself never moves on your server, and your file URLs never change, so links in your posts and pages keep working. According to the <a href=\"https:\/\/infiniteuploads.com\/blog\/media-library-folders-sorting-and-enhanced-search-are-now-built-into-infinite-uploads\/\">release post<\/a>, the folder structure is stored separately from your files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step-3-upload-straight-into-a-folder\">Step 3: Upload Straight into a Folder<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click the folder you want in the sidebar.<\/li>\n\n\n\n<li>Click <strong>Upload<\/strong>, or drag your files into the library.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/infiniteuploads.com\/wp-content\/uploads\/2024\/12\/wordpress-media-library-screenshot-displaying-test-images-and-file-upload-options.gif\" alt=\"Animated screenshot of uploading files into a selected folder in the WordPress Media Library\" class=\"wp-image-11381\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">That keeps the library tidy from day one, so you skip the move-it-later chore. You can also color code folders, and sort by name, title, author, date added, date modified, size or file type. The <a href=\"https:\/\/infiniteuploads.com\/features\/media-library-folders\/\">media library folders page<\/a> lists every sort option and search filter. Folders also show up in the media picker of page builders like Elementor, Divi and Bricks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pros-and-cons-of-media-library-folders\">Pros and Cons of Media Library Folders<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Folders are worth it. I'd still rather you know the tradeoffs up front.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pro:<\/strong> Files take seconds to find, so people stop uploading duplicates.<\/li>\n\n\n\n<li><strong>Pro:<\/strong> Teams stay consistent when they share one folder layout.<\/li>\n\n\n\n<li><strong>Pro:<\/strong> Virtual folders leave your URLs alone, so migrating a site doesn't break them.<\/li>\n\n\n\n<li><strong>Con:<\/strong> You need a plugin, because WordPress has no folders built in.<\/li>\n\n\n\n<li><strong>Con:<\/strong> Folders are virtual. They organize the dashboard, not the files on your server.<\/li>\n\n\n\n<li><strong>Con:<\/strong> Folder data stays with the plugin that made it, so changing plugins usually means rebuilding.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"best-practices-for-media-organization\">Best Practices for Media Organization<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Start early.<\/strong> It's far easier to sort 200 files than 20,000.<\/li>\n\n\n\n<li><strong>Name folders so they explain themselves.<\/strong> \"Homepage Images\" beats \"Misc\" and \"Folder1\" every time.<\/li>\n\n\n\n<li><strong>Keep it to one or two levels.<\/strong> Deep trees slow people down.<\/li>\n\n\n\n<li><strong>Train your team.<\/strong> A folder system only works if everyone uses it.<\/li>\n\n\n\n<li><strong>Clean up unused files carefully.<\/strong> A tool like Media Cleaner can flag them, but it can also flag files used in page builder data or theme settings. On an Infinite Uploads business plan, Media Cleanup checks post content, page builders, settings, and public pages, and adds a Usage column to the Media Library so you can see where a file is used before you touch it. Back up and test on staging before you delete anything.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Name your files before you upload them, too. <em>sydney-skyline-at-sunset.jpg<\/em> tells search engines something. <em>IMG0001.jpg<\/em> doesn't. Fill in the alt text for every image. And compress before you upload, because big files slow your pages down. Our guide on <a href=\"https:\/\/infiniteuploads.com\/blog\/how-to-compress-and-optimize-images-for-wordpress\/\">compressing and optimizing images for WordPress<\/a> covers it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"folders-fix-finding-files-not-where-they-live\">Folders Fix Finding Files, Not Where They Live<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I've set up folders for plenty of clients, and the pattern repeats. The library is finally tidy, and then the host emails about disk space, or the site is slow because every image and PDF still comes off the same server. Folders organize the library. They don't move one byte off your hosting plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That's why Infinite Uploads covers three jobs in one plugin: Offload, Optimize and Organize. Offloading is like moving boxes out of your office and into a warehouse that ships straight to your customers. Your server handles WordPress, and the CDN handles your media.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Offload.<\/strong> <a href=\"https:\/\/infiniteuploads.com\/features\/offload-media-library\/\">Simple Sync copies your Media Library to the cloud<\/a> and serves it through a CDN with 119+ points of presence, so your hosting storage and server load stop growing with every upload.<\/li>\n\n\n\n<li><strong>Optimize.<\/strong> <a href=\"https:\/\/infiniteuploads.com\/features\/image-optimization\/\">Image Optimization<\/a> serves smaller AVIF and WebP versions from the CDN and leaves your originals untouched. It's included on Business plans only.<\/li>\n\n\n\n<li><strong>Organize.<\/strong> The folders, sorting and search in this guide come with every plan, and there's no separate folder plugin to buy.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you already pay for a folder plugin and a separate offload plugin, that's two plugins doing what one subscription does. The same plan covers unlimited WordPress sites, with no per-site licensing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plans start at $8.25\/mo billed yearly ($99\/yr) for 25 GB of storage and 50 GB of CDN bandwidth, or $11\/mo month-to-month. Image Optimization starts on the Business plan at $24\/mo billed yearly ($29\/mo month-to-month) for 100 GB of storage and 200 GB of bandwidth. You can try any plan free for 7 days, so you can see your own library in folders before you decide.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/infiniteuploads.com\/pricing\/\">See Infinite Uploads pricing<\/a><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group iu-topic-cluster is-layout-constrained wp-block-group-is-layout-constrained\">\n\n<h3 class=\"wp-block-heading\" id=\"related-wordpress-media-library-guides\">Related WordPress Media Library guides<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/infiniteuploads.com\/blog\/ultimate-guide-to-wordpress-media-management\/\">Complete WordPress Media Library management guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/infiniteuploads.com\/features\/media-library-folders\/\">Infinite Uploads Media Library folders<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/infiniteuploads.com\/blog\/the-best-guide-to-replace-media-upload-in-wordpress-effortlessly\/\">How to replace WordPress media without breaking URLs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/infiniteuploads.com\/blog\/master-wp-cli-for-wordpress-media-management\/\">Manage WordPress media with WP-CLI<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/infiniteuploads.com\/blog\/wordpress-image-sizes-are-eating-your-server-storage\/\">Why WordPress image sizes eat your storage<\/a><\/li>\n<\/ul>\n\n<\/div>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>It starts small. You upload a few images, then a few hundred, and one day you need the logo from last spring. You scroll. And scroll. Forty seconds later you give up and upload it again, which is exactly how a library ends up with six copies of the same file. WordPress doesn&#8217;t have media [&hellip;]<\/p>\n","protected":false},"author":3916,"featured_media":9972,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wds_primary_category":14,"footnotes":""},"categories":[14],"tags":[],"class_list":["post-7663","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/posts\/7663","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/users\/3916"}],"replies":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/comments?post=7663"}],"version-history":[{"count":4,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/posts\/7663\/revisions"}],"predecessor-version":[{"id":14446,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/posts\/7663\/revisions\/14446"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/media\/9972"}],"wp:attachment":[{"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/media?parent=7663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/categories?post=7663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infiniteuploads.com\/api\/wp\/v2\/tags?post=7663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}