Adamic Support

Cloudflare R2 Bucket Manager

R2 Bucket Manager is a full-featured, self-hosted web application for managing Cloudflare R2 buckets and objects. Version 3.1.0 adds powerful organization features including Bucket Tagging for custom categorization, Color Tags for visual identification, and 30% faster page loads through build optimization. Built on v3.0's foundation of S3 Import, Metrics Dashboard, Webhooks, and Audit Logging. Uses React 19, TypeScript, and deployed on Cloudflare's global edge network.

🎯 Live Demo | 🐳 Docker Hub | 📦 GitHub | 📖 Wiki

🚀 New in v3.1.0

🏷️ Bucket Tagging - Organize and Search with Custom Tags

Organize your buckets with custom text tags and quickly find them using powerful search capabilities.

Add multiple tags per bucket with an intuitive tag picker integrated in both List and Grid views. The new "Search" navigation tab includes two sub-tabs: Files for cross-bucket file search and Tags for bucket discovery by tag.

Search modes include Match All (find buckets with ALL selected tags) and Match Any (find buckets with ANY selected tags). Tags are stored in D1 database with 5-minute backend caching for optimized performance.

Use Cases:

  • 📁 Project Organization - Tag buckets by project, team, or environment
  • 🔍 Quick Discovery - Find related buckets instantly with tag search
  • 📊 Categorization - Group buckets by type, status, or custom criteria

🎨 Bucket Color Tags - Visual Organization

Assign colors to buckets for quick visual identification with a 27-color palette organized in a 6-column grid.

One-click color assignment via the palette icon on any bucket. Works in both Grid and List views with persistent storage in D1 database. 5-minute client-side caching with automatic invalidation on mutations.

Use Cases:

  • 🔴 Priority Marking - Use red for critical, green for stable
  • 🟡 Status Indication - Color-code by deployment stage
  • 🔵 Team Identification - Different colors for different teams

⚡ Build Optimization - 30% Bundle Size Reduction

Significantly improved initial page load performance through code splitting and lazy loading.

Vite manual chunks split vendor libraries for better caching: vendor-react (11 KB gzip), vendor-icons (1.6 KB gzip), and vendor-utils including jszip, jose, spark-md5, react-dropzone (20 KB gzip).

Tab-based feature components now load on-demand: MetricsDashboard, S3ImportPanel, JobHistory, and WebhookManager. Main bundle reduced from 473KB to 332KB (-30%), with ~60KB of feature code loading only when needed.

✨ Key Features from v3.0.0

🚀 S3 Import [BETA] - Migrate from Amazon S3 to R2

Seamlessly migrate data from Amazon S3, Google Cloud Storage, or any S3-compatible storage provider to Cloudflare R2 using the Super Slurper API.

Three-panel interface: Create new migrations with credential validation, monitor active jobs with real-time progress tracking, and review completed migration history. The smart credentials form includes AWS region selector with validation, and you can abort migrations in progress when needed.

Use Cases:

  • 📦 Cloud Migration - Move existing S3 data to Cloudflare R2 for cost savings
  • 🔄 Multi-Cloud Strategy - Sync data between providers
  • 🚚 Data Transfer - Bulk import from external S3 sources

Note: S3 Import is currently in BETA and should be tested before production use. Large migrations (>100GB) may take several hours.

📊 Metrics Dashboard - R2 Analytics & Usage Statistics

Comprehensive analytics for your R2 storage with interactive charts and per-bucket breakdowns.

Summary cards track total requests with trend indicators, success rate percentage, total storage with formatted units, and total object count across all buckets.

Visualizations include line charts showing request volume trends over time with per-bucket breakdown, bar charts displaying storage usage per bucket, and sortable tables with detailed per-bucket metrics including requests (success/failed), success rate percentage, storage size, and object count.

Time range selector lets you view metrics for 24 Hours, 7 Days, or 30 Days. Performance optimized with 2-minute client-side cache using Cloudflare's GraphQL Analytics API.

Use Cases:

  • 📈 Usage Monitoring - Track R2 usage trends and patterns
  • 💰 Cost Analysis - Identify high-traffic buckets for optimization
  • 🔍 Performance Insights - Monitor success rates and error patterns
  • 📊 Capacity Planning - Track storage growth over time

🔔 Webhooks - HTTP Notifications for R2 Events

Configure HTTP endpoints to receive real-time notifications for bucket and file operations.

Event types include file events (upload, download, delete), bucket events (create, delete), and job events (completed, failed). Configure multiple webhooks per event type with flexible event subscriptions.

