Do you use :visited on links?
18 points by confusedalex
18 points by confusedalex
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.
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".
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
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.)
: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.
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 :root because that seems to respect users' preferences a tad bit more.)
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.
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.
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.
TIL: :visited is 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.
As I noted in a comment on this article . . .
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!
I recolor links to match the rest of my site's color scheme, so I also recolor :visited links.
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?
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.