Supabase does not provide a universal one-click “export bucket as ZIP” command. It provides ways to download objects; the ZIP is then created by your computer, an S3-compatible client, or application code. For a few files, use Storage → Files in the Dashboard. For repeatable or large exports, use the Supabase CLI or an S3-compatible tool such as rclone, Cyberduck, or AWS CLI. For a product feature or a private asynchronous export, build a server-side ZIP job with the JavaScript SDK and, where appropriate, signed URLs.
What each method actually does
A ZIP archive is a packaging step, not a special Supabase Storage export format. Supabase stores objects in buckets and supplies download APIs and transfer protocols. Your local operating system, client utility, or application must collect those downloaded bytes and write the .zip file.
As an Amazon Associate I earn from qualifying purchases.
The right route depends on four decisions: how many objects you need, whether the job must be repeatable, how access to the bucket is controlled, and where the archive should be assembled.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →| Method | Best for | Access approach | Where the ZIP is created |
|---|---|---|---|
| Dashboard selection | A small, occasional set | Your logged-in Dashboard session | Your workstation |
| Supabase CLI | Repeatable local or CI exports | CLI project credentials and policies | Your workstation or CI runner |
| S3-compatible client | Large collections | Supabase S3 access key and secret | Local machine or transfer server |
| JavaScript SDK loop | Filtering, progress UI, or an in-app export | Authenticated SDK requests | Browser, application server, or archive stream |
| Signed-URL archive job | Private, asynchronous downloads | Short-lived signed URLs | Worker, temporary storage, or response stream |
Supabase’s “Download Objects” documentation says that downloading a large number of objects with an S3-compatible tool such as rclone or Cyberduck is significantly more efficient than downloading files individually. It does not publish a universal file-count limit, ZIP-size limit, or performance benchmark, so choose based on your workload and test your own transfer path.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
1. Select files in the Dashboard and ZIP them locally
This is the simplest graphical workflow when the set is small and you do not need an automated export.
Steps
- Open your project in the Supabase Dashboard.
- Go to Storage → Files and open the bucket containing the objects.
- Select the files you need. If objects are organized in folders, open each relevant folder and select its contents as supported by the Dashboard.
- Use the Dashboard’s download action to download the selected files or the individual files it exposes. Supabase’s official guide explicitly documents downloading individual files from the Dashboard.
- On your workstation, place the downloaded files in one directory and create an archive with your operating system’s ZIP tool. On macOS or Linux, for example, select the directory in Finder or a file manager and choose the system compression action; from a shell, an equivalent command is
zip -r export.zip export-directory/.
When this method stops being practical
The Dashboard route becomes tedious when there are many objects, nested paths, repeated downloads, or a need to resume a failed transfer. Supabase recommends bulk tools for large collections. It is also easy to lose the original object path if you download files into a flat directory, so preserve folders or rename deliberately before creating the archive.
2. Copy objects with the Supabase CLI, then archive the directory
The CLI is a good middle ground: it is scriptable, works well in local automation and CI, and avoids writing application code for ZIP creation. The official Supabase guide identifies the CLI as a supported way to list and copy Storage objects.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Workflow
- Install a current Supabase CLI version and authenticate it using the method appropriate for your environment.
- Link the CLI to the project that owns the bucket. Run the CLI’s project-link command and verify that the target project is correct before copying data.
- List the bucket and the relevant prefix with the CLI’s
supabase storagelisting command. Confirm the object paths, especially if your bucket contains similarly named files in different folders. - Use the CLI’s
supabase storagecopy command to copy the selected objects into a local export directory. For a whole prefix, use the recursive option exposed by your installed CLI version; runsupabase storage --helpif flags differ in your release. - Archive the completed directory with your platform’s ZIP utility, such as
zip -r bucket-export.zip bucket-export/.
Keep the listing and copy steps in a script if you will repeat the export. Write the project reference, bucket name, prefix, destination directory, and date into your job logs, but do not print access tokens or secrets. A failed copy should leave you with a way to rerun only the missing paths rather than starting blindly from scratch.
CLI trade-offs
- Advantages: repeatability, shell scripting, CI compatibility, and easy integration with local archive tools.
- Limitations: you must manage credentials on the runner, and the ZIP is still a separate step that you design and operate.
3. Use the Supabase S3-compatible endpoint with rclone, Cyberduck, or AWS CLI
Supabase exposes an S3-compatible protocol for Storage. This is generally the strongest option for a large collection because mature transfer tools can enumerate and copy many objects more efficiently than individual Dashboard downloads.
Enable S3 access and create credentials
- In the Supabase Dashboard, open Storage → Configuration → S3 and enable the S3 protocol for the project.
- Generate an access key and secret in that configuration area. The official guide warns that the secret is shown once when generated, so save it in a secure password manager or secret store immediately.
- Configure rclone, Cyberduck, or AWS CLI as an S3-compatible connection. Use the endpoint, region details, access key, and secret shown by Supabase rather than assuming an AWS endpoint.
- Test the connection by listing the bucket and a small prefix before starting a full transfer.
- Copy the required bucket or prefix to local or server storage with the client’s recursive or sync operation.
- Create the ZIP after the transfer, or pipe the downloaded files into an archive job on the same server if you have designed a streaming workflow.
Why this is preferable for bulk work
Listing and transfer are handled by tools designed for object storage, with options for retries, parallelism, include/exclude filters, and resumable operation. Exact flags differ among rclone, Cyberduck, and AWS CLI, so use the help for the client and version you installed. Do not confuse an S3 access key with a browser user’s JWT: treat the key and secret as server-side credentials and never embed them in front-end JavaScript.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
4. Download through the JavaScript SDK and build a ZIP stream
Use the JavaScript SDK when the export is part of your application: for example, a user chooses files by date, receives progress feedback, or needs a filtered archive. The basic loop is to enumerate object paths, call supabase.storage.from(bucket).download(path) for each path, and pass each returned Blob or ArrayBuffer to a ZIP library or server-side archive stream.
Application flow
- Obtain the list of paths from your own database, an object listing, or the user’s selection. Keep the full path, not only the basename.
- For each path, call the SDK’s
download(path)method from the authorized Supabase client. - Check the returned error before adding data to the archive. Record the failed path so the user can retry or receive a useful report.
- Add the Blob or its ArrayBuffer to a ZIP library under a sanitized archive name. Preserve folders when that helps users understand the files.
- Generate or stream the archive to the requester. On a server, prefer a streaming archive so the process does not retain every object in memory.
A simplified browser-side pattern looks like this:
const { data, error } = await supabase.storage.from(bucket).download(path);
if (error) throw error;
zip.file(path, await data.arrayBuffer());
The API reference documents download for private-bucket files. Public buckets can instead expose an asset through getPublicUrl, but a public URL changes the security model; it is not merely a different spelling of an authenticated download.
Design for real-world exports
- Limit concurrency rather than launching one request for every object at once.
- Stream or spool large objects to temporary disk on the server instead of holding all bytes in browser or process memory.
- Show progress based on completed paths and handle transient failures with bounded retries.
- Resolve duplicate basenames explicitly. Two objects named
invoices/2025/report.pdfandinvoices/2026/report.pdfcan coexist safely if their directory paths are retained; flattening them toreport.pdfcreates a collision.
5. Create signed URLs and let a worker assemble the archive
This pattern separates a user request from the work of collecting private files. Your application authorizes the request, creates short-lived URLs, and sends the paths to a worker. The worker fetches each URL and writes a ZIP to temporary storage or directly to the response.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Signed-URL process
- Authenticate the requester and check that the requester is allowed to export every requested path.
- For one object, call
createSignedUrl(path, expiresIn, { download: true }). For several paths, usecreateSignedUrls(paths, expiresIn). - Choose an expiration long enough for the worker to finish the archive, with margin for retries, but short enough to limit the exposure window.
- Pass the signed URLs to a worker over a protected queue or internal API. The worker fetches the bytes, adds them to a ZIP stream, and writes the result to temporary storage or returns it to the requester.
- Delete the temporary archive after its retention period and avoid logging complete signed URLs, because possession of a valid URL grants access until it expires.
Supabase documents signed URLs as fixed-duration shares and documents both the single-path and multi-path APIs. The ZIP assembly, queue, cleanup policy, and download endpoint remain your application’s responsibility. This approach is useful when the archive may take minutes, when the web request should not hold open a database connection, or when you do not want a worker to carry a broad service credential.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Private buckets, public buckets, and RLS
Do not make a sensitive bucket public just to simplify ZIP creation. Supabase documents two private-bucket download patterns: an authorized download request carrying the user’s JWT, or a signed URL valid for a limited time. Row Level Security (RLS) policies determine whether the authenticated request may access the object.
Free tools Windows power users keep installed
One-click scans. No signup required.
Public buckets bypass access control for retrieving and serving files. Anyone who obtains an asset URL can access that asset, so public URLs are appropriate only when the files are intentionally public. For private data, keep the bucket private and enforce authorization before generating each download or signed URL.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Operational safeguards for large or sensitive archives
- Bound memory: stream files into the archive or process a limited number concurrently.
- Preserve identity: retain object paths or apply a documented, sanitized naming scheme.
- Handle collisions: never silently overwrite duplicate archive names.
- Make retries safe: record completed paths and retry only failed transfers where possible.
- Protect credentials: keep S3 secrets, service credentials, and signed URLs out of browser bundles and ordinary logs.
- Set retention: remove temporary ZIPs and worker files after the requester has had a reasonable download window.
A ZIP is not a complete Supabase backup
Supabase states that file metadata is stored separately from file bytes in the storage.buckets and storage.objects database tables. A ZIP made from downloaded objects therefore contains the file contents, not a complete project backup. For disaster recovery or migration, retain the corresponding database and Storage metadata backup, plus the bucket and policy configuration required to recreate access behavior.
Troubleshooting common failures
The Dashboard download is too slow or unwieldy
Switch to the CLI for a scripted local export or to an S3-compatible client for a large collection. The Dashboard is intended for straightforward individual downloads, not high-volume transfer orchestration.
A private download returns an authorization error
Check that the user’s JWT is present and that RLS permits the requested object. If the export is asynchronous, generate a signed URL only after authorization and verify that it has not expired before the worker fetches it.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →The ZIP contains missing or overwritten files
Compare the archive manifest with the original object-path list. Flattened basenames commonly collide; include directory paths or apply deterministic disambiguation. Also record per-object errors instead of treating a partially completed archive as successful.
The worker runs out of memory
Replace an all-in-memory implementation with bounded concurrency, temporary-file spooling, and a streaming ZIP writer. The exact safe concurrency depends on object sizes and worker resources; Supabase does not publish a universal ZIP or object-count threshold.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

