May 10, 2026 at 13:45
Most people have a massive collection of bookmarks, but only use a handful of them. During my years as a computer tech, I’ve seen thousands of users try and fail at managing bookmarks in any meaningful way. If you’re using your browser’s built-in bookmark manager, let’s discuss some better options for you. I promise it’ll make your internet life much less tedious.
Many years ago, I fell in love with Linkding. It works a lot like the old site del.icio.us - if anyone remembers the days of Web 2.0. It has tags, full-text search, RSS sharing, and is easily self-hosted through docker-compose. Just know that saving bookmarks is the easy part, especially if you install the Linkding browser extension. The problem was bookmark retrieval. Getting back to a saved link meant opening a new tab, navigating to Linkding, logging in, and then searching for it. Even if the link existed there, searching the internet felt faster.
Despite all that, I kept saving bookmarks as if out of loyalty or guilt. I knew I’d never get back to most of them, but the things I’d come across online were too good to forget.
That problem isn’t necessarily because of Linkding. It’s just that my biggest pet-peeve is having to look for stuff. Easter is my least favorite holiday because looking for all those eggs raises my blood pressure. I developed Mark to make our notes easier to create and find, so let’s address our disorganized bookmarks.
The way I organize anything follows the same general logic. The items I use frequently stay front and center. Everything else still has a place, it just doesn’t need to be taking up valuable working space. This applies to kitchens, computer desks, closets, our tools, and any space that has too much clutter. If you have to move five things to get to the one thing you actually need, the system is working against you.
Bookmarks have the same problem. The browser’s bookmark bar was never designed for an archive. It was designed for the five or so sites you visit every day. Once it becomes the place you dump everything, it stops being useful for anything. It is a feature that browser manufacturers tacked on and neglected for decades. It was never designed to be a practical solution for all the links we collect.
The right solution is two tiers. Daily use stuff stays visible and one click away. Everything else lives in storage, organized and searchable, ready when you need it without cluttering up the space you work in. Linkding handles this archive beautifully. What is still needed was something to handle the front end, a homepage that kept the most used sites right in front of me without making me dig for them. That’s what led me to Flame, and eventually to building my own custom solution in “Dash”.
Anyone remember how useful iGoogle was (speaking of Web 2.0)?
The problem with most software isn’t that it’s bad. It’s that it wasn’t designed for you. Everyone manages their computers and daily workflows differently. Opening a feature request on Github is fine, but what comes back is still someone else’s interpretation of the solution, designed for the largest possible audience. Plus you need to know what you’re talking about when asking for new features. For the average user, that’s not realistic. Plus, I don’t like Github anyhow.
Before discovering Flame, I managed an HTML page with a list of bookmarks. It technically worked, but editing it was tedious enough that I’d put it off until workarounds became too annoying.
Flame was the closest thing I’d seen to what I actually wanted. It was simple, light, and not too tedious. I happily used it for a few years. However, development was fairly stagnant. The things it couldn’t do became workarounds, and the workarounds became habits, and at some point I stopped noticing I was working around a tool instead of working with one.
I had spent a great deal of time on Reddit subs where people excitedly showed off their dashboards. Most of them looked nearly identical, built on the same handful of available projects, and none of them was what I needed.
Building Dash changed how I thought about the whole problem. Once I was solving for myself instead of trying to find something that mostly fit, ideas flooded in. Features I didn’t know I wanted became obvious.
A link to the project’s source is at the bottom of this post for anyone to read, copy, and modify. You can use it as-is, or use it as a starting point that can be customized into your personal workflow.
All-in-one systems try to solve everything, but aren’t good at solving any of them. I’ve preached that ever since being in IT decades ago. A printer that’s also a scanner, a fax machine, and a copier is really just a collection of features that don’t do any one job particularly well. A standalone printer will outperform it every time and cause half the headaches.
Dashboard software follows the same pattern. Heimdall, Homarr, and Homepage are decent, but are full of Docker status panels, server metrics, weather widgets, and live system monitoring. I tried most of them. They were interesting for about a week, but I didn’t need my homepage constantly reminding me how much RAM my server was using. I monitor my systems differently (more on that later), and none of that was why I was opening a new tab.
Links were enough, and I needed something that kicked ass at only that.
The visual layout of Dash is similar to Flame because it worked and there was no reason to drastically change it. Categories are organized across the screen with bookmarks sitting underneath each one. After enough time using it, clicking them becomes muscle memory. I know exactly where every link sits on the page, and if something moves, it takes genuine re-learning to find it again.
The backend of Dash was built around minimalism - like all my other web apps. Flame runs on Node.js, SQLite, React, Redux, TypeScript, and Docker. That’s a significant amount of infrastructure for a page that shows you bookmarks. The goal was to get out from under all that overhead and build something much less complex. Dash runs on a single Python file with Bottle and a JSON data store. When something goes wrong, there’s one place to look and no frameworks to chase the error through.
The feature I’m most happy about is pressing / to open a Linkding search directly from the homepage. The connection is configured in the settings menu alongside the API token, so setup takes about a minute. Results load without ever leaving the page, and that changes how the whole thing feels.
Before Dash, I rarely searched Linkding. Finding the link by searching the internet was always faster than going through the login process, so that’s what I did instead. The Linkding integration in Dash changed that entirely. The page is already open when I start my day as it’s set as my browser’s homepage, so checking Linkding costs nothing. Now the thought process is just “maybe I archived that site, so let me do a quick search to see if it’s there.” Two seconds later I either have it or I don’t, and I’m back to whatever I was doing.
The painless retrieval also changed how often I save things. When you trust that you can find something again, you add it more freely. Linkding went from something I opened rarely to something I search through multiple times a week.
The Linkding browser extension makes saving bookmarks easy on desktop and the Linkdy Android app covers mobile. Between the two, adding a bookmark takes a few seconds regardless of what you’re using.
Grab Dash here, unzip, and check out the README. To get it running, you’ll need Python 3.10 or higher and a single dependency that can be installed with pip.
pip3 install bottle
Drop the files somewhere on your machine and run it:
python3 dash.py
After starting dash.py, open http://localhost:8369. It’ll walk you through the initial setup. From there, running it as a systemd service keeps it going in the background. A service file is also included in the zip. Just make sure you update the folder locations in there first.
$ mkdir -p ~/.config/systemd/user
$ cp dash.service ~/.config/systemd/user/
$ systemctl --user daemon-reload
$ systemctl --user enable dash
$ systemctl --user start dash
Because everything lives in one Python file with a JSON data store, backups are straightforward. Copy the folder somewhere safe and you’re done. Updating is the same story. Just drop in the new dash.py and restart the service. The data will stay unmolested (I wanted an excuse to use that word).
The total size of the zip file is less than 40kb. I like ‘em teeny and toasty.
If your bookmark management sucks, grab the zip, drop it on your machine, and run it. Play around with it, move things, change the colors, break something. If you like it, the systemd setup above keeps it running permanently in the background. If you want the full capabilities, pair it with Linkding and do something useful with the bookmarks you’ve been hoarding for years.
Questions or comments?