This just seems untrue? It’s a tiny micro hostility against your users
I've always made the :visited attribute for hyperlinks look the same as links that haven't been visited, and it seems that it's the default behaviour across the web.
I think a lot of people, over the years of designing web apps where you go the same pages a lot and don't want every link in your nav bar to be a different color all the time, defaulted to just disabling :visited states by making them the same color.
I think it often makes sense. For instance, on this website, at the very top of the page there’s a navbar with “Active”, “Recent”, “Comments” links. They have the same style regardless they are visited or not. And it makes sense, because the content of these pages is constantly changing, so a :visited style would not give any relevant information.
General and longstanding consensus is to treat nav bar links differently from content links. Content links should always be coloured (ideally blue but purple when visited; but brand accent colour and no visited is also common) and underlined at least on hover (I think we got past the no-underlines-at-all stage? I’m actually a little uncertain because I force an underline on links by user stylesheet, semitransparent when not hovered), but nav bar links are seldom coloured or underlined. (Any site that doesn’t colour content links is wrong. And I include Lobsters in that, slightly-lighter grey is bad. I fix this and other things in my user stylesheets.)
Analysing :visited colours was used as an earlier form of user finger printing. Ensuring :visited always has the same colour wrt the plain link isn't so much micro hostility as a remnant from that time: websites shouldn't be able to tell which sites you've visited just by dropping a list of 1000 links in a hidden div and then profiling you based on what's purple, and so most web dev resources advocated not letting browsers recolour visited links, as a way to signal "I know, and I care about your privacy".
Last I looked, the default dork mode colour scheme on some browsers has rancid colour choices with unreadably poor contrast. Dunno if more of them have been fixed since then. https://lobste.rs/s/hvjeov/css_system_colors#c_7th8mm
Yeah, the missing piece of the equation is that no one would customize the default colors in the browser because it won't do anything on 99% of the sites they browse, so why would browsers provide nice UIs to do that?
I would love to live in a world where browser color themes are a thing just like they are in editors and terminals.
The Lagrange browser for the Gemini protocol does something interesting; it assigns each domain a color theme in a deterministic way, from a pool of quite tasteful choices. I don't think it's optimal, but it's interesting- it prevents everything from looking samey, but it's not completely opposed to user control.
I would love to live in a world where browser color themes are a thing just like they are in editors and terminals.
I think I remember old Internet Explorer versions letting you configure them. I thought that was so cool as a kid, even though I don't think I ever changed them (unless this is just outright a false memory, it's been ages).
But Fx allows you to change these value in about:config: browser.active_color.dark, browser.anchor_color.dark, browser.visited_color.dark (sans dark is the default theme). This is one more point in using the user agent defaults since users can change these to their liking. These don’t work on Android tho… very sadly since I want to use #000 as the canvas color on dark.
Haha, I didn't know about that. But this is why I'm such a minimalist. The less you do, the fewer problems you have :)
(0 images in my personal website, over 400k words :)
On one hand, it's unfortunate that browsers don't change to break backwards compatibility (I'm sure defaulting to width=device-width, initial-scale=1.0, nicer CSS defaults, etc. would be very nice... but on the other, even an innocent change such as the default background color change that you mention, can mess things up. On one hand, I wish there were "HTML revisions" or "editions" with improved defaults; on the other, I'm sure that would cause other problems...
A strange game. Even not playing is likely not a winning move.
Yeah, it happened when IE first used it's own engine and broke away from gecko. Gecko never changed their default, but the new mozilla/firefox engine did use white as the default background color. When this version of IE came out it had ~25% market share, but that inverted over the next few years, so the default change ramped up quickly. A lot was going on lol. Browsers were the AI.
I was always thinking about this change so I did a bunch of research on it recently for a blog post that I never finished.
This was also the beginning of the css reset era, which may have fallen out of fashion, but I still use the Eric Meyer one from time to time.
:visited is very useful when clicking around to research things, to avoid opening the same page five times because I've forgotten what I've looked at and not. And to follow my own footsteps when I'm looking for the same thing a few days later.
Just FYI: for anyone who use a Blink-based browser (Chrome/Edge/Brave/Vivaldi/etc.), this change helps only if the link was visited from one’s currently-viewed site: Chrome Developers article from 2025.
Personally (speaking as a user) I find :visited to feel very hostile and judgy (almost stressful..), and if there was a browser-wide option to turn it off I would use it in a heartbeat.
Edit: Oh, turns out Firefox does have this! Disable layout.css.visited_links_enabled in about:config and all the purple is gone.. huzzah!
Personally (speaking as a user) I find :visited to feel very hostile and judgy (almost stressful..)
Interesting! I rarely use it myself, but reading another comment in this thread I realised that I do occasionally use the fact that visited links on the lobsters (and HN) homepages are coloured. It's helpful if I trying to locate that link I saw a few hours ago (or looking for new stuff). Why do you feel it as judgy?
Honestly props to lobste.rs for styling visited links on their own home page.
Yeah I mostly see the anti pattern on tailwind sites or otherwise framework heavy code bases with a css reset and zero thought given to user convenience.
This inspired me to finally implement it on my site. Unfortunately the inset box-shadow trick I was using to fill the background on link hover doesn't work (:visited only affects a few properties, and box-shadow isn't one of then), so only the underline is purple and it disappears on hover (it's now a border that disappears on hover). Couldn't find a way to make the bottom border go inside the text without messing up the rest of the layout, unfortunately! Still, I think it's definitely more useful than before.
When I built my own RSS reader, I wanted something like a "read" marker but didn't want to introduce persistent storage. :visited solves this issue perfectly.
On my website, I use very stylized link underlines so currently I don't - but maybe I should?
Student | 9 hours ago
This just seems untrue? It’s a tiny micro hostility against your users
dmcgrath | 8 hours ago
I think a lot of people, over the years of designing web apps where you go the same pages a lot and don't want every link in your nav bar to be a different color all the time, defaulted to just disabling :visited states by making them the same color.
motet-a | 6 hours ago
I think it often makes sense. For instance, on this website, at the very top of the page there’s a navbar with “Active”, “Recent”, “Comments” links. They have the same style regardless they are visited or not. And it makes sense, because the content of these pages is constantly changing, so a :visited style would not give any relevant information.
chrismorgan | 3 hours ago
General and longstanding consensus is to treat nav bar links differently from content links. Content links should always be coloured (ideally blue but purple when visited; but brand accent colour and no visited is also common) and underlined at least on hover (I think we got past the no-underlines-at-all stage? I’m actually a little uncertain because I force an underline on links by user stylesheet, semitransparent when not hovered), but nav bar links are seldom coloured or underlined. (Any site that doesn’t colour content links is wrong. And I include Lobsters in that, slightly-lighter grey is bad. I fix this and other things in my user stylesheets.)
Pomax | 6 hours ago
Analysing
:visitedcolours was used as an earlier form of user finger printing. Ensuring:visitedalways has the same colour wrt the plain link isn't so much micro hostility as a remnant from that time: websites shouldn't be able to tell which sites you've visited just by dropping a list of 1000 links in a hidden div and then profiling you based on what's purple, and so most web dev resources advocated not letting browsers recolour visited links, as a way to signal "I know, and I care about your privacy".It was bad enough that browsers eventually had to step in and literally change what information you could get, https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Selectors/Privacy_and_:visited
koala | 9 hours ago
Or just don't use CSS to change colors and use the browser's defaults :) (That gives you different colors for visited links.)
(I just
color-scheme: light dark;to:rootbecause that seems to respect users' preferences a tad bit more.)fanf | 9 hours ago
Last I looked, the default dork mode colour scheme on some browsers has rancid colour choices with unreadably poor contrast. Dunno if more of them have been fixed since then. https://lobste.rs/s/hvjeov/css_system_colors#c_7th8mm
koala | 9 hours ago
Yeah, the missing piece of the equation is that no one would customize the default colors in the browser because it won't do anything on 99% of the sites they browse, so why would browsers provide nice UIs to do that?
I would love to live in a world where browser color themes are a thing just like they are in editors and terminals.
The Lagrange browser for the Gemini protocol does something interesting; it assigns each domain a color theme in a deterministic way, from a pool of quite tasteful choices. I don't think it's optimal, but it's interesting- it prevents everything from looking samey, but it's not completely opposed to user control.
dzwdz | 4 hours ago
I think I remember old Internet Explorer versions letting you configure them. I thought that was so cool as a kid, even though I don't think I ever changed them (unless this is just outright a false memory, it's been ages).
toastal | 5 hours ago
But Fx allows you to change these value in
about:config:browser.active_color.dark,browser.anchor_color.dark,browser.visited_color.dark(sansdarkis the default theme). This is one more point in using the user agent defaults since users can change these to their liking. These don’t work on Android tho… very sadly since I want to use#000as the canvas color on dark.brad | 5 hours ago
Some us still have scars from when ie changed the default background of web pages from gray to white and our gifs no longed blended properly.
koala | 5 hours ago
Haha, I didn't know about that. But this is why I'm such a minimalist. The less you do, the fewer problems you have :)
(0 images in my personal website, over 400k words :)
On one hand, it's unfortunate that browsers don't change to break backwards compatibility (I'm sure defaulting to
width=device-width, initial-scale=1.0, nicer CSS defaults, etc. would be very nice... but on the other, even an innocent change such as the default background color change that you mention, can mess things up. On one hand, I wish there were "HTML revisions" or "editions" with improved defaults; on the other, I'm sure that would cause other problems...A strange game. Even not playing is likely not a winning move.
brad | 4 hours ago
Yeah, it happened when IE first used it's own engine and broke away from gecko. Gecko never changed their default, but the new mozilla/firefox engine did use white as the default background color. When this version of IE came out it had ~25% market share, but that inverted over the next few years, so the default change ramped up quickly. A lot was going on lol. Browsers were the AI.
I was always thinking about this change so I did a bunch of research on it recently for a blog post that I never finished.
This was also the beginning of the css reset era, which may have fallen out of fashion, but I still use the Eric Meyer one from time to time.
m_eiman | 9 hours ago
:visited is very useful when clicking around to research things, to avoid opening the same page five times because I've forgotten what I've looked at and not. And to follow my own footsteps when I'm looking for the same thing a few days later.
hoistbypetard | 8 hours ago
TIL:
:visitedis still a thing. I thought they got rid if it because of history sniffing issues.But no, they "just" modified it so that it couldn't change geometry and altered the javascript API that lets you get an element's computed style.
https://salivity.github.io/css/article/understanding-css-visited-privacy-restrictions
That seems like a lot of trouble for a relatively low-value feature.
It seems worth poking at this some more to see if we can bring back history sniffing.
BryceWray | 5 hours ago
As I noted in a comment on this article . . .
natkr | 4 hours ago
Personally (speaking as a user) I find :visited to feel very hostile and judgy (almost stressful..), and if there was a browser-wide option to turn it off I would use it in a heartbeat.
Edit: Oh, turns out Firefox does have this! Disable
layout.css.visited_links_enabledin about:config and all the purple is gone.. huzzah!tomsmeding | 8 minutes ago
Interesting! I rarely use it myself, but reading another comment in this thread I realised that I do occasionally use the fact that visited links on the lobsters (and HN) homepages are coloured. It's helpful if I trying to locate that link I saw a few hours ago (or looking for new stuff). Why do you feel it as judgy?
CharlesT | 3 hours ago
Honestly props to lobste.rs for styling visited links on their own home page.
Yeah I mostly see the anti pattern on tailwind sites or otherwise framework heavy code bases with a css reset and zero thought given to user convenience.
Forty-Bot | 9 hours ago
I recolor links to match the rest of my site's color scheme, so I also recolor :visited links.
pta2002 | 7 hours ago
This inspired me to finally implement it on my site. Unfortunately the inset box-shadow trick I was using to fill the background on link hover doesn't work (:visited only affects a few properties, and box-shadow isn't one of then), so only the underline is purple and it disappears on hover (it's now a border that disappears on hover). Couldn't find a way to make the bottom border go inside the text without messing up the rest of the layout, unfortunately! Still, I think it's definitely more useful than before.
lknuth | 7 hours ago
When I built my own RSS reader, I wanted something like a "read" marker but didn't want to introduce persistent storage.
:visitedsolves this issue perfectly.On my website, I use very stylized link underlines so currently I don't - but maybe I should?