Download official Windows ISOs directly from Microsoft's CDN. Web app + CLI tool. No account, no ads, no browser required.
Find a file
Shekhar Vaidya c6d8615cf1 feat: two-layer in-memory caching for backend (closes #12)
Reduces Microsoft API traffic from thousands/day to ~50-100/day,
eliminating the 715-123130 rate-limit block under real traffic.

1. Singleflight (golang.org/x/sync/singleflight) — wraps all Microsoft
   fetches so 500 concurrent cache misses collapse into 1 API hit.

2. SKU info cache — 7-day TTL keyed by product_id. Language lists are
   stable; no need to hit Microsoft on every product page load.

3. Download link cache — dynamic TTL keyed by product_id:sku_id. Expiry
   is derived from the signed URL's `se` query param minus 30min buffer,
   so we never serve an expired signed URL.

4. Negative response caching — 60s TTL for 429 / 715-123130 failures.
   Prevents thundering herd from retries worsening an existing block.
   Only stored when no stale data is available to fall back on.

5. Dynamic TTL — parses `se` (signed expiry) from Microsoft CDN URL:
   TTL = (se - now) - 30min. Falls back to 22h if unparseable.

6. Stale-on-failure — if a refresh fails (rate-limited or transient),
   the expired cache entry is served temporarily. Applies to both
   /proxy (download links) and /evallinks (eval ISOs).

7. Jitter — ±5min random offset on all TTLs prevents synchronised
   mass-expiry spikes when many entries are warmed at the same time.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 22:41:58 +05:30
backend feat: two-layer in-memory caching for backend (closes #12) 2026-05-18 22:41:58 +05:30
cloudflare-worker feat: route Microsoft API calls through Cloudflare Worker to avoid IP blocks 2026-05-18 12:01:03 +05:30
frontend fix(seo): audit and fix SEO across all pages 2026-05-18 22:14:52 +05:30
.gitignore fix: remove go.sum from ignore list 2026-04-10 20:33:36 +05:30
CLAUDE.md chore: add CLAUDE.md with project context and implementation backlog 2026-05-18 18:32:18 +05:30
issues.md docs: update issue draft for inactive product fetches 2026-04-11 13:09:46 +05:30
LICENSE feat: initial release — Windows ISO Downloader v3 2026-04-10 20:15:46 +05:30
msdls_v3.py Implement inactive product state, restore backend tracker limits, and add dedicated catalog error UI panel 2026-04-11 13:01:56 +05:30
README.md docs: update README for eval ISOs feature 2026-05-18 22:18:02 +05:30

windows-iso-downloader

A clean, open-source tool for obtaining official Windows ISO files directly from Microsoft's CDN — without a Windows machine, the Media Creation Tool, or browser restrictions.

Live: msdl.tech-latest.com · By: TechLatest

License Stars


What it does

MSDL replicates the session flow that Microsoft uses to serve ISO download links — identical to the approach used by Rufus/Fido. You get the exact same signed CDN URL Microsoft would give you, just without the browser requirement.

  • Direct Microsoft CDN links — no proxying of actual file data
  • 38 languages per consumer release
  • ARM64 + x64 + x86 support
  • Windows Server 20162025 and Windows 11 Enterprise evaluation ISOs
  • No account, no browser lock, no ads, no tracking
  • Consumer links expire in 24 hours (Microsoft's standard behaviour, not a limitation)

Screenshots

Home All Releases
Home page showing featured Windows releases Products listing page with search
Product detail — language selector Product detail — download links
Product detail page with language dropdown Download links with expiry warning

Project Structure

windows-iso-downloader/
├── frontend/            # React 19 + TypeScript + Vite + Tailwind v4
├── backend/             # Go proxy server (recommended for production)
├── cloudflare-worker/   # Optional CF Worker for distributed IP routing
└── README.md

How It Works

Browser → Backend → (CF Worker) → Microsoft API → Signed CDN URL
                          ↓
          1. Register session (Microsoft tracking endpoint)
          2. Parse MDT fingerprint script
          3. Fetch SKU list (available languages)
          4. Fetch signed CDN download URL

The flow mirrors Fido.ps1 by Pete Batard — the same script bundled with Rufus.

Outbound requests to Microsoft are optionally routed through a Cloudflare Worker (cloudflare-worker/worker.js). This distributes requests across Cloudflare's global edge IPs instead of a single server IP, preventing Microsoft's rate-limit block (error 715-123130) under high traffic. The Worker is opt-in via environment variables — omit them to go direct to Microsoft.


Running Locally

Backend (Go)

cd backend
go run main.go
# Runs on http://localhost:3002

Frontend

cd frontend
npm install
npm run dev
# Runs on http://localhost:5173

Create frontend/.env.local:

VITE_API_URL=http://localhost:3002

Deploy cloudflare-worker/worker.js to Cloudflare Workers, then set these on the backend:

CF_WORKER_URL=https://your-worker.your-name.workers.dev
CF_WORKER_SECRET=your-secret   # must match the CF_WORKER_SECRET secret set in the Worker's settings

Omit both to go direct to Microsoft (fine for local development and low-traffic self-hosting).


API Reference

GET /skuinfo?product_id=<id>

Returns available languages for a product.

{
  "Skus": [
    {
      "Id": "0x0409",
      "Language": "en-US",
      "LocalizedLanguage": "English (United States)"
    }
  ]
}

GET /proxy?product_id=<id>&sku_id=<sku>

Returns signed download links from Microsoft's CDN.

{
  "ProductDownloadOptions": [
    {
      "Uri": "https://software.download.prss.microsoft.com/...",
      "Architecture": "x64"
    }
  ]
}

Returns direct CDN links for evaluation ISOs (Server/Enterprise). Links are resolved from Microsoft's Eval Center fwlink redirects and cached for 24 hours.

Valid slugs: server-2025, server-2022, server-2019, server-2016, win11-ent

{
  "links": [
    { "arch": "x64", "lang": "en-us", "url": "https://software-static.download.prss.microsoft.com/..." },
    { "arch": "x64", "lang": "fr-fr", "url": "https://software-static.download.prss.microsoft.com/..." }
  ]
}

Supported Products

Consumer releases

Product ID Architecture
Windows 11 25H2 3262 x64
Windows 11 25H2 3265 ARM64
Windows 11 25H2 (updated) 3321 x64
Windows 11 25H2 (updated) 3324 ARM64
Windows 11 24H2 3113 x64
Windows 11 24H2 3131 ARM64
Windows 10 22H2 2618 x64 / x86
Windows 10 22H2 Home China 2378 x64
Windows 8.1 52 x64 / x86
Windows 8.1 Single Language 48 x64 / x86

Evaluation editions (Server & Enterprise)

180-day trial ISOs sourced directly from Microsoft's Eval Center CDN. No registration required.

Product Slug Architecture
Windows Server 2025 server-2025 x64
Windows Server 2022 server-2022 x64
Windows Server 2019 server-2019 x64
Windows Server 2016 server-2016 x64
Windows 11 Enterprise win11-ent x64

Tech Stack

Frontend (frontend/)

Framework React 19 + TypeScript
Build tool Vite 8
Styling Tailwind CSS v4
Animation Motion (Framer Motion v12)
UI primitives Radix UI
Toast Sonner
Font Geist
Router React Router v7

Backend (backend/)

Language Go 1.22+
HTTP net/http (stdlib, no framework)
Session cache sync.RWMutex in-memory · 15 min TTL
UUID github.com/google/uuid
MDT parsing regexp (stdlib)

Deployment

Recommended setup:

Component Platform
Frontend Cloudflare Pages / Vercel (static)
Backend VPS (Hetzner, DigitalOcean, Linode, etc.)
Outbound proxy Cloudflare Worker (optional, recommended for public instances)

⚠️ Deploy the Go backend to a standard VPS, not serverless platforms. The Cloudflare Worker is used only as an outbound proxy for Microsoft API calls — the backend itself must be a long-running process with session state.


Contributing

Pull requests welcome. To add a new consumer Windows release:

  1. Find the product ID on www.microsoft.com/software-download-connector/api/
  2. Add it to frontend/public/data/products.json (name, archs, badge, related, active)
  3. Update the product table in this README

To add a new evaluation edition:

  1. Find the fwlink URL on microsoft.com/en-us/evalcenter/download-*
  2. Add the slug and fwlink to the evalProducts map in backend/main.go
  3. Add the product config to frontend/src/data/evalProducts.ts
  4. Update the eval table in this README

Disclaimer

This project is not affiliated with, endorsed by, or sponsored by Microsoft Corporation. Windows is a registered trademark of Microsoft Corporation. All ISO files are served directly from Microsoft's official CDN — this project does not host any files.


License

MIT © TechLatest