LittleLink

The lightest self-hosted Linktree alternative — 100+ branded buttons, dark/light themes, and zero JavaScript required.

3Kstars
1.5Kforks
MIT License
HTML

LittleLink is a self-hosted, open-source alternative to Linktree that lets you build a fast, accessible link-in-bio page using nothing but HTML and CSS. With more than 100 community-maintained branded buttons covering everything from GitHub and YouTube to Patreon and Bluesky, you can launch a fully styled personal page in minutes without touching a framework or running a build tool.

The project achieves perfect PageSpeed scores on performance, accessibility, best practices, and SEO because it deliberately avoids JavaScript. Theming is pure CSS — choose auto, light, or dark in a single HTML attribute, and all buttons automatically adapt with inverse strokes for low-contrast brand colors. Every deployment is a single static folder that works on GitHub Pages, Cloudflare Workers, Vercel, Netlify, DigitalOcean, AWS Amplify, or self-hosted Nginx via Docker.

LittleLink is built around a community contribution model. The visual Button Builder at builder.littlelink.io generates accessible HTML and CSS for custom buttons with automatic WCAG contrast checking. An overflow of niche services lives in LittleLink Extended, keeping the core repository focused on widely-recognized brands. A GitHub Actions CI workflow enforces contrast ratio standards on every PR, making accessibility a first-class concern at the code-review level.

What You Get

  • 100+ Branded Buttons - Pre-built, visually consistent buttons for platforms including GitHub, YouTube, Instagram, Spotify, TikTok, Bluesky, Patreon, Discord, and Fathom, each with SVG icons sized for 24px clarity and per-brand color variables.
  • CSS Variable Theming - A modular --button-text, --button-background, and --button-border CSS variable system that automatically adapts all 100+ branded buttons to light, dark, or system-preference auto themes without any JavaScript.
  • WCAG Accessibility Enforcement - A GitHub Actions CI workflow runs a Bash-based WCAG contrast ratio checker on every PR that touches brands.css, automatically failing submissions whose button colors fall below the 4.5:1 minimum and recommending inverse strokes where needed.
  • Visual Button Builder - An external tool at builder.littlelink.io that provides a live preview of button styles, runs contrast ratio checks in the browser, and generates copy-ready HTML and CSS code for both the index.html and brands.css files.
  • One-Click Multi-Platform Deployments - Pre-configured deploy buttons for Cloudflare Workers (via wrangler.toml), DigitalOcean App Platform, Vercel, Netlify, and AWS Amplify, each wired directly to the GitHub repo for instant fork-and-deploy workflows.
  • Docker Support - An official docker/compose.yaml and docker/Dockerfile that serve the static site through Nginx with gzip compression, 7-day asset caching, and Docker log forwarding, exposing the page on port 8080.
  • LittleLink Extended - A companion community repository that holds niche service buttons (homelab tools, RSS readers, event platforms, regional apps) so the core repository stays focused on mainstream brands.
  • Figma Design Template - A Figma Community file for visually planning and designing your link page layout before editing HTML, with drag-and-drop components matching the live button styles.
  • Inverse Stroke System - An automatic CSS stroke mechanism that adds a #000000 or #ffffff border to brand buttons whose background color lacks sufficient contrast against the page background in either theme, maintaining visibility without altering brand colors.
  • Privacy Page Included - A pre-built privacy.html template with the same styling as the main page, giving your link-in-bio a complete privacy policy page without additional setup.

Common Use Cases

  • Creator link-in-bio replacement - A YouTube creator forks LittleLink, swaps in their avatar and links for YouTube, Patreon, Twitch, and Spotify, and deploys to Cloudflare Workers in under ten minutes, replacing a Linktree subscription with a page they fully own on their domain.
  • Developer portfolio hub - A developer hosts LittleLink on GitHub Pages at no cost to serve as a single landing page linking to their GitHub profile, personal blog, LinkedIn, open-source projects, and donation channels, with a 100/100 PageSpeed score.
  • Small business contact page - A local business deploys LittleLink via Netlify to consolidate their Google Maps listing, WhatsApp contact, booking calendar, Instagram, and store link into one fast, mobile-friendly page without paying for a website builder.
  • Homelab self-hoster - A homelab enthusiast runs LittleLink in Docker on a home server behind a reverse proxy, using LittleLink Extended buttons for Proxmox, Home Assistant, and Nextcloud alongside standard social links, keeping everything self-contained on local infrastructure.

