{"id":361719,"date":"2026-09-02T00:53:17","date_gmt":"2026-09-02T00:53:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/unloadly-disable-unused-css-js\/"},"modified":"2026-10-04T23:08:52","modified_gmt":"2026-10-04T23:08:52","slug":"unloadly","status":"publish","type":"plugin","link":"https:\/\/ast.wordpress.org\/plugins\/unloadly\/","author":15362140,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Unloadly \u2013 Disable Unused CSS & JS","header_author":"versouq","header_description":"Disable unused plugin CSS and JS per page, dequeue leftover handles sitewide, and remove unused WordPress head links.","assets_banners_color":"0d1422","last_updated":"2026-10-04 23:08:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/versouq.com\/unloadly-disable-unused-css-js\/","header_author_uri":"https:\/\/versouq.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":217,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"babatechs","date":"2026-09-02 00:53:02","revision":3676981},"1.1.0":{"tag":"1.1.0","author":"babatechs","date":"2026-10-04 23:08:52","revision":3727903}},"upgrade_notice":{"1.1.0":"<p>Adds category and tag rules. Existing per-page selections keep working and still take priority over term rules.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3676981,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3676981,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3676981,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3676981,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3676981,"resolution":"1","location":"assets","locale":"","width":1227,"height":627},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3676981,"resolution":"2","location":"assets","locale":"","width":1222,"height":688},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3676981,"resolution":"3","location":"assets","locale":"","width":1226,"height":697}},"screenshots":{"1":"Per-page settings: in the editor, select the plugins whose CSS and JS should not load on that page.","2":"General settings: remove CSS and JS handles sitewide, and optionally remove oEmbed, REST API, and RSD links from the document head.","3":"Quick check: view source and search for the plugin folder name. This is a quick check, not a complete audit."}},"plugin_section":[],"plugin_tags":[126745,1513,247,192898,1592],"plugin_category":[54],"plugin_contributors":[133345],"plugin_business_model":[],"class_list":["post-361719","plugin","type-plugin","status-publish","hentry","plugin_tags-disable-plugins","plugin_tags-pagespeed","plugin_tags-performance","plugin_tags-unused-css","plugin_tags-website-optimization","plugin_category-security-and-spam-protection","plugin_contributors-babatechs","plugin_committers-babatechs"],"banners":{"banner":"https:\/\/ps.w.org\/unloadly\/assets\/banner-772x250.png?rev=3676981","banner_2x":"https:\/\/ps.w.org\/unloadly\/assets\/banner-1544x500.png?rev=3676981","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/unloadly\/assets\/icon-128x128.png?rev=3676981","icon_2x":"https:\/\/ps.w.org\/unloadly\/assets\/icon-256x256.png?rev=3676981","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/unloadly\/assets\/screenshot-1.png?rev=3676981","caption":"Per-page settings: in the editor, select the plugins whose CSS and JS should not load on that page."},{"src":"https:\/\/ps.w.org\/unloadly\/assets\/screenshot-2.png?rev=3676981","caption":"General settings: remove CSS and JS handles sitewide, and optionally remove oEmbed, REST API, and RSD links from the document head."},{"src":"https:\/\/ps.w.org\/unloadly\/assets\/screenshot-3.png?rev=3676981","caption":"Quick check: view source and search for the plugin folder name. This is a quick check, not a complete audit."}],"raw_content":"<!--section=description-->\n<p>Is your WordPress site slow, even with a cache plugin? One common reason is that plugins load their CSS and JavaScript files on <strong>every page<\/strong>, even on pages that never use them. A contact form plugin loads on your blog posts. WooCommerce loads on your About page. A slider loads on pages with no slider. Every extra file makes your pages heavier and slower to load.<\/p>\n\n<p><strong>Unloadly speeds up your website by stopping that waste.<\/strong> Edit a page, choose the plugins that page does not need, and their CSS and JavaScript files stop loading on that page. No coding, no hunting for script names, no complicated setup.<\/p>\n\n<p>The result is smaller pages, fewer requests, and a faster website. It also helps with warnings like \"Reduce unused JavaScript\" and \"Remove unused CSS\" in tools such as Google PageSpeed Insights and GTmetrix.<\/p>\n\n<p>Unloadly works alongside any caching or optimization plugin. It removes the files you don't need; your cache plugin serves what is left. Flush your cache after you change a rule.<\/p>\n\n<h4>Why use Unloadly?<\/h4>\n\n<ul>\n<li><strong>Speed up your WordPress site<\/strong> \u2014 Pages load faster when they only download what they use.<\/li>\n<li><strong>Disable plugins on specific pages<\/strong> \u2014 Keep a plugin active but stop it from loading on pages where it isn't needed.<\/li>\n<li><strong>Simple for beginners<\/strong> \u2014 Select plugins from a list in the page editor. No code.<\/li>\n<li><strong>Safe<\/strong> \u2014 The plugin keeps running. Only its frontend CSS and JS files are removed from the pages you choose.<\/li>\n<li><strong>Lightweight<\/strong> \u2014 Unloadly does one job and doesn't add its own cache, minification, or delay-JS features.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Per-page control<\/strong> \u2014 In the editor sidebar, select the plugins whose CSS and JS should not load on that page or post. Search the list when you have many plugins.<\/li>\n<li><strong>Category and tag rules<\/strong> \u2014 Set a rule once on a category or tag and every post in it follows. A post with its own selection always wins over its terms.<\/li>\n<li><strong>Sitewide removal<\/strong> \u2014 On Settings \u2192 Unloadly, list individual style or script handles once, and they are removed on the entire frontend.<\/li>\n<li><strong>Head cleanup<\/strong> \u2014 Optionally remove oEmbed, REST API, and RSD discovery links from <code>wp_head<\/code>.<\/li>\n<li><strong>Quick check<\/strong> \u2014 View the page source and search for the plugin folder name. If the name is gone, those files were likely not printed. This is a hint, not a full audit.<\/li>\n<li><strong>Developer hooks<\/strong> \u2014 Filters and actions are prefixed with <code>unloadly_<\/code>. See <code>includes\/Hook.php<\/code>.<\/li>\n<\/ul>\n\n<h4>How to speed up your site with Unloadly<\/h4>\n\n<ol>\n<li>Edit a page or post. In the Unloadly box, select the plugins that page doesn't need (for example WooCommerce on an About page, or a contact form plugin on every page except Contact).<\/li>\n<li>Update the page. Those plugins' CSS and JavaScript no longer load on that page.<\/li>\n<li>Optional: edit a category or tag (<strong>Posts \u2192 Categories<\/strong> or <strong>Posts \u2192 Tags<\/strong>) and select plugins there. Every post in that term inherits the rule, so you don't repeat the work. A post with its own selection ignores its term rules.<\/li>\n<li>Optional: open <strong>Settings \u2192 Unloadly<\/strong> to remove specific CSS or JS handles sitewide, and to strip discovery links from the document head.<\/li>\n<li>Clear your cache and test your page speed again.<\/li>\n<\/ol>\n\n<h4>Rule priority<\/h4>\n\n<p>For each URL Unloadly applies one list, in this order:<\/p>\n\n<ol>\n<li><strong>The post's own selection<\/strong>, when the post has at least one plugin selected.<\/li>\n<li><strong>The terms of that post<\/strong> \u2014 the combined rules of its categories and tags. A rule on a parent category also covers posts in its child categories.<\/li>\n<li><strong>Nothing per page<\/strong>, when neither is set. Sitewide handle rules still apply.<\/li>\n<\/ol>\n\n<p>Category and tag rules also apply on that term's own archive page.<\/p>\n\n<h4>Works with popular plugins<\/h4>\n\n<p>Unloadly removes assets by plugin folder and by script\/style handle. It is meant to sit beside the tools you already use, not replace them.<\/p>\n\n<ul>\n<li><strong>WooCommerce<\/strong> \u2014 Disable shop CSS and JS on pages that are not the shop, cart, or checkout.<\/li>\n<li><strong>Elementor and Divi<\/strong> \u2014 Disable builder CSS and JS on pages that don't use the builder. Leave them loaded on pages that do. Unloadly does not strip assets on Elementor editor or preview requests, so the canvas keeps its files.<\/li>\n<li><strong>Contact forms and sliders<\/strong> \u2014 Load them only on the pages where they appear.<\/li>\n<li><strong>Cache plugins<\/strong> \u2014 Change Unloadly rules, then flush the cache so visitors get the new HTML.<\/li>\n<\/ul>\n\n<p>Do not disable a plugin on a page that actually needs it.<\/p>\n\n<h4>Hooks<\/h4>\n\n<p>Developers can change post types, protected plugins, protected handles, and the disabled list for a request. Hook names are prefixed with <code>unloadly_<\/code>. See <code>includes\/Hook.php<\/code>.<\/p>\n\n<h4>Support<\/h4>\n\n<p>Need help? Open a thread on the <a href=\"https:\/\/wordpress.org\/support\/plugin\/unloadly\/\">WordPress.org support forum<\/a>, visit the <a href=\"https:\/\/versouq.com\/unloadly-disable-unused-css-js\/\">plugin page<\/a>, or email <strong>support@versouq.com<\/strong>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>unloadly<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from Plugins \u2192 Add New.<\/li>\n<li>Activate Unloadly through the Plugins screen.<\/li>\n<li>Open Settings &gt; Unloadly for sitewide options.<\/li>\n<li>Edit a page or post and use the Unloadly box to disable plugin CSS and JS for that page.<\/li>\n<li>If you use a page cache, flush it after you change rules.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20speed%20up%20my%20wordpress%20website%20by%20disabling%20plugins%20on%20certain%20pages%3F\"><h3>How do I speed up my WordPress website by disabling plugins on certain pages?<\/h3><\/dt>\n<dd><p>Install Unloadly, edit a page, and in the Unloadly box select the plugins that page doesn't need. Update the page and clear your cache. The plugin stays active, but its CSS and JavaScript files no longer load on that page, so the page loads faster.<\/p><\/dd>\n<dt id=\"why%20is%20my%20wordpress%20site%20slow%20even%20with%20a%20caching%20plugin%3F\"><h3>Why is my WordPress site slow even with a caching plugin?<\/h3><\/dt>\n<dd><p>A cache plugin makes pages quicker to deliver, but it doesn't stop plugins from adding their own CSS and JavaScript to every page. If many plugins load files on pages that don't use them, those pages stay heavy. Unloadly removes those unneeded files.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disable%20a%20plugin%20on%20specific%20pages%20without%20code%3F\"><h3>How do I disable a plugin on specific pages without code?<\/h3><\/dt>\n<dd><p>Edit the page, open the Unloadly box in the sidebar, and select the plugin. You don't need to look up script handles or write PHP. Only the plugin's frontend CSS and JS are stopped on that page; the plugin itself stays active.<\/p><\/dd>\n<dt id=\"how%20do%20i%20fix%20%22reduce%20unused%20javascript%22%20in%20pagespeed%20insights%20or%20gtmetrix%3F\"><h3>How do I fix \"Reduce unused JavaScript\" in PageSpeed Insights or GTmetrix?<\/h3><\/dt>\n<dd><p>Find which plugins add scripts to pages that don't need them, then disable those plugins on those pages from the Unloadly box. Clear your cache and test again. Unloadly removes the plugin's JavaScript from that page so the browser never downloads it.<\/p><\/dd>\n<dt id=\"how%20do%20i%20fix%20%22remove%20unused%20css%22%3F\"><h3>How do I fix \"Remove unused CSS\"?<\/h3><\/dt>\n<dd><p>The steps are the same. Select the plugins whose styles a page doesn't use, update the page, flush your cache, and re-test. Their CSS files are no longer printed on that page.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20a%20caching%20plugin%3F\"><h3>Does this replace a caching plugin?<\/h3><\/dt>\n<dd><p>No. Unloadly only removes selected CSS and JS from the page output. Use it with any page cache, and flush that cache after you change Unloadly rules.<\/p><\/dd>\n<dt id=\"will%20this%20disable%20a%20plugin%20completely%3F\"><h3>Will this disable a plugin completely?<\/h3><\/dt>\n<dd><p>No. PHP still runs. Only matching frontend CSS and JS are dequeued.<\/p><\/dd>\n<dt id=\"can%20i%20keep%20a%20plugin%27s%20assets%20on%20some%20pages%3F\"><h3>Can I keep a plugin's assets on some pages?<\/h3><\/dt>\n<dd><p>Yes. Per-page rules are stored on that page or post. Sitewide handle lists apply everywhere.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20other%20asset%20managers%3F\"><h3>How is this different from other asset managers?<\/h3><\/dt>\n<dd><p>Many asset managers list every individual script and style file on a page, which requires technical knowledge. Unloadly works at the plugin level: you choose which plugins a page doesn't need, and all of their frontend CSS and JS are removed together. Sitewide handle rules are available when you want finer control.<\/p><\/dd>\n<dt id=\"how%20do%20category%20and%20tag%20rules%20interact%20with%20page%20rules%3F\"><h3>How do category and tag rules interact with page rules?<\/h3><\/dt>\n<dd><p>A post with its own Unloadly selection uses only that selection. A post with nothing selected inherits the combined rules of its categories and tags, including rules set on a parent category.<\/p><\/dd>\n<dt id=\"a%20post%20inherits%20a%20category%20rule%20but%20needs%20that%20plugin.%20what%20do%20i%20do%3F\"><h3>A post inherits a category rule but needs that plugin. What do I do?<\/h3><\/dt>\n<dd><p>Select any plugin in that post's Unloadly box. As soon as a post has its own selection, the term rules no longer apply to it, so build the list you want for that post.<\/p><\/dd>\n<dt id=\"can%20i%20turn%20off%20term%20inheritance%3F\"><h3>Can I turn off term inheritance?<\/h3><\/dt>\n<dd><p>Yes. Return <code>false<\/code> from the <code>unloadly_supported_taxonomies<\/code> filter (pass an empty array) to hide the term fields, or use <code>unloadly_resolved_plugins_for_post<\/code> to change what a post inherits. <code>unloadly_inherit_term_ancestors<\/code> controls whether parent category rules cascade, and <code>unloadly_apply_term_rules_to_archive<\/code> controls whether term archives use them.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%2C%20elementor%2C%20or%20divi%3F\"><h3>Does it work with WooCommerce, Elementor, or Divi?<\/h3><\/dt>\n<dd><p>Yes. Disable those plugins only on pages that don't use them. Leave WooCommerce loaded on shop, cart, and checkout. Leave Elementor or Divi loaded on pages built with them.<\/p><\/dd>\n<dt id=\"how%20do%20i%20check%20that%20a%20plugin%27s%20css%20and%20js%20were%20unloaded%3F\"><h3>How do I check that a plugin's CSS and JS were unloaded?<\/h3><\/dt>\n<dd><p>View the page source and search for the plugin folder name (the directory under <code>wp-content\/plugins<\/code>). If the name is gone, those files were probably not printed. That is a quick sanity check, not a complete audit. Some plugins load from a CDN, print inline code, or use handles with no folder path, so the name might be missing even when other code from that plugin is still on the page.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><p>Open a thread on the WordPress.org support forum or email support@versouq.com.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added per-category and per-tag plugin unloading. Posts inherit the rules of their terms.<\/li>\n<li>Parent category rules cascade to child categories and to the posts filed under them.<\/li>\n<li>Term rules also apply on the term's own archive page.<\/li>\n<li>The editor box now lists the rules a post inherits and shows when its own selection overrides them.<\/li>\n<li>Added <code>unloadly_supported_taxonomies<\/code>, <code>unloadly_term_disabled_plugins<\/code>, <code>unloadly_resolved_plugins_for_post<\/code>, <code>unloadly_resolved_plugins_for_term<\/code>, <code>unloadly_inherited_plugin_details<\/code>, <code>unloadly_inherited_terms<\/code>, <code>unloadly_inherit_term_ancestors<\/code>, <code>unloadly_apply_term_rules_to_archive<\/code>, and <code>unloadly_term_saved<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Per-page plugin CSS and JS unload<\/li>\n<li>Sitewide handle dequeue<\/li>\n<li>Head discovery link cleanup<\/li>\n<li>Public action and filter hooks<\/li>\n<\/ul>","raw_excerpt":"Speed up WordPress by disabling plugin CSS and JS on pages that don&#039;t need them. Faster load time, no code needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/361719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=361719"}],"author":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/babatechs"}],"wp:attachment":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=361719"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=361719"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=361719"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=361719"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=361719"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=361719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}