Skip to main content
Back to projects

DSLF

Your links, on your own box.

Damn Small Link Forwarder is a self-hosted link shortener and link-index page. The configuration is a CSV file. There is no database, no dashboard and no account, because a redirect does not need any of them.

redirects.csv pick one

url,target,status

on the wire

GET /gh HTTP/1.1

301 Moved Permanently
location: https://github.com/you
content-length: 0

rust ·5 MB binary·under 10 MB resident·0 databases·amd64 and arm64

Run it

The image ships with example configuration, so it starts before you have written anything of your own.

docker run -p 3000:3000 \
  -v $(pwd)/redirects.csv:/app/redirects.csv \
  ghcr.io/vpetersson/dslf:latest

Write one row per link: the path, where it goes, and 301 or 302. Mount the file at runtime, or bake it into an image. Then point a domain at it. Any host that can run a container will do, because it is one process listening on one port.

The second file, if you want it

redirects.csv is the only file you need. Add link-index.yaml and the root path serves a link-index page instead of a 404.

profile:
  name: "Your Name"
  bio: "Short line about you"

theme:
  preset: mocha # mocha | macchiato | frappe | latte
  buttonStyle: glass # glass | solid | outline

Both files can be mounted at runtime, so changing a link is a file edit and a restart rather than a deploy.

What you get

Real redirects

Proper 301 and 302 responses with a Location header, so curl, scripts and link checkers follow them the way browsers do.

No database

Configuration is a CSV file and an optional YAML file. Nothing to migrate, back up, or wake up for at 3am.

No tracking

No analytics, no cookies, no third-party requests. Visitors are redirected and that is the end of it.

A link-index page

An optional landing page in place of a hosted link-in-bio service, themed with Catppuccin.

Import what you have

Pull your existing short links out of Rebrandly with a single command.

Published with an SBOM

Every release publishes a software bill of materials, so what is inside the image is a matter of record.

Apache-2.0 licensed, built in Rust. Source, issues, and images at ghcr.io/vpetersson/dslf.