“Download all as ZIP,”
as a service.

Send a list of URLs. Your users get one download link — however many files, however large.

20 GB free every month. No credit card.

Live demo · a real Cloud job100 URLs · 277 MB
  • gallery/DSC_0001.jpg2.7 MB
  • gallery/DSC_0002.jpg3.6 MB
  • gallery/DSC_0003.jpg3.3 MB
  • gallery/DSC_0004.jpg2.4 MB
  • gallery/DSC_0005.jpg3.6 MB
  • gallery/DSC_0006.jpg2.2 MB
  • gallery/DSC_0007.jpg2.0 MB
  • gallery/DSC_0008.jpg3.2 MB
  • gallery/DSC_0009.jpg3.0 MB
  • gallery/DSC_0010.jpg3.1 MB
  • gallery/DSC_0011.jpg2.2 MB
  • gallery/DSC_0012.jpg3.0 MB
  • gallery/DSC_0013.jpg2.7 MB
  • gallery/DSC_0014.jpg2.5 MB
  • gallery/DSC_0015.jpg2.4 MB
  • gallery/DSC_0016.jpg3.0 MB
  • gallery/DSC_0017.jpg3.3 MB
  • gallery/DSC_0018.jpg2.4 MB
  • gallery/DSC_0019.jpg3.1 MB
  • gallery/DSC_0020.jpg3.3 MB
  • gallery/DSC_0021.jpg2.0 MB
  • gallery/DSC_0022.jpg1.8 MB
  • gallery/DSC_0023.jpg3.2 MB
  • gallery/DSC_0024.jpg3.2 MB
  • gallery/DSC_0025.jpg2.7 MB
  • gallery/DSC_0026.jpg3.2 MB
  • gallery/DSC_0027.jpg2.9 MB
  • gallery/DSC_0028.jpg3.5 MB
  • gallery/DSC_0029.jpg2.3 MB
  • gallery/DSC_0030.jpg2.1 MB
  • gallery/DSC_0031.jpg3.0 MB
  • gallery/DSC_0032.jpg2.2 MB
  • gallery/DSC_0033.jpg3.1 MB
  • gallery/DSC_0034.jpg3.1 MB
  • gallery/DSC_0035.jpg3.2 MB
  • gallery/DSC_0036.jpg2.4 MB
  • gallery/DSC_0037.jpg2.3 MB
  • gallery/DSC_0038.jpg2.2 MB
  • gallery/DSC_0039.jpg2.4 MB
  • gallery/DSC_0040.jpg3.2 MB
  • gallery/DSC_0041.jpg3.2 MB
  • gallery/DSC_0042.jpg2.9 MB
  • gallery/DSC_0043.jpg3.2 MB
  • gallery/DSC_0044.jpg2.2 MB
  • gallery/DSC_0045.jpg1.9 MB
  • gallery/DSC_0046.jpg1.7 MB
  • gallery/DSC_0047.jpg3.0 MB
  • gallery/DSC_0048.jpg3.5 MB
  • gallery/DSC_0049.jpg3.2 MB
  • gallery/DSC_0050.jpg3.2 MB
  • gallery/DSC_0051.jpg3.3 MB
  • gallery/DSC_0052.jpg2.1 MB
  • gallery/DSC_0053.jpg1.5 MB
  • gallery/DSC_0054.jpg3.2 MB
  • gallery/DSC_0055.jpg3.0 MB
  • gallery/DSC_0056.jpg3.0 MB
  • gallery/DSC_0057.jpg3.1 MB
  • gallery/DSC_0058.jpg3.1 MB
  • gallery/DSC_0059.jpg2.7 MB
  • gallery/DSC_0060.jpg1.9 MB
  • gallery/DSC_0061.jpg2.1 MB
  • gallery/DSC_0062.jpg3.0 MB
  • gallery/DSC_0063.jpg3.2 MB
  • gallery/DSC_0064.jpg3.1 MB
  • gallery/DSC_0065.jpg3.2 MB
  • gallery/DSC_0066.jpg3.1 MB
  • gallery/DSC_0067.jpg1.5 MB
  • gallery/DSC_0068.jpg2.4 MB
  • gallery/DSC_0069.jpg2.7 MB
  • gallery/DSC_0070.jpg3.2 MB
  • gallery/DSC_0071.jpg3.5 MB
  • gallery/DSC_0072.jpg3.2 MB
  • gallery/DSC_0073.jpg3.0 MB
  • gallery/DSC_0074.jpg2.7 MB
  • gallery/DSC_0075.jpg2.3 MB
  • gallery/DSC_0076.jpg1.7 MB
  • gallery/DSC_0077.jpg3.0 MB
  • gallery/DSC_0078.jpg2.9 MB
  • gallery/DSC_0079.jpg3.5 MB
  • gallery/DSC_0080.jpg3.3 MB
  • gallery/DSC_0081.jpg2.2 MB
  • gallery/DSC_0082.jpg2.4 MB
  • gallery/DSC_0083.jpg2.3 MB
  • gallery/DSC_0084.jpg2.5 MB
  • gallery/DSC_0085.jpg3.1 MB
  • gallery/DSC_0086.jpg3.2 MB
  • gallery/DSC_0087.jpg3.0 MB
  • gallery/DSC_0088.jpg2.3 MB
  • gallery/DSC_0089.jpg3.3 MB
  • gallery/DSC_0090.jpg2.6 MB
  • gallery/DSC_0091.jpg2.2 MB
  • gallery/DSC_0092.jpg2.7 MB
  • gallery/DSC_0093.jpg3.1 MB
  • gallery/DSC_0094.jpg3.4 MB
  • gallery/DSC_0095.jpg2.4 MB
  • gallery/DSC_0096.jpg2.9 MB
  • gallery/DSC_0097.jpg3.2 MB
  • gallery/DSC_0098.jpg2.1 MB
  • gallery/DSC_0099.jpg2.0 MB
  • gallery/DSC_0100.jpg3.1 MB

