A personal build story about Browser Memory, a local-first Chrome history replacement that groups browsing into sessions instead of dumping URLs into a flat list.

I have lost the same useful page more times than I want to admit.
Not because I forgot how to search. Not because the page disappeared. Usually it was still there, buried somewhere inside chrome://history, sitting between a login redirect, a docs page I opened by accident, a pricing page, three search results, and some random tab I clicked while trying to remember what I was doing.
That is the strange thing about browser history. It technically remembers everything, but it does not remember the shape of the day.
It remembers URLs.
I remember sessions.
I remember, "that afternoon when I was comparing icon libraries." I remember, "the debugging rabbit hole after the build failed." I remember, "the group of pages I opened while planning a landing page." I almost never remember the exact title of the one tab I need later.
So I started building Browser Memory because I wanted my history page to stop feeling like a junk drawer.
Not a bigger junk drawer. Not a prettier junk drawer. A different kind of tool.
Chrome's history page is useful for one job: finding a page when you already know what to type.
If I remember the domain, a word from the title, or the day I visited it, I can usually dig it out. But the moment my memory is fuzzier than that, the whole thing turns into a scroll test.
That became painful while working on browser extensions and small products. I would research a feature, open API docs, read a few examples, compare tools, jump into GitHub issues, test something locally, and then close the tabs because I wanted a clean workspace.
The next day, I would need one piece of that research again.
So I would re-Google it.
That felt ridiculous. My browser had already seen the page. It had the timestamp. It had the title. It had the URL. It knew the surrounding pages I opened before and after it. But the interface flattened all of that into a long receipt.
The missing piece was context.
A visit is not only a visit. Sometimes it is part of a project. Sometimes it belongs to a research burst. Sometimes it should be attached to a note because the title alone will never explain why I cared about it.
That was the first idea behind Browser Memory: make browser history behave more like a workspace than a log file.
I did not want Browser Memory to pretend it understands my life. I wanted it to preserve the structure that was already there.
When I browse, my activity naturally falls into groups:
Chrome already has the raw material. Browser Memory turns that raw material into something easier to return to.
The home screen starts with Continue where you left off, because that is usually what I want first. Not a blank search bar. Not a giant list. Just the last real browsing session I was in, with enough context to restart the thread.
Then there is a timeline view for days when I remember the date but not the page. There are sessions for browsing bursts. There are domains, because sometimes I do not remember the article title, but I do remember that it was from a certain site. There are favorites for pages and sessions worth keeping close. There are notes for the moments where future-me needs a sentence of explanation.
That sounds simple, but it changes how the history page feels.
Instead of asking, "What exact page are you looking for?" it starts asking, "What were you working on?"
That is a better question.
A normal history page treats each visit like an isolated event.
But a session tells a better story.
If I spend 35 minutes reading about Chrome extension permissions, then opening the Chrome developer docs, then checking examples, then visiting a Stack Overflow answer, those pages belong together. They are not random. They are one mental task spread across several tabs.
Browser Memory groups browsing by inactivity gaps. If there is a meaningful pause, a new session begins. From there, the extension can show a group of related pages instead of forcing me to reconstruct the pattern one row at a time.
The titles are deterministic too. A session might be labeled something like "Development Research" or "Shopping Research" based on the sites and page titles inside it. It is not magic. It is just a set of local rules trying to give the session a useful name.
That choice matters because I do not want a history replacement that surprises me. I want one that is explainable enough to trust.
If the session title is not perfect, that is fine. It is still more useful than a timestamp and a pile of URLs.
This is probably the easiest feature to overbuild.
The obvious 2026 version of a tool like this would be: send browsing history to a model, summarize everything, label the sessions, and let AI tell you what you were doing.
I did not want that.
Not because AI is useless. I use AI in plenty of places. But browser history is sensitive. It can reveal health questions, financial research, work projects, private searches, half-formed ideas, and all the weird little trails people follow when nobody is watching.
For this product, privacy was not a marketing section I wanted to add at the end. It shaped the whole architecture.
Browser Memory uses local rules instead of language models. Session titles, confidence scoring, category tags, and related-page suggestions are computed on the device. No account. No cloud. No backend. No analytics. No API call quietly carrying your history somewhere else.
That also keeps the behavior stable.
The same history produces the same result. No model mood. No per-request cost. No waiting on a network response. No hidden prompt deciding whether your browsing session was "productive" or "chaotic."
I wanted the tool to feel smart, but boringly smart.
The kind of smart that helps you get back to work without making itself the center of the story.
The first version of the idea was mostly about sessions. But while building it, I kept noticing smaller needs that show up after the first ten minutes of using a history replacement.
Search had to be fast and local. It needed to search titles, URLs, domains, and notes. If I remembered only one word, the app should not make me work harder than necessary.
Favorites had to work at two levels. Sometimes the important thing is one page. Sometimes the important thing is the whole session. A single article can be worth saving, but so can an entire research trail.
Notes became more important than I expected. A page title often explains what a page is, but not why I opened it. A note lets me leave a breadcrumb for myself: "good example of onboarding copy," "check this API limit later," or "pricing model worth comparing."
Collections are for the things that last longer than one sitting. A session is what happened naturally. A collection is what I choose to keep building. That difference matters when a project stretches across multiple days.
Export matters too. I do not like tools that trap your own work inside a nice interface. Browser Memory can export sessions, collections, or search results as CSV or JSON, because sometimes the right next step is a spreadsheet, a report, or just a backup outside the extension.
None of these pieces are flashy by themselves. Together, they make the history page feel less disposable.
Browser Memory reads browser history because that is the whole point of the product. I do not want to hide that behind soft language.
The important question is what happens after it reads it.
In this case, the answer is: it stays local.
Favorites, notes, collections, and settings live in the browser's local IndexedDB. The extension does not have a backend. It does not create an account. It does not sync your history to the cloud. It does not run analytics.
The permissions are there to support the actual product:
history is used to build the timeline, sessions, domains, and search.storage is used for settings and saved app data.tabs helps with opening and continuing pages from sessions.activeTab and scripting are used for the settings overlay shortcut, not for silently reading page content.That last point was important to me. A history tool should be direct about permissions because users are trusting it with sensitive behavior. If a permission exists, there should be a plain reason for it.
Trust is not created by saying "privacy-first" in a headline. It is created by designing the product so the claim has somewhere to stand.
Browser Memory reminded me that useful products often start with a boring irritation.
Not every idea has to be a giant platform. Sometimes the product is simply: this default thing I use every day is technically working, but it does not match how my brain works.
That kind of problem is easy to ignore because it feels ordinary. Everybody loses tabs. Everybody re-searches pages. Everybody scrolls history sometimes. The pain is not dramatic, so it does not announce itself as a product opportunity.
But those ordinary frictions are good places to build.
A browser history replacement does not need to change the internet. It only needs to save a few moments of frustration every week. It needs to help someone return to a thought faster. It needs to make the browser feel a little more like a memory and a little less like a receipt printer.
That is enough.
Small products win when they respect a real moment.
I built this for people who browse in bursts.
If you compare products, research technical problems, collect design references, read around a topic over several days, or keep too many tabs open because closing them feels like losing your train of thought, this is the kind of tool I had in mind.
It is not trying to replace bookmarks completely. Bookmarks are for things you already know are worth saving. Browser Memory is for the messy middle: the pages you might need again before you realize they mattered.
That is where most browsing actually lives.
The half-useful page. The article with one good paragraph. The docs example you forgot to bookmark. The pricing table you want to compare later. The thread that explained the bug better than the official documentation.
A normal history page technically stores all of that.
Browser Memory tries to make it returnable.
The longer I work on small browser tools, the more I believe the best ones do not shout.
They sit close to a daily habit and remove one annoying step. They make a familiar task feel calmer. They give the user a little more control without asking them to learn a whole new system.
That is what I want Browser Memory to be.
A quieter history page. A local-first research trail. A place where sessions, notes, collections, and exports live together without turning your browsing into someone else's dataset.
Chrome's default history page is still there if you need it.
But if it has ever felt like a junk drawer, maybe the thing you wanted was never just history.
Maybe you wanted memory.

Local first, deterministic, and still smarter than chrome://history I like tools that are boring in the right places. That might sound like a strange way to describe a browser history replacement, but it is exactly how I think about Browser Memory. The product should feel useful. It should help me return to sessions,...

I replaced chrome://history — here's why I skipped the AI everyone else would've reached for If you tell someone you are building a smarter browser history page, the AI idea arrives almost immediately. Summarize my tabs. Ask my history questions. Name my sessions. Turn yesterday's browsing into a neat report. It is an...

No AI, no cloud, no account: rethinking what smart means in a browser extension When I started building Browser Memory, I kept running into the same assumption: If a browser extension organizes your history, it should probably use AI. I get why that idea appears so quickly. Browser history is full of context. A model...