---
title: Short links and aliases
description: Implicit creation on publish/upload, custom vanity aliases, and why deleting a link deletes more than a url.
---

# Short links and aliases

## Every publish or upload creates one

You don't call a separate tool to get a short link — publishing a page
with `sherpage_publish` or uploading a file with `store_upload_file` /
`store_upload_content` creates its `sl.shebang.pro` short link at the
same time, automatically. There's no unwrapped state to opt out of.

## Custom aliases

By default a link's address uses a generated code, but you can set a
memorable vanity path instead:

```
link_set_alias({ code_or_id: "<code>", alias: "launch" })
```

That makes the resource reachable at `sl.shebang.pro/launch` as well.
Pass `alias: null` to clear a custom alias and fall back to the
generated code.

## Deleting a link deletes the resource too

This is the sharpest edge in the whole platform, so it's said here at
full volume, not softened: **`link_delete` does not just remove a
`sl.shebang.pro` address.** It permanently deletes the underlying
sherpage page or sherserve object and its storage along with the link.
There is no "unwrap but keep the file" operation — once a link is gone,
so is whatever it pointed at.

```
link_delete({ code_or_id: "<code>", confirm: "<code>" })
```

`confirm` must exactly match `code_or_id`, which is the only guard
against deleting the wrong resource by accident. Think of `link_delete`
as "delete this page/file," not "remove this shortcut."

## Next

[Access](/sherlink/access).
