Developer-first Video Subtitle Storage

Host VTT, SRT, and Transcript Sidecars That Load Before the Player Needs Them

Store video subtitles, captions, and transcripts with global CDN delivery.

Subtitles are sidecar files, and the whole game with sidecars is that they must be reachable, correctly typed, and CORS-clean the instant a player asks for them. files.link hosts your caption and transcript files — WebVTT, SRT, ASS/SSA, TTML — on permanent CDN URLs so a <track> element resolves them from a nearby edge in milliseconds, well before a viewer toggles captions on.

The typical setup is to keep each video's tracks beside or near the video itself and reference them by URL. In HTML5 you add a <track kind='subtitles' srclang='en' src='https://.../en.vtt'> per language; in an HLS workflow you list the WebVTT subtitle renditions in the master playlist. Because the browser's TextTrack fetch is subject to the same-origin and CORS rules, serving subtitles from a CDN URL that returns proper headers avoids the classic 'captions silently don't appear' bug you hit when a file is served with the wrong content type or no cross-origin headers — files.link serves .vtt and .srt with correct content types so the player parses them instead of choking.

A note worth knowing: HTML5 <track> wants WebVTT specifically, so if your authoring tool emits SRT, convert to VTT before relying on native browser captions (a one-line ffmpeg or library conversion); SRT is fine for players that accept it and for archival. Multi-language is just multiple files: upload en.vtt, es.vtt, ja.vtt and so on, and organize them in a folder per video so the track set for a title stays together.

The upload is three calls — POST /v1/files/{folderId} for a presigned URL and id, PUT the text bytes, then POST /v1/files/confirm-upload with {ids:[...]} — and the auth header is your raw API key, so a captioning pipeline that produces tracks from a transcription job can publish all languages in one batch. Subtitle files are tiny, which makes the CDN matter more, not less: the latency floor is dominated by the round trip, so serving from the nearest edge is what keeps captions appearing in lockstep with playback for a viewer on the other side of the world.

Compared to a plain storage bucket, you don't bolt on a separate CDN or fight CORS config; compared to letting YouTube own your captions, you keep portable files you can attach to any player on any site. Billing is prepaid credits against real usage, which suits the high-file-count, low-byte profile of caption libraries.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

Amazon S3Cloudflare R2YouTubefiles.link
Built-in CDN delivery for sidecars
Correct content-type for .vtt/.srt
CORS-friendly for <track> fetches
Permanent per-track URLs
Folder-per-video organization
Prepaid credits billing

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Storing Video Subtitles

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Storing Video Subtitles

Frequently Asked Questions

Which subtitle formats can I host?
Any — WebVTT, SRT, ASS/SSA, TTML and more. files.link stores any file and serves .vtt and .srt with correct content types so players parse them rather than treating them as plain text.
My captions don't show in the browser. What's wrong?
Two common causes: HTML5 <track> requires WebVTT (convert SRT to VTT first), and the file must be served with proper content type and CORS headers. files.link serves both correctly from a CDN URL, which resolves the silent-failure case.
How do I host multiple languages for one video?
Upload one file per language (en.vtt, es.vtt, ja.vtt) into a folder for that video, then add a <track> per language pointing at each CDN URL. Keeping them in one folder keeps the track set together.
Will tiny subtitle files still load fast enough?
Yes — and the CDN matters more for small files because the round trip dominates. Serving from the nearest edge keeps captions appearing in sync with playback worldwide.
Can I publish all tracks from a transcription pipeline at once?
Yes. Run POST /v1/files/{folderId} and PUT for each track, then a single POST /v1/files/confirm-upload with all the ids. Authenticate with your raw API key.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal