# Disk and Database Usage Widget

> Shows how much space the uploads folder and the database take, recalculated once a day, so you notice a full hosting plan early.

- Type: PHP
- Runs: Admin only
- Category: [Dashboard](https://wpide.com/library/category/dashboard/)
- Tags: dashboard, widget, storage
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/disk-usage-dashboard-widget/

## Code

```php
add_action( 'wp_dashboard_setup', function () {
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    wp_add_dashboard_widget( 'wpide_disk_usage', 'Disk Usage', function () {
        global $wpdb;

        $usage = get_transient( 'wpide_disk_usage' );

        if ( false === $usage ) {
            $uploads = wp_get_upload_dir();
            $bytes   = 0;

            if ( is_dir( $uploads['basedir'] ) ) {
                $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $uploads['basedir'], FilesystemIterator::SKIP_DOTS ) );
                foreach ( $files as $file ) {
                    $bytes += $file->isFile() ? $file->getSize() : 0;
                }
            }

            $database = (float) $wpdb->get_var( $wpdb->prepare(
                'SELECT SUM(data_length + index_length) FROM information_schema.TABLES WHERE table_schema = %s',
                DB_NAME
            ) );

            $usage = array( 'uploads' => $bytes, 'database' => $database, 'time' => time() );
            set_transient( 'wpide_disk_usage', $usage, DAY_IN_SECONDS );
        }

        printf(
            '<p>Uploads folder: <strong>%1$s</strong><br>Database: <strong>%2$s</strong></p><p style="color:#646970">Calculated %3$s ago.</p>',
            esc_html( size_format( $usage['uploads'], 1 ) ),
            esc_html( size_format( $usage['database'], 1 ) ),
            esc_html( human_time_diff( $usage['time'], time() ) )
        );
    } );
} );
```

## Notes

The first calculation can take a few seconds on sites with many uploads.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Disk and Database Usage Widget" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