Integration

Your first ZIP in five minutes.

No SDK and no client library. One POST from the server code you already have, and a signed link you hand to your user.

curl https://api.eazip.io/jobs \
  -H "X-API-Key: $EAZIP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "files": [
          { "url": "https://…/report.pdf" },
          { "url": "https://…/photos.zip" }
        ] }'
{ "success": true, "job_id": "550e8400-e29b-41d4-a716-446655440000" }
curl https://api.eazip.io/jobs/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: $EAZIP_API_KEY"
{ "job": { "status": "completed",
           "download_url": "https://api.eazip.io/download/eyJ…",
           "expires_at": "2026-09-03T10:00:00Z" } }

Rather not poll? Point a webhook at your endpoint instead.Server API quickstart →Webhooks →

What you stop building

The export button is easy. The rest isn’t.

Every team that ships a bulk download rebuilds the same six things, then maintains them.

ZIP64 and the 4 GB compatibility swampZIP64 always on, splitting handled for you
Archives too big to fit in memoryAny size — the archive is never held in memory
Flaky source URLs and half-finished jobsFailed files are retried, and you decide what happens if one still fails
Temp files and a cleanup cronStorage, retention, and deletion included
Paying egress on every re-downloadSigned-URL delivery with no egress charge
In-browser zipping that dies on memory, CORS, or reloadA drop-in download UI — the one above — that survives a page reload

Where “Download all” gets hard

Photo delivery and client galleries

A shoot is 800 files and 40 GB. The client clicks once, gets one link, and can pick it up again tomorrow on hotel wifi — no “your download is being prepared” email.

Client portals and document collection

Attachment bundles, invoice exports, audit archives. The request every B2B customer eventually files, without a queue and a cleanup cron in your app.

DAM and brand asset libraries

The team selects 400 RAW files across folders and gets one archive. Zero egress on delivery is what makes the math work at that size.

Capabilities

Build

ZIP64 by default

Multi-archive splitting with your chosen split size

Stored and stream modes

Explicit filenames and guaranteed order

Deliver

Expiring signed URLs

Interrupted downloads pick up where they left off

No egress fees

Per-plan retention windows

Operate

Completion and failure webhooks

Dashboard with job history

Per-file error detail

Automatic cleanup

Control

Origin and source-host allowlists

Publishable keys safe for frontends

Hard quota caps

Optional overage — disable it to cap your bill

Built in production

We run our own file-sharing product on it

Eazip started as the export layer for our own file-sharing service and still carries that traffic every day. The engine has been zipping real customer archives since long before this page existed.

9,000+jobs run
14,000+archives built
7.6M+files zipped
100 TB+archived volume

Pricing

Start free. No surprise bills.

Free is hard-capped: no card, no invoice. On paid plans, switch overage off and the bill stops at the subscription price.

Free

$0/mo

Evaluate the API end to end.

Stream
20 GB/mo
Stored
100 GB-days/mo
Retention
1 day
Files per job
100
Max total per job
5 GB
Start free

Starter

Popular
$9/mo

Your first production export.

Stream
500 GB/mo
Stored
3,000 GB-days/mo
Retention
7 days
Files per job
1,000
Max total per job
25 GB
Start Starter

Pro

$29/mo

Export is a core workflow.

Stream
3 TB/mo
Stored
20,000 GB-days/mo
Retention
60 days
Files per job
5,000
Max total per job
100 GB
Start Pro

Scale

$99/mo

High volume, large archives.

Stream
20 TB/mo
Stored
75,000 GB-days/mo
Retention
90 days
Files per job
20,000
Max total per job
500 GB
Start Scale

Pay-as-you-go on paid plans: stream $0.004/GB · stored $0.002/GB-day — optional. Switch it off and jobs stop at the quota instead.

Public Apps can cap size per session — so a publishable key in your frontend has a provable billing ceiling.

More volume, custom retention, or an SLA? support@eazip.io or ping us on Discord.

Before you sign up

What’s the difference between stream and stored?

Stream builds the ZIP while the user downloads it and keeps no archive. Stored builds the archive once, retains it for your plan window, and is better when the same ZIP may be downloaded more than once.

What happens when I hit the free quota?

The job is blocked. Free accounts are hard-capped: no overage, no card on file, and no invoice. Paid plans can also disable overage to cap the bill at the subscription price.

Can I call Eazip from a browser without exposing a secret?

Yes. Browser integrations use a publishable key scoped by a Public App. It restricts allowed origins, source hosts, delivery modes, file counts, and job size. Secret API keys stay on your server.

Can I pass S3 or R2 presigned URLs?

Yes. Short-lived presigned URLs are the recommended way to let Eazip read private objects without exposing bucket credentials.

When is the open-source SDK enough on its own?

When the archive fits comfortably in a browser tab and every source already sends CORS headers, the SDK can zip it locally in the user’s browser. Cloud takes over when the job is too large for a tab, too slow to hold a page open, needs to survive a reload, or has to be downloaded again later.

Ship the export button today.

20 GB/mo free · no credit card · hard-capped.

Just want to try the open-source SDK first? npm i @eazip/react · Eazip.js