🔎 Browser extension to (fuzzy) search and navigate bookmarks, history and open tabs.
This extension does not collect any data nor does it make any external requests (see Privacy).
It supports two different search approaches:
With this extension you can also tag your bookmarks including auto completions. The tags are considered when searching and can be used for navigation.
The extension is very customizable (see user options) and has a dark / light theme that is selected based on your system settings (see prefers-color-scheme). It's also very lightweight (< 150kb JavaScript, including dependencies).
💡 Have a look at the Tips & Tricks collection.
🗎 For a list of recent changes, see CHANGELOG.md.
CTRL
+ Shift
+ .
, but you can customize this (I personally use Ctrl+J
).Shift
or Alt
to open the result in the current tabCtrl
to open the result without closing the popup.#
: only bookmarks with the tag will be returned (exact "starts with" search)#github #pr
to only get results which have both tags~
: only bookmarks within the folder will be returned (exact "starts with" search)~Sites ~Blogs
to only get results which have both tagsb
(including space): only bookmarks will be searched.h
(including space): only history and open tabs will be searched.t
(including space): only open tabs will be searched.s
(including space): only search engines will be proposed.customSearchEngines
allows you to define your own search mode aliasesg
(including space): Do a Google search.d
(including space): Do a dict.cc search.Ctrl+N
and Ctrl+J
to navigate search results upCtrl+P
and Ctrl+K
to navigate search results downchrome://downloads
.+<whole number>
to your bookmark title (before tags)
Bookmark Title +20
or Another Bookmark +10 #tag1 #tag2
#
in bookmark titles that do not indicate a tag.~
in bookmark folder names.The extension is highly customizable. Finding and setting options is a bit technical, though.
The user options are written in YAML or JSON notation.
For now, there is no nice options overview, so you have to find them in the popup/js/model/options.js file in the defaultOptions
object.
From there you can see the available options, their names, default values and descriptions.
When defining your custom config, you only need to define the options that you want to overwrite from the defaults.
âš The options are not validated properly. Please make sure to use them correctly.
If something breaks, consider resetting your options.
An exemplary user config can look like the following example:
searchStrategy: fuzzy
displayVisitCounter: true
historyMaxItems: 2048 # Increase max number of browser history items to load
If you have troubles with performance, here are a few options that might help. Feel free to pick & choose and tune the values to your situation. In particular historyMaxItems
and how many bookmarks you have will impact init and search performance.
Here is a suggestion for low-performance machines:
searchStrategy: precise # Precise search is faster than fuzzy search.
searchMinMatchCharLength: 2 # Start searching only when at least 2 characters are entered
displaySearchMatchHighlight: false, # Not highlighting search matches improves render performance.
searchMaxResults: 20 # Number of search results can be further limited
historyMaxItems: 512 # Number of browser history items can be further reduced
Or a more advanced example:
searchStrategy: precise
historyDaysAgo: 14
historyMaxItems: 2048
historyIgnoreList:
- extension://
- http://localhost
- http://127.0.0.1
colorStripeWidth: 4 # Customize width of search result color stripe
scoreTabBaseScore: 70 # customize base score for open tabs
searchEngineChoices:
- name: Google
urlPrefix: https://google.com/search?q=
customSearchEngines:
- alias: ['g', 'google']
name: Google
urlPrefix: https://www.google.com/search?q=$s
blank: https://www.google.com
- alias: d
name: dict.cc
urlPrefix: https://www.dict.cc/?s=$s
- alias: [gh, github]
name: GitHub
urlPrefix: https://github.com/search?q=$s
blank: https://github.com
- alias: npm
name: NPM
urlPrefix: https://www.npmjs.com/search?q=$s
blank: https://www.npmjs.com
debug: true # Print information about loading time / statistics in dev console
In case of making multilingual searching (CJK) correctly, you may need to tweak uFuzzy options via option ufuzzyOptions
, for example:
# make CJK chars work for fuzzy search
uFuzzyOptions:
interSplit: (p{Unified_Ideograph=yes})+
The scoring systems works roughly the following:
scoreBookmarkBaseScore
).scoreTitleWeight
).exactStartsWithBonus
will add score if either the title or the url start exactly with the search term, including spaces.For a description of the scoring options and what they do, please see popup/js/model/options.js.
This extension is built to respect your privacy:
Prerequisite: Node.js
# install dependencies
npm install
# build extension
npm run build
The source code for the extension can be found in popup/ (HTML, CSS, JS and libs).
The built extensions can be found
npm install
and npm run build
(via bash / git bash)chrome://extensions/
on Chrome and edge://extensions/
on Edge).dist/firefox
as a temporary addon in about:debugging
.npm run build
for a complete buildnpm run start
to start the extension locally in a browser (with mock data)npm run test
to run end to end testsnpm run
This extension makes use of the following helpful open-source projects (thanks!):
Please create a GitHub issue to give your feedback. All ideas, suggestions or bug reports are welcome.