HMAC-SHA256 signature support for payload verification with custom secret keys per webhook. Signature included in X-Webhook-Signature header for secure payload validation.

Create, edit, delete, and test webhook configurations directly from the UI. Enable/disable webhooks without deletion, test with sample payloads, and view delivery status.

Use Cases:

  • 🔔 Notifications - Alert external systems on file operations
  • 🔄 Automation - Trigger workflows on bucket events
  • 📝 Logging - Send events to external logging services
  • 🔌 Integration - Connect R2 to Slack, Discord, or custom apps

📋 Audit Logging - Complete Individual Action Tracking

Extended Job History system tracks all user operations, not just bulk actions.

Tracks every file action (upload, download, delete, rename, move, copy), all folder operations (create, delete, rename, move, copy), and bucket changes (create, delete, rename). View both bulk jobs and individual actions in one unified Job History UI.

Advanced filtering with grouped operation dropdown organized by category (Bulk, File, Folder, Bucket, AI). Filter by status (success/failed), bucket name, user email, and date range with detailed metadata for each action.

Use Cases:

  • 🔐 Compliance - Full audit trail for regulatory requirements
  • 🔍 Forensics - Investigate what happened to specific files
  • 👥 User Tracking - Monitor individual user actions
  • 📊 Usage Analytics - Understand how R2 is being used

🗃️ Automated Database Migrations

Simplified database schema management with automatic upgrade detection and one-click migrations.

Smart detection automatically identifies when database schema is outdated and displays an upgrade banner. Click "Upgrade Now" to apply pending migrations instantly without manual SQL execution. Safe migrations use CREATE TABLE IF NOT EXISTS to prevent data loss, with version tracking via new schema_version table.

🧭 Bucket Filter Bar - Enhanced Bucket Discovery

Client-side filtering for the main bucket list with multiple filter dimensions.

Filter by bucket name with instant real-time search. Apply size filters with preset ranges (Small <10 MB, Medium 10-100 MB, Large >100 MB) or set custom minimum and maximum sizes. Date filters include preset ranges (Last 7 Days, This Month, This Year) or custom start and end dates.

Active filter badges provide visual indicators for applied filters, with filter stats showing result count (e.g., "Showing 5 of 12 buckets"). One-click "Clear Filters" button resets all filters instantly.

⚡ Client-Side API Caching - 50-80% Faster Page Loads

Intelligent caching system dramatically improves performance on repeat visits.

Bucket list and file list (first page only) cached with 5-minute TTL (300 seconds). Cache is used on initial load for instant rendering but bypassed on user-triggered refreshes. Automatic cache invalidation on mutations (create/delete/rename) ensures data stays fresh.

Exponential backoff retry provides resilient error handling with automatic retry for rate limits (429) and service errors (503/504). Retry pattern: 2s → 4s → 8s (max 3 attempts).

Performance gains include 50-80% faster page loads on repeat visits, reduced API calls to Cloudflare, better resilience to transient errors, and improved user experience with instant data display.

🪵 Centralized Logger Service

Replaced all direct console.* calls with a proper logging abstraction. Environment-aware logging outputs all logs to console in development, but only warn/error levels in production (configurable). Log levels include debug, info, warn, error with configurable minimum level and context tagging (e.g., [API], [FileGrid], [Auth]). Extensible design ready for future remote logging integration like Sentry or LogRocket.

🪣 Additional v3.0.0 Enhancements

  • Bucket Item Count Display - See the number of files/objects in each bucket at a glance in both grid and list views with zero API overhead
  • Persistent View Preference - Your preferred view mode (Grid/List) now persists between sessions via local storage for both buckets and files
  • Dependency Updates - Critical updates including wrangler 4.53.0, vite 7.2.6, and lucide-react 0.556.0
  • UI Refinements - Improved button colors, toolbar spacing, and accessibility enhancements

📊 Updated Statistics (v3.1.0)

Metricv3.0.0v3.1.0
Version3.0.03.1.0
React19.2.119.2.1
TypeScript5.9.35.9.3
Vite7.2.77.2.7
API Endpoints45+52+
Bundle Size~473 kB~332 kB (-30%)
New FeaturesS3 Import, Metrics, WebhooksBucket Tagging, Color Tags, Build Optimization

✨ Key Features from v2.0.0

📋 Job History Tracking

Complete audit trail for all bulk operations. Track downloads, uploads, deletions, moves, and copies with detailed event timelines and real-time progress monitoring.

Filterable Job List views all jobs with status badges and filters by status (success, failed, running), operation type, bucket name, date range, and job ID. Sort by date, item count, or error count.

