Game Asset Hosting
Game Asset Hosting From Your Build Pipeline
Host game sprites, audio, and binary assets on a global CDN. Upload via REST API from your build pipeline.
Web and downloadable games live or die on asset delivery: the first scene shouldn't stall while a sprite atlas trickles in, and a patch shouldn't force players to re-download the whole bundle. files.link is the CDN origin your build pipeline targets — not a game portal, but a plain REST endpoint you call from a post-build step. The flow fits CI naturally: after your Unity, Godot, or Phaser build emits its assets, a script runs the three-call upload (POST /v1/files/{folderId} returns {success, urls:[{url,id,...}]}; PUT each asset to its presigned URL; POST /v1/files/confirm-upload with {ids:[...]}), captures the returned CDN URLs, and writes them into your asset manifest or remote-config JSON.
At runtime the game pulls from the nearest edge instead of your origin. Concrete pipelines map cleanly. Unity Addressables: build your content catalog and bundles, upload the .bundle files and catalog_*.json, then set the Addressables RemoteLoadPath to the files.link CDN URLs so the engine streams content from the edge. Phaser/PixiJS: upload your texture atlases (the packed PNG plus the JSON frame data), audio sprites, and tilemaps, and point your preload() loader at the CDN URLs.
Godot: upload exported .pck/.zip packs or individual resources and load them with ProjectSettings/load_resource_pack against the hosted URL. Because files.link serves the exact bytes you upload with correct content-types, binary formats — WebGL .wasm and .data, compressed .br/.gz bundles, .ogg/.mp3 audio, .glb models — all download cleanly via curl on the first try, which matters when you're debugging a loader in CI.
Versioning is up to you and works either way: ship immutable filenames per build (atlas-7f3a.png) so CDN caches never serve stale content and old clients keep working, or overwrite in place and let cache TTLs expire. Public assets get permanent URLs; premium DLC or unreleased content can sit in private files behind signed URLs so a leaked manifest path doesn't hand out paid content.
Billing is prepaid credits debited by storage and delivery — crucially there are no per-play or per-download fees, so a game that suddenly gets a hundred thousand sessions costs bandwidth, not a punitive per-user surcharge, and you can cap storage in the dashboard. You can also host the playable build itself: upload the WebGL/HTML5 output (individually or as a ZIP) and reference it from your index.html, or hand the link to a portal that accepts external hosting.
Benefits With No Complexity
Global CDN delivery
Edge-cached worldwide
Signed-URL security
What You Get
Unlimited files
Unlimited storage
Public + Private storage
CDN ready links
Prepaid credits
More coming soon
How files.link Works
1. Upload
2. Copy
3. Use Anywhere
Why Developers Choose files.link
A Better Way to Store & Deliver Files
| itch.io hosting | AWS S3 | files.link | |
|---|---|---|---|
| REST API for build-pipeline uploads | |||
| Global CDN delivery included | |||
| Public + private (signed-URL) assets | |||
| Correct content-types for binary bundles | |||
| Prepaid credits (no per-play/download fee) |
Calculate Your Needs
Storage
Egress
CDN Bandwidth
Host Game Assets
- Global CDN delivery
- Edge-cached worldwide
- Signed-URL security
- Unlimited files
- Unlimited storage
- Public + Private storage
- No subscription — prepaid credits keep spend predictable