Hiccup
Hiccup is a TypeScript-based application that provides beautiful static homepage to get to your links and services quickly. It has built-in search.
Self-hosted browser start pages, honestly reviewed. No marketing fluff, just what you get when you replace your browser’s default tab.
TL;DR
- What it is: A static HTML start page you self-host (or use as-is from the demo) to organize your most-visited links with search, categories, and keyboard navigation [README].
- Who it’s for: Homelabbers, self-hosters, and anyone running a personal dashboard who wants something that loads in under 100ms with zero server-side processing.
- Cost savings: There’s no SaaS equivalent to cancel. The comparison isn’t Hiccup vs. a paid product — it’s Hiccup vs. your browser’s default new tab plus browser bookmarks, or vs. heavier dashboard tools that require a database.
- Key strength: It’s a fully static app. No database, no Node.js process to keep alive, no RAM footprint beyond nginx serving files. It runs on a $0 Cloudflare Pages deploy or on a Raspberry Pi without complaint [README].
- Key weakness: At 189 GitHub stars it’s a small, low-activity project. The alternatives (Homer, Heimdall, Flame) have bigger communities, more contributors, and more integration options. You’re betting on a solo-maintainer repo.
What is Hiccup
Hiccup is a static start page — a single-page web app you point your browser’s new tab at. You configure it with a config.json file, and it shows you your most important links organized into categories, with a search bar that covers both your links and external search providers (Google, DuckDuckGo, Amazon, or custom ones you define).
The project was built by Ashwin PC as a personal utility and open-sourced on GitHub with an MIT license. The pitch in the README is direct: “A static start page to get to your most important links, FAST.” That’s accurate. The word “FAST” is doing real work there — the entire point is that a static file loads instantly, unlike Grafana dashboards or heavier tools that hit a database before rendering.
What makes it a bit more than a glorified bookmarks bar:
- Multiple profiles — you can maintain separate
config.jsonfiles for different contexts (home server, work, dev tools) and switch between them. - Remote profile loading — you can host your config file somewhere and have Hiccup pull it on load, which is useful if you want one config shared across multiple browsers or devices.
- PWA support — add it to your phone’s home screen and it works offline (your links are already in the config).
- Drag-and-drop configuration — drop a config file onto the page to load it, without opening a terminal.
- Read-only mode — useful for shared displays or kiosk setups where you don’t want anyone editing the layout.
There is a live demo hosted by the author. Changes you make there are stored only in your browser’s localStorage — nothing is sent to a server [README]. That’s not just a privacy reassurance; it’s how the whole thing works. The app is stateless by design.
Why people choose it
None of the third-party articles in this review’s source set specifically cover Hiccup — which is honest context about where this project sits in the ecosystem. With 189 stars it’s a quiet corner of the self-hosting world, not a Reddit darling. What I can tell you is why people in the self-hosting community reach for tools like this, and the pattern is consistent.
The r/selfhosted thread on “services you’d never go back to the cloud for” [1] is a useful temperature check: the tools people stick with are the ones that remove a dependency on someone else’s uptime, pricing changes, or data access. A start page is a trivially small version of that same instinct — replace Chrome’s default new tab (which phones home to Google) with something you control.
The XDA piece on self-hosted cost savings [4] frames it well: the value isn’t always about replacing a $50/month SaaS bill. Sometimes it’s about replacing a small friction point — finding your links, keeping them organized across devices — without the overhead of yet another cloud account.
For a start page specifically, the alternative isn’t a paid service — it’s browser bookmarks, which don’t give you the search-across-providers behavior, categories with visual layout, or cross-browser sync via a hosted config file. That’s the comparison that matters.
Features
Based on the README:
Core layout and links:
- Category-based grid layout for link organization [README]
- Featured links section for highest-priority items [README]
- Tag support for cross-category search [README]
- Drag-to-add interface for links and images [README]
Search:
- Built-in search bar with support for multiple providers: Google, DuckDuckGo, Amazon [README]
- Custom search providers — define your own with a URL template [README]
- Search across your own links and tags, not just external providers [README]
- Keyboard navigation in search results (Up/Down arrows, Enter to open, Esc to close) [README]
Profiles and configuration:
- Multiple profiles via separate
config.jsonfiles [README] - Remote profile loading — point it at a URL to pull config from a hosted file [README]
- Drag-and-drop config file loading (drop
.jsononto the page) [README] - Config editor built into the UI with a download button [README]
- All changes persist in
localStorage— no backend write required [README] - Caching strategies for offline/fast-load behavior [README]
Accessibility and navigation:
- Full keyboard navigation support [README]
- Keyboard shortcuts with
Cmd/Ctrl + /to view the hotkey reference [README] - Read-only mode for kiosk or shared displays [README]
- PWA support — installable on mobile home screens [README]
Deployment:
- Static file serving — runs on any web server, CDN, or static host [README]
- Docker image available:
bleckbeard/hiccup:latest[README] - Docker Compose file included in the repo [README]
- Config file mounted as a Docker volume — no rebuild needed to change links [README]
What it doesn’t have: user authentication, multi-user support, integration with your home server’s service health, automatic service discovery, or any server-side logic. That’s not a bug; it’s the design. If you need those things, you’re looking at the wrong tool.
Pricing: SaaS vs self-hosted math
There’s no pricing math to do here. Hiccup is MIT-licensed, free, and has no commercial version to compare against [README]. This is one of the cleaner situations in the self-hosted world.
Hosting options:
- Free: Deploy to Cloudflare Pages, GitHub Pages, or Netlify free tier. Static files, no compute cost. $0/month.
- Self-hosted alongside other services: If you already run a home server or VPS, nginx serving a static folder adds zero meaningful overhead. Your cost is $0 marginal.
- Dedicated Docker container on a VPS: Using the Docker image on a $4–6/month Hetzner or Contabo VPS [4][2]. Realistically you’re running other services too, so this isn’t a dedicated cost.
The only real cost is your time to set it up and maintain the config file. For a static page, “maintenance” means editing a JSON file when your bookmarks change.
What you’d compare this against:
- Browser bookmarks: Free, but no cross-browser sync without a Google/Firefox account, no search-across-providers, no visual layout customization.
- Momentum/Toby/similar new-tab extensions: Free tiers available, but they sync to vendor servers; paid tiers for advanced features run $2–5/month.
- Heimdall or Homer (heavier dashboards): Free and open-source, but require a running container with more overhead, and add features (service health monitoring, widget integrations) that may be overkill if you just want fast links.
Hiccup’s pricing story is simple: $0, forever, no account, no vendor.
Deployment reality check
This is genuinely one of the easier self-hosted tools to get running.
Option 1 — Docker (fastest):
docker run \
-p 8899:80 \
-v $(pwd)/config.json:/usr/share/nginx/html/configs/config.json \
bleckbeard/hiccup:latest
That’s it. The image bundles nginx and serves the static files. Mount your config and visit http://your-server:8899. Time to running: under 5 minutes [README].
Option 2 — Static hosting:
Download the release build from GitHub and drop it on Cloudflare Pages, GitHub Pages, Netlify, or any nginx/Apache directory. No build step required for the pre-built release. Time to running: 10–15 minutes including DNS propagation.
Option 3 — Use the hosted demo:
The author hosts a live instance. Your config stays in localStorage only — nothing leaves your browser. If you just want to try it, this is zero setup. If you want it on every browser and device, you’ll need to host your own config.json somewhere and use the remote profile feature [README].
What can go sideways:
- Config sync across browsers requires hosting your
config.jsonon a URL that’s accessible from all your devices. That’s an extra step non-technical users might find confusing. - The project is low-activity. The GitHub repository shows a small, solo-maintainer project with 189 stars. Pull request response time and ongoing maintenance are question marks. If a browser update breaks something, you’re waiting on a single contributor.
- No built-in backup. Your config lives in localStorage by default. If you clear browser data, your links are gone unless you’ve exported the JSON file. The UI does have a download button — use it.
- The EuroDNS piece on self-hosting [2] is a useful general reminder: self-hosting of any kind means you own the maintenance. For something as lightweight as a static page, that maintenance burden is minimal, but it’s not zero.
Realistic setup time for a technical user: 10 minutes. For a non-technical founder following a guide: 30–45 minutes including figuring out where to host the config file for cross-device sync.
Pros and Cons
Pros
- Zero runtime dependencies. No database, no runtime process, no memory footprint worth measuring. Static files served by nginx. [README]
- MIT license with no commercial version. Everything in the repository is available to you, forever, without licensing friction [README].
- PWA support means mobile works. Add it to your phone home screen; it loads offline because the config is cached locally [README].
- Multiple profiles with remote loading. Switch configs without touching code. Host your config on a private Gist or Cloudflare R2 and all your browsers sync automatically [README].
- Keyboard-first UX. Search bar, navigation, shortcuts — if you’re the type of person who hates reaching for the mouse to navigate links, this is designed for you [README].
- Drag-and-drop config. No terminal needed to change your links if you’re running the hosted demo or a local instance [README].
- Read-only mode is useful for shared screens, kiosk setups, or pinned wall displays in a home office [README].
Cons
- 189 GitHub stars. For context, Homer has 10K+, Heimdall has 7K+, Flame has 5K+. Hiccup is a niche project with limited community, fewer eyes on bugs, and no guarantee of long-term maintenance.
- No service health monitoring or widgets. If you want to see whether your Plex server is up or your Pi-hole is running, Hiccup isn’t the tool. It shows links, not status.
- Config sync is manual. There’s no built-in sync service. Keeping your links consistent across multiple browsers requires hosting the config file yourself and using the remote profile feature — an extra step that breaks the “zero setup” narrative for multi-device setups [README].
- No search shortcuts like other tools. Tools like Flame allow setting a search shortcut (type
g search termto search Google). Hiccup’s search is provider-based but not shortcut-based in the same way. - No user authentication. If you expose Hiccup to the internet, anyone who finds the URL can see (and potentially edit) your links. Read-only mode helps, but there’s no login wall [README].
- No automatic service discovery. Homer and Heimdall can scan your Docker labels and auto-populate your dashboard. Hiccup requires manual config editing every time you add a new self-hosted service.
- Third-party reviews are absent. There’s no substantive independent review coverage of Hiccup. The data in this article is drawn almost entirely from the README and the project itself. That’s worth flagging before you build a workflow around it.
Who should use this / who shouldn’t
Use Hiccup if:
- You want a start page that is genuinely zero-overhead — nothing to keep running, nothing to update, no process to monitor.
- You’re already managing a homelab and want a dead-simple link launcher, not a full dashboard.
- You care about speed. A static file with cached config is as fast as a browser start page gets.
- You want MIT-licensed, no-strings-attached software you can fork, modify, or embed anywhere.
- You work across multiple browsers and are willing to host a config file to sync your links.
Skip it (pick Homer instead) if:
- You want a bigger community, more active development, and thousands of GitHub stars backing the project.
- You need icon packs and service tags pre-built rather than configuring from scratch.
Skip it (pick Heimdall instead) if:
- You want application tiles with health status, live service monitoring, or EnhancedApps that show data from your services (Sonarr queue, Plex sessions, etc.).
Skip it (pick Flame instead) if:
- You want Docker label-based auto-discovery so your dashboard updates automatically when you deploy a new container.
- You want a built-in bookmarks manager integrated with the start page.
Skip it entirely if:
- Your self-hosted setup is large enough that you need a real service dashboard with status monitoring, metrics, and alerting. At that point you want Heimdall, Dashy, or Organizr, not a static link page.
Alternatives worth considering
- Homer — the most-used static start page in the self-hosting community. 10K+ stars, YAML-based config, icon support, theme options. Comparable philosophy (static, no database) with more polish and community [not directly reviewed here].
- Heimdall — adds application tiles with real-time data from services (Radarr, Plex, Pi-hole). Requires PHP, not static. Bigger feature set, heavier stack.
- Flame — Docker-first, auto-discovers services via Docker labels, includes bookmarks and weather widgets. Built in Node.js, not static.
- Dashy — extremely configurable YAML-based dashboard with widgets, status checks, and themes. More complex to configure but more powerful.
- Organizr — full portal/tab manager with SSO integration, user authentication, and embedding iframe views of your services. For homelabs at scale.
- SUI — another minimal static start page with a similar philosophy to Hiccup. Fewer features, even simpler.
For a founder or non-technical user setting up their first homelab dashboard, the realistic shortlist is Homer vs. Hiccup. Homer wins on community size and documentation. Hiccup wins if you want drag-and-drop editing and PWA mobile support without configuration file editing.
Bottom line
Hiccup does one thing: shows your links fast. The MIT license, static architecture, Docker support, PWA capability, and keyboard-first navigation are all genuine strengths for what it is. The problem isn’t what it does — it’s the project’s size. At 189 stars with no visible enterprise backing, no team, and no independent review coverage, you’re trusting a solo-maintainer project for something you’ll see every time you open a browser tab. That’s a low-stakes bet compared to betting on a solo-maintainer auth server or database backup tool, but it’s still worth knowing what you’re signing up for. If Homer’s YAML config feels like overhead and you want something you can manage with a drag-and-drop JSON editor and a hosted config file, Hiccup earns its place. If community longevity matters, Homer is the safer pick.
Sources
-
r/selfhosted — “What’s the one self-hosted service you’d never go back to the cloud version of?” reddit.com. https://www.reddit.com/r/selfhosted/comments/1qkdiyq/whats_the_one_selfhosted_service_youd_never_go/
-
Fernando, EuroDNS Blog — “Self Hosting is Trendy - But Is It Right For You?” (May 2, 2025). eurodns.com. https://www.eurodns.com/blog/self-hosting-is-trendy-but-is-it-right-for-you
-
LogicWeb — “Best Dropbox Alternatives: Nextcloud, ownCloud, Seafile”. logicweb.com. https://www.logicweb.com/revolutionize-your-file-storage-top-3-self-hosted-dropbox-alternatives-nextcloud-owncloud-and-seafile-compared/
-
Sumukh Rao, XDA Developers — “I save $50 a month by using these self-hosted services instead of paid tools” (Aug 22, 2025). xda-developers.com. https://www.xda-developers.com/save-using-these-self-hosted-services-instead-paid-tools/
-
uncomfyhalomacro.pl — “Self hosting is fun but…”. uncomfyhalomacro.pl. https://uncomfyhalomacro.pl/blog/self-hosting-is-fun-but/
Primary sources:
- GitHub repository and README: https://github.com/ashwin-pc/hiccup (189 stars, MIT license)
- Live demo: https://designedbyashw.in/test/hiccup/
- Docker image:
bleckbeard/hiccup:latest
Features
Search & Discovery
- Categories / Folders
- Tags / Labels
Mobile & Desktop
- Mobile App
- Progressive Web App (PWA)
Category
Related Self-Hosting Tools Tools
View all 212 →Rustdesk
110KOpen-source remote desktop software with self-hosted servers — a secure alternative to TeamViewer and AnyDesk with full data sovereignty.
Ladybird
61KLadybird is a truly independent web browser built from scratch, with no code from Chrome, Firefox, or Safari. Backed by a non-profit foundation.
TipTap
36KA suite of content editing and real-time collaboration tools. Build editor experiences like Notion in weeks, not years.
Awesome Sysadmin
33KA curated list of amazingly awesome open-source sysadmin resources.
restic
33KBackups done right. A modern backup program for Linux, BSD, Mac and Windows with strong encryption.
Homepage by gethomepage
29KA modern, fully static, fast, secure, highly customizable application dashboard with integrations for over 100 services.