Overview
Discover what makes Slash powerful
Slash is a self‑hosted bookmark and link‑sharing service that transforms arbitrary URLs into concise, human‑readable short links of the form `s/shortcut`. From a developer standpoint, it functions as both a URL shortener and a lightweight knowledge‑base that can be exposed via RESTful APIs, Webhooks, or an embeddable browser extension. The application is intentionally minimalistic in its core to keep the attack surface small while still offering a rich set of analytics, tagging, and collection features that can be leveraged by internal tooling or external services.
Short‑link CRUD
Tagging & Collections
Analytics
Browser Extension API
Overview
Slash is a self‑hosted bookmark and link‑sharing service that transforms arbitrary URLs into concise, human‑readable short links of the form s/shortcut. From a developer standpoint, it functions as both a URL shortener and a lightweight knowledge‑base that can be exposed via RESTful APIs, Webhooks, or an embeddable browser extension. The application is intentionally minimalistic in its core to keep the attack surface small while still offering a rich set of analytics, tagging, and collection features that can be leveraged by internal tooling or external services.
Technical Stack & Architecture
Slash is written in Go and follows a micro‑service‑style architecture packaged as a single binary. The backend exposes a JSON API over HTTPS, using the standard net/http library combined with Gorilla Mux for routing. Data persistence is handled by PostgreSQL, accessed through the pgx driver, which stores link records, user accounts, tags, collections, and analytics logs. The application also ships a lightweight front‑end built with React (Vite) that consumes the same API, enabling a clear separation between client and server logic. Docker images are provided for quick deployment; the container runs as a non‑root user and mounts a persistent volume at /var/opt/slash for database files.
Core Capabilities
- Short‑link CRUD – Create, read, update, and delete shortcuts via
/api/v1/shortcuts. Each shortcut can be scoped to a user or shared publicly. - Tagging & Collections – Attach arbitrary tags (
s/shortcut?tag=docs) and bundle shortcuts into collections that can be shared with a URL or exported as JSON. - Analytics – Every redirect is logged; the API exposes
/api/v1/analytics/{shortcut}to retrieve click counts, referrers, and timestamps. These metrics can be consumed by Grafana or Prometheus exporters. - Browser Extension API – The Chrome/Firefox extension communicates with the backend over a local HTTPS endpoint, allowing instant lookup of shortcuts from the address bar.
- Webhooks – Developers can register a webhook URL that receives POST payloads on shortcut creation or deletion, enabling integration with CI/CD pipelines or chatops.
Deployment & Infrastructure
Slash is designed for container‑native environments but can run on any Linux host. The Docker image pulls from docker.io/yourselfhosted/slash and exposes port 5231 by default. For production, the recommended stack includes:
- A reverse proxy (NGINX or Traefik) for TLS termination and HTTP/2.
- PostgreSQL in a separate container or managed database service, with connection pooling via PgBouncer for high concurrency.
- Optional Redis cache if the analytics endpoint is heavily queried, although the current implementation uses in‑memory caching for simplicity.
Horizontal scaling is straightforward: multiple Slash instances can share the same PostgreSQL database, and a load balancer will distribute traffic. Since the API is stateless, scaling out can be automated with Kubernetes deployments or Docker Compose overrides.
Integration & Extensibility
Slash exposes a fully documented REST API (OpenAPI 3.0 spec available in the repo) that can be consumed by any language. The plugin model is minimal; developers can extend functionality by:
- Writing custom middleware in Go and rebuilding the binary.
- Hooking into webhooks to trigger external services (e.g., Slack notifications on new shortcuts).
- Using the browser extension’s messaging API to inject shortcuts into other web applications. The open‑source license (MIT) allows for internal customization without licensing constraints.
Developer Experience
Configuration is file‑based (config.yaml) and environment variable‑driven, making it easy to integrate with CI/CD pipelines. The documentation is organized into sections for getting started, API reference, and extension setup, with clear Markdown links. Community support is active via Discord, where developers can ask questions and propose feature requests. The codebase follows standard Go conventions, making it approachable for contributors.
Use Cases
- Internal Knowledge Base – Teams can quickly create and share internal URLs (documentation, CI dashboards) without exposing full links.
- Personal Productivity – Developers can map frequently visited sites to mnemonic shortcuts and embed them in their editor or terminal.
- API‑First Bookmark Service – Build a custom front‑end (e.g., mobile app) that consumes Slash’s API for a tailored user experience.
- Analytics & Monitoring – Use the built‑in click tracking to monitor link usage across a corporate intranet.
Advantages
Slash offers a lightweight, self‑hosted alternative to commercial link shorteners (Bitly, TinyURL) with full control over data and compliance. Its Go implementation delivers low latency and high concurrency, while PostgreSQL provides ACID guarantees for link records. The open‑source nature eliminates vendor lock‑in, and the MIT license allows unrestricted use in proprietary projects. Compared to heavier bookmark managers, Slash’s focus on short links and analytics keeps the codebase lean, resulting in faster deployments and easier maintenance.
Open SourceReady to get started?
Join the community and start self-hosting Slash today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
WebThings Gateway
Self‑hosted smart home hub for privacy and control
Rustypaste
Minimal file upload and pastebin service in Rust
OpenSearch
Enterprise‑grade search and observability for unstructured data
BigTree CMS
Extensible PHP/MySQL CMS for effortless content creation
Websurfx
Fast, privacy‑first meta search engine in Rust

MediaGoblin
Open source, decentralized media hosting platform
