browser-history(1) external history of web browsers, such as netscape


browser-history [ options ]


Browser-History is a client-side X daemon maintaining a browser-independent global history of all the web sites you visited. Its usage is very simple, just put the following line in your .xinitrc or your X start-up script:
browser-history &
And open the file ~/.browser-history/history-log.html and bookmark it.

Browser-history came from the will to overcome a Netscape bug: there was no global history, and if you close a window, its whole history is lost. For people browsing lots of sites, having a possibility to track back where one has been before means that you don't have to put everything in your bookmarks file. If you are not sure if a site may be worth remembering, don't add it in your bookmarks. If you need it later, just browse your history files.

Later, it came to our minds that this also could be a valuable add-on to people writing experimental browsers, so they don't have to add this functionality to their browser itself.

Browser-history is a small and efficient daemon. Real user services could be built on top of the log files it maintains for more possibilities (graphical representation, advanced search options, collective histories). It can be seen as a quick-and-dirty hack wrt to the general solution of using a personal proxy to provide this history and housekeeping facilities. But in the meantime, it is easy to use and it works.


Browser-History spies your web browser and logs in ~/.browser-history/history-log.html all the URLs you went through. You can then browse the log under Netscape or other browsers via the URL: file:~/.browser-history/history-log.html (replace the ~ by your home directory). It tracks automagically all already present browser windows, and all new ones created in the future. This program has no user interface. It just appends information to a log file in html format so you can browse it through a web browser. If more that one hour has passed since last entry, it draws an horizontal lines, and adds H1 headers to delimit new days. Each week (Sunday mornings), it archives the week history, compresses it by gzip (that you must have in your path), and starts a new history with links to the older ones. To make room you can just remove the obsolete history files. You can search files for string XXX in shell via:

zgrep XXX ~/.browser-history/*

This version (2.6) works with Netscape, Arena and Amaya.

URLs can be excluded from logging by putting them, one per line in the file ~/.browser-history/history-log.exclude , then, if an URL begins with a line from this file, it is not logged. In this file, empty lines or lines beginning by # are comments This file is read once at startup, and re-read when receiving the signal 1. e.g:

    # We exclude local files
    # Exclude search engines...

When browser-history is run, it looks if another one is running, and by default it kills the previous one if it is an older version. Otherwise, it the new one is the same version number or older, it just aborts.


All options can be given by their first letter: you can specify either -verbose or -v, but you cannot group options, e.g. you must say -v -k , but not -vk

-display display_name
Specifies X display, otherwise contents of $DISPLAY is used
outputs information on what it is doing. useful for debug.
prints version number and exit.
-logdir directory
which directory to store files into? defaults to ~/.browser-history
-gzip gzip_filename
the complete path to the gzip compressor. Defaults to "gzip". E.g:
-gzip /usr/gnu/bin/gzip
-seconds delay
if two entries are made are more than delay seconds apart, an horizontal rule will separate them, else just a simple line break. Defaults to one hour (3600).
If there is an already running browser-history on the display, aborts. Default is to replace it only if the version is older than ours.
If there is an already running browser-history on the display, aborts. Default is to replace it only if the version is older than ours.
If there is an already running browser-history on the display, kills it, then terminates immediately in all cases.
Never Grab the X Server, which might cause deadlocks while debugging, when browser-history or gdb tries to print on the grabbed xterm or emacs.
Cause the currently running instance of browser-history to save a list of all the URLs and their titles that are currently being viewed by a browser-history compatible browser to the normal history file as a "checkpoint".


A log file can have some decorative HTML to represent days, but each entry has the form: (on a single line since version 2.4)

    <a href="URL">URL</a>
    YYYY/MM/DD-HH:MN:SS <small>windowid</small>
where the following items are:
separator: either <hr> or <br>
name: the name of the document (window title)
URL: its URL
YYYY/MM/DD-HH:MN:SS: year, month number, day number, hour, 
                         minutes, seconds. (2-digit numbers)
windowid: the X window ID of the browser window, in hexadecimal

Note: Before version 2.4, the 4 sub-parts were separated by newlines, but since 2.4, they are only blank-separated to ease searching for URL in log files via "grep".

Note: Before version 2.5, the year was stored in 2 digits. Now it is stored in 4 (or more :-) digits, to fix this Y2K bug


The latest version of browser-history can be found at:
and its WWW home page, with full technical documentation is at:


Colas Nahaboo,


browser-history bears the same license as the X Window System: you can do everything with this code (selling it, modifying it), except suing me or using my name in your advertisements, or expecting any kind of support or guarantee.