Node Cleanup Module Adds Bulk Deletion Interface for Unpublished Drupal Content
Developers working with large Drupal installations often encounter accumulation of unpublished content that slows administrative workflows. The Node Cleanup module, created by Chaitanya R Dessai of Specbee and released on 24 January 2026, introduces a dedicated interface to manage and delete such content in bulk across Drupal 10 and 11 environments.
The module’s significance lies in its targeted approach to a gap in Drupal’s default content administration. While the core content listing supports filtering and individual actions, it is not optimised for large-scale cleanup operations. Node Cleanup centralises this task within a dedicated administrative path, /admin/content/node-cleanup, without modifying existing workflows.
The current release, 1.0.1, was published on 25 January 2026 with support for Drupal 10 and 11. The project is classified as feature-complete by its maintainer, indicating that future updates are expected to focus on maintenance rather than new functionality. It is not covered by Drupal’s security advisory policy, which may affect how vulnerabilities are disclosed and addressed.
According to a detailed blog post published by Specbee, the module allows administrators to filter nodes by content type and publication status, display results in a structured table, and perform batch deletion in a single action. The interface uses Drupal’s #tableselect element, presenting selectable rows with node titles, bundle information and status indicators in a familiar administrative format.
The module is designed to address common operational scenarios, including leftover content from migrations, unpublished editorial drafts and test data from staging or user acceptance testing environments. These categories of content can increase database size and introduce friction in content management when handled through standard interfaces.
From a technical perspective, Node Cleanup uses Drupal’s Entity Query API instead of direct database queries. This aligns the module with Drupal’s abstraction layer and supports maintainability across versions. Content types are loaded dynamically through the entity type manager, enabling compatibility with both default and custom bundles without additional configuration.
A safeguard in the deletion logic restricts removal strictly to unpublished nodes. Even if published content is selected in the interface, it is excluded from deletion. This constraint reduces the risk of accidental data loss and distinguishes the module from more general-purpose bulk operation tools.
The module does not introduce external dependencies and maintains a narrow functional scope. Its design prioritises administrative efficiency rather than extending Drupal’s content model or workflow system.