Under The Hood

Architecture LittleLink is an intentionally monolithic static site with no templating layer, build pipeline, or runtime. All content lives in a single index.html, layout and typography are in style.css, accessibility resets are in reset.css, and every branded button style is defined in brands.css using a consistent CSS variable pattern. The only meaningful architectural abstraction is the CSS variable system — --button-text, --button-background, and --button-border — which decouples brand color definitions from button base styles and enables the auto/light/dark theming to work without any JavaScript. There is no data layer, no component isolation, no module bundling, and no server-side rendering; the entire site is a folder of files that any HTTP server can serve.

Tech Stack The deployment surface covers every major static hosting platform: Cloudflare Workers via a wrangler.toml that enables auto-trailing-slash HTML handling, Nginx in Docker with gzip compression and 7-day static asset caching, and direct one-click integrations for Vercel, Netlify, DigitalOcean App Platform, and AWS Amplify. There is no backend runtime, database, ORM, JavaScript framework, or build tool — the entire stack is HTML5, CSS3, and SVG. The only active tooling is a Bash-based GitHub Actions CI workflow that enforces WCAG 4.5:1 contrast ratios on brands.css pull requests, and a pre-commit hook that auto-lints files before commit.

Code Quality The codebase has no test files and no dynamic behavior to test, so the CI surface is limited to the contrast-check workflow. The CSS is consistently structured with clear section comments, a modular spacing and typography scale using CSS custom properties, and alphabetical organization of brand entries across both brands.css and index.html. The PR template enforces a detailed submission checklist covering brand guidelines, icon clarity, alphabetical ordering, theme testing, and accessibility compliance. No type system or linter beyond pre-commit formatting applies, and there is no JavaScript to analyze for quality. The overall quality is appropriate for a purely static project — the constraints are self-imposed rather than tooled.

What Makes It Unique LittleLink’s most technically distinctive feature is achieving full multi-theme branded button support — including automatic inverse strokes for low-contrast brand colors — using only CSS custom properties and a media query, with zero JavaScript. The CI-enforced WCAG contrast pipeline is a genuine innovation for a project at this level of simplicity: a pure Bash script calculates relative luminance and contrast ratios, flags gradient backgrounds for manual review, and validates stroke remediation logic, all running in GitHub Actions. The Cloudflare Workers deployment uses html_handling = "auto-trailing-slash" to solve clean URL routing without any server code. The community governance model — separating mainstream brands in the core repo from niche services in LittleLink Extended — keeps contribution friction low while maintaining a focused, high-quality button library.

Self-Hosting

LittleLink is released under the MIT License, one of the most permissive open-source licenses available. You can use it commercially, modify it freely, distribute it, sublicense it, and incorporate it into proprietary products without restriction. The only requirement is that the MIT copyright notice be included in any copy or substantial portion of the software. There are no copyleft obligations, no network use provisions, and no dual-licensing restrictions — what you self-host is fully yours.

Running LittleLink yourself is genuinely minimal. The site is a static folder: an HTML file, three CSS files, and a directory of SVG icons. You can serve it from any web server, CDN, or static hosting provider that can serve files over HTTP. The official Docker setup adds Nginx with a one-line compose command. There is no database to manage, no background processes to monitor, no secrets to rotate, and no dependencies to update beyond the occasional upstream pull for new brand buttons. Uptime, caching, and TLS are entirely the responsibility of your hosting layer, but since the site has no moving parts, operational incidents are essentially limited to your hosting provider’s reliability.

LittleLink has no managed cloud tier, no paid support plans, and no SLAs. What you give up compared to Linktree or similar SaaS products is the convenience layer: no GUI editor for non-technical users, no analytics dashboard, no A/B testing, no scheduled link visibility, and no team collaboration features. Adding a new link requires editing HTML directly. The community provides the Button Builder tool and LittleLink Extended for niche brands, but there is no official support channel beyond GitHub Issues and the project’s Discord server. For developers comfortable with static hosting, this tradeoff is trivial; for non-technical users managing their own instance, the editing experience requires basic HTML familiarity.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack

No spam. Unsubscribe anytime.

Join 750+ subscribers
No spam. Unsubscribe anytime.

Search