> On a light or white background, body text should be black. In many cases it is more appropriate to reduce contrast by darkening the background. As an example a white #FFF background is really too bright for comfortable reading, a background such as #e8e2dd provides a less fatiguing background.
Sorry if I come across blunt but if you're going to be critical about an article then at least read more than the sub-heading first.
In general, nothing useful ever came after an "I've stopped reading at" disclaimer.
The # of articles that I personally haven't commented on because I found them impossible to read them to the end is probably in tens of thousands.
That's in fact how I come to the conclusion that nothing good ever comes after reading it :-)
Paper can be very white and bright if well lit. Much more than a typical LED/LCD screen. If your screen is brighter than a white sheet of paper, it's probably too bright and you are probably tiring your eyes.
The only moment when a sheet of paper is darker than my screen is when I'm in my bed, in a completely dark room watching or reading something, and that's not known as a very good thing to do for the eyes (and for the body posture neither by the way).
I'm not buying the fact we should darken the background of a text. I think we should let people reduce the brightness of their screen instead.
There is such a thing as too much contrast. Typical ergonomic workspace regulations (like the ASR in Germany for example) will tell you how much contrast any given type of workspace environment should have between the brightest and the darkest point for a reason.
Now someone with an old, washed out TFT might get a much different contrast when viewing a #000 #FFF page of text than someone with a modern HDR display if this is not accounted for in software. Now you could say they need to adjust their screen – but text is not the only thing people view on screens. Why would you throw away image and color fidelity, because some website doesn't fit that setup? We are on computers, why not just support different contrast levels like we do with dark mode?
--- ¹ except maybe black holes
I should have mentioned that I was thinking of a sheet of paper in the same room / with the same lightning, next to the screen we are speaking about. Otherwise, yes, indeed.
> why not just support different contrast levels
So what I understand from this is that we can't get this right (in HTML/CSS) for now because we don't have details about the environment of the user wrt lighting/contrast (preferences/perception).
It seems like something that should be fixed at the browser or the OS level. One should be able to say: "this is some black text on white background that needs to be displayed so as to be comfortable for the user given their environment" (or something). Maybe that needs to be the default by the way.
Until then, any forced value is going to suck for someone.
Advanced configuration could allow you to tune the curve continuously (or in a sufficient number of discreet steps that it seems to be continuous).
I think I noticed my Android phone at least doing a "I'll remember a relative brightness you want for this much light outside", though I haven't checked if it's really that.
Adapting to the ambient light and reading on paper which is never more than 90% DIFFUSE reflectance (typically 80% for paperbacks, and 70% for newspaper) is not at all like having polarized light beamed straight into your ocular medium to collide with your retina at well over 100% of the ambient adaptation level. Or words to that effect.
> _There is such a thing as too much contrast._
Yes, there is absolutely such a thing as too much contrast, however, I hesitate to say this as it is so often misunderstood—spatial frequency is the key factor to determine first. The contrast needed for small thin body text is very different than that needed for a large bold headline.
The thing that some find confusing is thinking that too much contrast with a light background means making the small thin text lighter grey, when in fact the text should stay darker tha #303030, and lower the luminance of the background to #e6e2dd. I say as much in the article.
Second, accusing posters of not reading articles is against the Hacker News guidelines.
Third, I bring all this up because the vitriol of your comment is no fun to read and brings down the site.
At no point were they making any of the suggestions the GP are criticising them for.
(Whether they rage quit or "merely said they almost did" is same difference).
So IMO, both of you are contributing constructively here.
If it's too much contrast for you, maybe your screen is not setup correctly (too bright), or you don't zoom enough. Or your room is not correctly lit. Black on white should be comfortable.
Don't force me to squint or to use way too much brightness sucking too much power to compensate for poor contrast.
People are fine with office suites despite (thanks to?) them defaulting to black on white. We would have known by the time it if was an issue.
I guess the real problem is that there's no real standard for what #fff means – it has to be interpreted through a colour space, which in turn does not talk about brightness, I think.
Done properly, moving away from #fff/#000 can be done in such a way that it looks excellent on better monitors and is usable, at very least not entirely unpleasant to read, on less capable ones.
> I will have a harder time reading your site
It not looking as nice for you is fine, as long as it is readable. If we held everything back to making sure it worked on all screens there would be a lot more plain-text-only sites/apps out there. A perfectly good option IMO, but try getting the general screen using public to agree with that!
Even with a bad screen there are usually adjustments you can make to help.
There are of course many pages out there that are too low contrast, or otherwise unpleasant, unless you are using a particularly good monitor setup a particular way for which…
> or just give up and go somewhere else.
… is a perfectly valid option. You don't owe them your attention, though likewise they generally don't owe you anything either.
Just because your screen is configured badly doesn’t mean we should make content unreadable for users with correctly calibrated screens.
This seems highly unlikely if your brightness isn't completely off. What cd/m2 are you at? I'm on a Eizo CG277 with built-in hardware self calibration. It's set to 120 cd/m2 and I have hard time thinking it could be painful to anyone. I much prefer #000 on #fff over lower contrast alternatives.
At the same time, #000000 may not be above 2 cd/m² at the absolute most if a pure black and a pure white pixel are shown right next to each other.
My screen is fine, probably as good as or better than what most people have. We can't optimize for the almost 0% of people who have calibrated screens to the detriment of the big majority of people.
Those norms also set a limit for the maximum amount of contrast allowed at a workspace, which #000000 on #ffffff violates if it’s shown on a color-calibrated screen with standard brightness.
> We can't optimize for the almost 0% of people who have calibrated screens to the detriment of the big majority of people.
We can’t just change the meaning of what definitions and terms mean just because it’s easier than making everyone follow the standard.
Create a color profile for your monitor, so your OS can compress contrast if your monitor isn’t powerful enough to reach the SDR sRGB specs.
Still, any standard prescribing "standard brightness" for office environments is bound to be nothing but a decent average or default. Even if there was biologically optimal display luminance, it would still depend on the environment lightning (which changes during the day if there's a single window in the room), and on the state of the viewers eyes (age, any visual problems or even temporary issues like tiredness), type of display...
The purpose of a standard isn't to be most preferred by any given person or "biologically optimal", it's to be...standard. Without a standard, a designer has no ability to pick a particular color and expect anything like that color to be what the end user sees. Without a standard, there's almost no point in discussing what text colors websites are or aren't using.
The GP was talking about using whatever "DIN norms for workspaces" regarding screen brightness are, so I don't see how that relates to colour calibration.
You also sound as if any one end user really cares if they are looking at exactly the right hue of blue when looking at the "hp" logo. If anything, the company and their marketing department care (for subliminal messaging?), but users really don't. I don't think anyone could pick a McDonald's red or yellow out of a given table of similar red/yellow hues.
But even so, if we were looking at any non-light-emitting content displaying colour (eg. a printout), it will look differently to your eye whether you are looking at it in dim light or in a very light setting, so designer can't do anything about that.
Anyone who knows even the most basic stuff about colour perception understands that it can't be decoupled from your environment (enter a darkroom and every colour is suddenly... black).
Colour calibration and standards are done so that you can guarantee that some things will look identical when displayed in exactly the same environment (so your two screens sitting next to each other show the same hues) or to reproducibly transfer between different mediums (eg. screen and paper), but there is no way you can guarantee that it will look identical for another user in a different environment.
Colour calibration is of limited use in general (eg. even different types of paper [think glossy vs matte] will produce different visual results), and while there's more stability with light-emitting mediums (like LCD screens) — because you, essentially, control some of the lightning as well — that breaks down for the average user because they do need to adjust the brightness according to their environment. Those who absolutely require reproducibility, control both their environment and their equipment.
https://www.iso.org/standard/57992.html
> that will ensure effective and comfortable viewing conditions for users with normal or adjusted-to-normal eyesight
Sounds like it did not do so for you, in the case of non-compliant websites with your compliant display.
I can't be bothered for my personal blog. $158 is my hosting cost for 3 years or so.
I'm sure people with calibrated screens can find a setting where black on white is comfortable, even temporarily, while most people just can't fix contrast lowered at the source. Including not visually impaired people in not ideal environments.
But the same issues apply in reverse if you try to reduce contrast because some idiot thought a 200:1 contrast for text was healthy.
My personal solution is relatively simple: I replace every monitor that’s too shitty to do sRGB at good contrast at 400 nits. For a T470/T480 I can recommend this panel: https://www.xelent-store.de/Innolux-N140HCG-GQ2-400cd-Low-Po...
"Screen configuration" means more things. You can optimize for readability, or you can optimize for faithfulness (and more). You should switch according to use.
Just like I've got to have filters that force websites not to use too contrasty colors.
I might add that office-type programs were developed at a time where 14 to 18 inch color CRTs were the latest and greatest. The image that modern flat screens deliver is much more dynamic and has way sharper edges, to the degree that maybe we should consider to artificially blur the entire display ever so slightly just so the higher Fourier frequencies get a bit less dominant.
Until we get HDR on the web, one sRGB size must fit all. At this point, accessibility and readability are top priority. You can always tone down your backlight, while someone else might have it at full blast and still not be able to read without squinting in the sunlight on a cheap display. I know who I'm more sympathetic to.
As I’ve said countless times before, we’ve got OS support for tonemapping HDR content onto SDR displays, now we need OS support for tonemapping SDR content onto shitty displays.
I don't need accurate colors when reading text, but I need it to be comfortable. It seems having color calibration would actually suck for me if I can't adjust brightness depending on the weather, on the hour of the day, on the season, on whether I'm tired or not, or on the location I currently am, or on what I'm doing (reading, programming, or watching a video). I need to be able to adjust brightness without fuss.
I guess I would buy dedicated hardware and put it in a well lit-controlled room if I needed accurate colors.
I want accurate colors because setting it up is a pain, and switching between accurate and inaccurate colors takes your eyes quite a while to readjust.
It’s much easier to just have everything in an accurate color mode and have content designed for that than to switch it around.
Proper color profiles are actually even more of a benefit for cheap displays than good displays as cheap displays profit from proper colors even more.
The issue with color on screens is a bit like the loudness wars in audio mixing: everybody tries to use the available bitspace to the max, because this made some sense in the days of 16 bit (or lower) audio. Nowadays much more dynamic delivery would be possible (with dynamic reduction as a user preference), yet there is no real, well designed system for such things in place.
Maybe that's to compensate for low contrast content?
You would wear out the brightness controls in no time unless you go out of your way to mandate dark mode on everything.
Another factor might be the dark adaptation of the iris, which could be helped by desk lights.
(Brightness is the adjustment that decreases the max white level without also making blacks brighter. So, a display that only has a contrast knob would count as missing a brightness adjustment.)
Even if the ratio stays the same, the darker shades suddenly are a lot more distinct as they just aren't consumed by artifacts and color shifts or even just glare anymore.
In addition, the paper it’s on is almost never pure white. And, as a reflective medium, the perceived colors of paper and ink vary with ambient lighting.
So in digital: should one create sufficient contrast to read? Yes, definitely do that. Stay well inside accessibility guidelines.
But a site absolutely does not need pure black text on white background to do that. And in fact at high screen brightness, that level of contrast risks creating little bits of ghost text in some people’s vision.
Similarly, it cannot boil water or charge my house's solar batteries if I display an all #fff screen.
(If it could do these things, then I'd argue for clamping contrast in the display driver, not in untrusted CSS code!)
Even in the realm of thermodynamically plausible displays, if it is so bright it's burning stuff into your retina, then turn the brightness down before you permanently have an xkcd burnt on to your retina!
Also, I'm reasonably certain such a monitor would fail safety certifications, so maybe don't buy black / gray market hardware, then ruin it for the rest of us?
The ideal situation is where people can change stuff to what works for them, which is why I use the Dark Reader extension. It's the best extension in that it not only lets you easily change brightness and contrast, light/dark, but, most of all, has a crowdsourced file that carries special settings for each website over which elements should be inverted, which elements shouldn't, or whether there's an element that shouldn't be touched at all, for instance.
I have used such extensions in the past (and even welcomed stuff like Chrome's automatic dark mode) but unless they come with perfect AI—which they don't—they're not gonna match Dark Reader's crowdsourcing.
That's why your display has a brightness control.
At least as long as we're stuck with implicit sRGB, until the web gets proper HDR support, don't murder the contrast of text. You never know the actual viewing conditions (probably less ideal than a well-lit office), and it's foolish to limit it at the source.
Not clear. We always normally printed in K - insaturated black. Or, "typographic black", or "sufficiently black black", or "just black". «[A]ctually black» requires a definition.
I find this hard to believe because in both cases what we actually perceive patterns in the light that enters our eyes. It would seem to follow that only aspects of the reading surface that cause difference in the light patterns (color, intensity, phase, coherence) and the time evolution of those patterns can affect matter when it comes to how well something works for reading.
If we determine, whether from printed text on paper, inked text in tattoos, skywriting in smoke, or anything else that certain relationships that some kinds or combinations of the aforementioned aspects of light matter or don't matter, that should remain true when we are reading from screens or from any other existing or yet to be developed form of reading device.
I would have no issue with sticking #000 on #FFF, except for the fact not everyone has e-ink displays and it's like shining an LED torch in everyone's faces. If it's inverted to #FFF on #000 this is pretty much solved - but this is a hard sell for most product teams.
A monitor can easily be adjusted so that the contrast between #000 and #fff isn't too much. In fact, most displays have a setting named "contrast" just for that, but what actually makes things too bright is the "brightness" one, that is usually more prominent. People will have opinions all over the place about it, because they do get results all over the place.
Instead, yes, you should avoid using the extrema. But that's because if you use them in a normal situation, you won't have any more extreme values when you need them in a special situation. People should be able to change the color schema anyway, so you are better with a functional choice.
https://www.sunvisiondisplay.com/reflective-lcd-monitor https://news.ycombinator.com/item?id=31203809 https://www.youtube.com/watch?v=Ehqj0W3koP0
This alone almost made me stop reading the answer.
This people is talking about accessibility. So, the more contrast, the better. You want to "highlight" something? Bold uses thicker fonts, underline adds also more pixels. You can add a carefully selected background, like a medium gray or other light color.
But black on white it not to highlight. Is to make it readable. To anyone.
That's controllable at the screen end.
Even if people use off-white background on webpages, you'd still get white screen real estate in UIs and other places (default Word and Excel background, for one. textarea boxes for another).
On the contrary, I highly recommend that for light backgrounds the, background directly under body text be something like #e6e2dd. I explain this in the article.
Yes it does.
> ... but it is equally important that things aren't too bright. You should avoid using extremes like #000000 and #ffffff ...
No, you shouldn't avoid them. Users are fully capable of adjusting the brightness and contrast of their monitors.
> Believe me, as a 50+ year old, I notice when it's hard to read things.
I believe you. I just don't think your personal experience is relevant.
It'd be a hack. The buttons are not sturdy enough for it, they're even not designed for it and the colour representation will be very incorrect.
Instead of asking every website to blast every user with the highest amount of contrast, modify your own display to do so if your eyes need it. That way the need and the solution is localized to where it should be.
This alone almost made me stop reading the article. What worked for printed text has no bearing for what works on an illuminated screen.
But honestly, it's not grey text that's the problem. I agree with the author that maintaining high contrast is important, but it is equally important that things aren't too bright. You should avoid using extremes like #000000 and #ffffff unless you're really trying to make something highlight.
#0f0f0f or even #202020 doesn't make an appreciable difference, at least to my eyes. Believe me, as a 50+ year old, I notice when it's hard to read things.