Event Timeline Modal displays detailed progress history for each job showing milestones, timestamps, processed items, and contextual details. Identify failed items with detailed error messages.

🤖 AI Search Integration

Connect R2 buckets to Cloudflare AI Search for semantic search and RAG capabilities.

Compatibility Analysis shows which files in your bucket can be indexed by AI Search with a visual donut chart showing indexable vs non-indexable file ratios. Supports MD, TXT, JSON, YAML, and code files up to 4MB each.

Dual search modes: AI-powered search with LLM-generated answers based on your data, or semantic search for document retrieval without AI generation. Instance management lets you list, sync, and query AI Search instances directly from the UI.

🛡️ API Rate Limiting

Tiered protection for API endpoints prevents abuse while ensuring fair resource access. Per-user enforcement using authenticated email with automatic bypass for localhost development.

TierOperationsLimitPeriod
READList, Search, Signed URLs100 req60s
WRITEUpload, Rename, Move30 req60s
DELETERemove Files/Buckets10 req60s

Standard 429 responses include Retry-After, X-RateLimit-Limit, X-RateLimit-Period, and X-RateLimit-Tier headers for retry guidance.

✓ Upload Integrity Verification

MD5 checksum verification ensures uploaded files match stored files exactly. Prevents silent upload failures and data corruption for both single-chunk and multi-chunk uploads.

Client-side MD5 calculation during upload with server-side verification against R2 ETag. Visual feedback shows "Verifying..." status followed by "✓ Verified" confirmation upon successful verification.

🏗️ Core Features (Foundation)

Built on a solid foundation of comprehensive R2 storage management capabilities:

Bucket Management

  • Create, rename, delete buckets
  • Bulk bucket deletion with force option
  • Multi-bucket download as ZIP
  • Hide system buckets from UI
  • Bucket filtering by name, size, date
  • Item count display in grid/list views

File Operations

  • Chunked uploads (10MB, up to 500MB)
  • MD5 integrity verification
  • Bulk downloads as ZIP
  • Rename, move, copy files
  • Shareable signed URLs

Folder Management

  • Create, rename, delete folders
  • Copy/move folders between buckets
  • Hierarchical navigation
  • Breadcrumb navigation

Search & Filtering

  • Cross-bucket search
  • Real-time client-side filtering
  • Filter by extension, size, date
  • Type filters (All/Files/Folders)

Security Features

  • Zero Trust authentication
  • GitHub SSO via Cloudflare Access
  • JWT validation on every request
  • HMAC-SHA256 signed URLs
  • Tiered API rate limiting

Deployment Options

  • Cloudflare Workers (global edge)
  • Docker (multi-arch)
  • Local development mode
  • Workers.dev subdomain

📦 Installation & Upgrade

v3.0.0 includes automated database migrations. For new installations, follow the Installation Guide. For existing users, the UI will display an upgrade banner when database updates are needed.

Docker Installation:

docker pull writenotenow/r2-bucket-manager:latest

Cloudflare Workers Deployment:

npm run build && npx wrangler deploy

Create D1 Database (if not already created):

npx wrangler d1 create r2-manager-metadata

Automated Migration (Recommended):

After deploying v3.0.0, visit your R2 Manager UI. If migrations are needed, you'll see a banner at the top. Click "Upgrade Now" to apply migrations automatically.

Manual Migration (Optional):

npx wrangler d1 execute r2-manager-metadata --remote --file=worker/schema.sql

Note: Database features (Job History, Webhooks, Audit Logging) are optional. If you don't configure the D1 database, the app will function normally without these features.

🔧 Technical Stack

Frontend: React, TypeScript (strict mode), Vite, modern responsive UI with light/dark theme support.

Backend: Cloudflare Workers Runtime API, R2 storage with S3-compatible API, D1 serverless database for metadata and tracking, Cloudflare Access Zero Trust authentication with JWT validation, GraphQL Analytics API for metrics.

📚 Documentation & Resources

Comprehensive documentation available on GitHub (repository, wiki, release notes, changelog), Docker Hub (multi-architecture images with health checks).

Wiki Guides:

🚧 Roadmap

Recently Released (v3.1.0): Bucket Tagging with custom text tags and tag search, Bucket Color Tags for visual organization, 30% bundle size reduction through Vite chunking and lazy loading, and automated database migrations for seamless upgrades.

Planned Features: File versioning to track and restore previous versions, offline upload queue with resumable uploads using service workers, advanced webhook features (custom headers, retry logic, delivery logs), and metrics export to CSV/JSON.

🔗 Links

GitHub Release v3.1.0 | Full Changelog | Live Demo