You need a host that gives each file an address based on the file's identity rather than its contents or filename, and that stores new uploads as versions of the same file. SteadyLink does this: every file gets one link of the form https://cdn.steadylink.io/a/ASSET_ID, and when you replace the file, that link serves the new version while older versions stay in its history.
What "permanent" should mean
A link to a file you update has to survive a few different kinds of change:
- New contents. The document, image, or installer is updated.
- A new filename. The new version is called
report-q3.pdfinstead ofreport-q2.pdf. - Reorganizing. The file moves to a different folder or gets renamed.
- Time. The link still works in a year, from an email or a printed page nobody can edit.
Many hosts handle some of these but not all. A link that includes the filename or folder path breaks when either changes. A host that gives every upload a fresh address breaks on new contents. A link that only works while you are logged in, or that expires after a set time, breaks on time.
A SteadyLink link is built from the file ID, which is assigned when the file is first uploaded and never changes. Replacing the file, renaming it, or moving it inside its bucket keeps the same ID and the same link.
Get the link
- Sign up and open the dashboard. If you have no buckets yet, one called My files is created for you.
- Choose Upload, pick the file, and choose who can open the link: Anyone with the link, or Private.
- When the upload finishes, choose Copy link.
That link is the one to share, embed, or print. You can also find it any time by opening the file in the dashboard.
From a terminal, the CLI uploads and prints the link:
steadylink upload ./report.pdf --bucket reports --folder quarterly
Update the file behind the link
In the dashboard, open the file and choose Replace, then pick the new version. You see "File replaced. Its link is unchanged." when it is done.
From the CLI:
steadylink replace reports:quarterly/report.pdf ./report-q3.pdf
Uploading a file with the same name into the same folder also adds a new version to the existing file instead of creating a copy, so a deploy script that re-uploads the same path keeps the link stable.
Two links for two jobs
Each file has two kinds of link, and both are permanent in their own way.
| Link | What it serves | Use it for |
|---|---|---|
/a/ASSET_ID | The current version, whatever it is right now | Websites, emails, QR codes, anything that should stay up to date |
/a/ASSET_ID?v=3 | Revision 3, always | Signed documents, releases, records that must not change |
The stable link changes what it serves when you replace the file. The pinned link never does, for as long as that revision is kept. Sharing both from the same file means you do not have to keep separate copies for "latest" and "as of this date".
What to expect after an update
SteadyLink switches to the new version immediately. Browsers and caches that fetched the old version in the last few minutes may keep showing it until their copy expires; the stable link is cacheable for five minutes, plus a short background refresh. There is also a brief malware scan after each upload, usually seconds, during which the link answers 423 Locked rather than serving unscanned bytes.
If you need the change to land at a set time, use a replacement request with a scheduled publish time.
When a permanent link can still stop working
A stable link only stops working when the file or access to it goes away on purpose:
- The file is deleted, or its last remaining revision is deleted.
- The bucket holding the file is deleted.
- The file is switched to private, so requests without a valid signed link are refused.
- A new version fails the malware scan, which leaves the file without a current version until you restore an earlier one.
Deleting a file or bucket is immediate and cannot be undone, so treat files that are linked from printed or sent material with care.
Private files you can still update
If the file should not be public, make it private and share signed links. Replacing a private file keeps it private, and signed links that are not pinned to a revision serve the new version. Signed links can be revoked, which takes effect immediately because private responses are never stored in shared caches. See private links.
Where people use this
- A price list or rate card linked from sales emails
- A logo that partners embed on their sites
- A user manual linked from a printed QR code
- A downloadable installer behind a website button
- A dataset or report linked from documentation
Related reading
For step-by-step guides for specific files, see how to replace an image without changing its URL and how to update a PDF without changing the link. The stable links concept page explains caching and revisions in more detail, and pricing lists what each plan includes, including the Free plan.
Questions
- How do I get a permanent link to a file?
- Upload the file to SteadyLink and copy its link. The link is built from the file ID, which is assigned once and never changes.
- Does the link change if I rename or move the file?
- No. Renaming or moving a file inside its bucket keeps its ID, its revisions, and its link.
- Can a permanent link still stop working?
- Yes, if the file or its bucket is deleted, the file is made private, or a new version fails the malware scan and no clean revision is restored.
- Can I update a private file and keep its link?
- Yes. Replacing a private file keeps it private, and signed links that are not pinned to a revision serve the new version.