shortn
Docs/Links

Links in detail

The four things a link can carry, and the rules on each: a slug, a title, a note and a password. One of them is optional in every case.

Four optional fields · all of them plain text except the password, which is never stored

A generated slug is seven characters drawn from abcdefghijkmnopqrstuvwxyz23456789. Lowercase only, no lookalike characters, nothing that reads ambiguously when written down or read aloud.

A custom slug has to be 3 to 32 characters of a-z, 0-9, _ and -, and must start with a letter or a digit. Anything else is rejected before storage is touched, with the reason given.

Lookups try the lowercase form first and then the raw form, so a slug created before lowercase-only was enforced still resolves. This is a courtesy to links that already existed; new custom slugs are lowercased on the way in.

Some slugs cannot be claimed because the site needs them for its own pages. The list is fixed and mirrored between the API and the slug checker, so the two can never disagree about what is available.

Asking for one returns slug reserved rather than slug taken. That difference is deliberate: someone has this and nobody can ever have this need different answers, and a caller retrying on one should not retry on the other.

A link can carry a short title and a longer note. Both are optional, both are plain text, both are stripped of markup, and both exist so a link is findable later in the table and on the reveal page.

Neither is shown to whoever opens the link. The note is only ever visible to someone looking the link up, which makes it a private label rather than a description.

A link can be created with a password of 4 to 64 characters. When it has one, the redirect is replaced by a gate: a server-rendered page asking for the word.

What that means in practice:

A gate is not encryption The destination is stored on the server in the clear. A gate decides whether to show it; it does not make it unreadable to whoever runs the server. Use it to stop a link being followed casually, not to hide where something points.

Seven days, counted from creation. Not from first use, not from last use.

You can create a link with a shorter life than seven days if you want it gone sooner. You cannot create one with a longer life and you cannot extend one afterwards. There is no renewal endpoint, and that is on purpose: a service that keeps links forever needs a way to be told to delete them, and this one has one endpoint for removal instead.

Still live
Under seven days old. Redirects, counts, reveals, all normal.
Expired
Past seven days. Stops resolving immediately. The reveal page says "expired" rather than "never existed", which is the only way to tell the two apart.
Swept
Deleted from storage some time after expiring. Invisible to every endpoint.

An expired slug is claimable again, and asking for it deletes the old record so the name is genuinely free rather than merely unreachable. You can see that distinction on the slug checker.