How to "unvisit" links in Chrome?

Open the history by pressing Ctrl + H, search for the URL that you want to remove, click on the time that is displayed left of it and then click Remove selected items.

Note: Since Chrome history doesn't hold too many entries you may not find that link in there if you visited that page long time ago, yet it still will show up as "visited" in your browser.
To "unvisit" it, simply go back to that page and click that link again — that way, it will now be in your Chrome's recent history and you can delete it as described above.


I'm not sure my solution would work for your purpose, but it works much better for me than deleting my browsing history every time I turn around. I have a lot of homemade documents on my desktop that I created using simple html; mostly they are just lists of active links. On most of these documents I specified font and font size, but just went with the default for font colors, for simplicity's sake, and they show unvisited links in blue and visited links in purple.

My solution was to simply add this code to documents that I do not wish to show which links have been visited:

"text= "#0000FF" link="#0000FF" vlink="#0000FF"

The entire line of code reads:

<body bgcolor="#BFB6A1" text= "#0000FF" link="#0000FF" vlink="#0000FF">
<font face="Ariel" size="3" color="#0000FF" FAMILY="SANSSERIF">
<body>

and it of course requires at the end of the document as seen here:

</font>
</body>
</html>

This effectively makes all text on the page show as blue (you could substitute any color number) including visited and non-visited links. So, while Chrome continues to do its thing and notes which links on that page have been visited, neither I, nor anyone else, can see them.


Searching the web for an answer to exactly this question I found this browser addin.

http://chrispederick.com/work/web-developer/

It seems to have versions for Chrome, Firefox and Opera.

Look under Miscellaneous for the option Mark All Links Unvisited. Worked perfectly for me in Chrome.


Simplest method is deleting the page from history (and, if the URL is not in the history, adding it to history by visiting it and then deleting), as explained in the accepted answer. However, OP also asked about scripting the process without going to history, and this is indeed possible to do.

Chromium uses the Visited Links file in the profile path for the visited status of links. This file is in binary format, unlike the History and other files which are SQLite databases. However, as Chromium is open source, we don't need to reverse engineer it.

The file starts with the header VLnk and contains the 8-byte fingerprints for the URLs that have been visited. The fingerprint is the first 8 bytes of the MD5 hash of the salt + URL. Salt is located at the 0x10 offset in the file.

To unvisit a link in a Chromium browser you can calculate the fingerprint of the URL for your profile, find it in the Visited Links file, zero those 8 bytes and also decrement the counter at the beginning of the file (you can see it by comparing the files from before and after visiting a new link). This is what Chromium does when an item is manually deleted from history, and clearing all history zeroes the whole file. Chromium browsers may keep history (stored in the History file) for a limited time, e.g. Chrome apparently keeps them for 90 days. Presumably, after those 90 days, they are removed from History but not Visited Links, which explains the discrepancy between the two mentioned in the accepted answer.

Here is some Python code to better understand the content of Visited Links file from a Chromium forensic tool. You can first use the chromagnonVisitedLinks.py to check it works, and then modify the visitedLinks.py to not just find but delete URLs.