Why Does a Website Screenshot Have Different Colors from the Live Page?
Screenshots can look washed out, brighter, or more saturated than the live page. Trace the color path to find whether the cause is the browser, display, file, or viewer.
A website screenshot can look brighter, duller, more saturated, or washed out because its colors pass through several stages: CSS and images, the browser, the operating system, the display, the capture method, the saved file, and the image viewer. The screenshot is not simply the live page frozen; its color profile may be missing or interpreted differently, a wide-gamut color may be converted, or HDR content may be shown in an SDR context. Check the file and viewing path before changing your CSS.
How color gets from a web page into a screenshot
A screenshot’s appearance depends on both the color values and the information that tells software how to interpret them. A simplified path is:
- Page content: CSS colors and raster images provide source colors.
- Browser rendering: The browser composites the page and handles tagged images and color spaces.
- Operating system and display: Color management can convert source colors for the selected display profile.
- Capture: The browser, operating system, or capture API produces an image representation.
- File and viewer: The saved file may contain color-space information, and the viewer may honor, ignore, or convert it.
- Sharing or export: A later tool may transform the image or change how its profile is handled.
CSS Color Level 4 specifies that HTML colors and untagged images are treated as sRGB unless otherwise specified. A valid tagged image, by contrast, belongs to its specified color space. That distinction matters: identical-looking RGB numbers can describe different colors when their color spaces differ. See the CSS Color Module Level 4 color-space rules.
ICC profiles describe color spaces or devices and support conversions between source colors and an output display. If profile information is missing or inaccurate, the conversion can produce a different appearance. The W3C’s sRGB guidance explains this profile model; it is useful for the fundamentals, not as a current browser compatibility chart.
Common causes of screenshot color differences
1. The image profile is missing or interpreted differently
A screenshot file may carry an embedded ICC profile or another supported color-space marker. If that information is absent, stripped during an export, or interpreted differently by a viewer, colors can shift. Untagged images are generally treated as sRGB in the CSS color model, but do not assume every capture or export follows the same path.
Clue: The same file looks different in different image viewers, or the mismatch appears only after saving, exporting, uploading, or sharing.
2. A wide-gamut color is being converted
Display P3 can represent more saturated colors than sRGB. A page or image using a wide-gamut color can therefore look different when shown on a narrower-gamut display or converted by software with different color-management behavior. WebKit’s explanation of color on the web and wide-gamut displays describes why conversion can differ across browsers and platforms. It should not be treated as a present-day compatibility table.
Clue: The discrepancy is strongest in vivid reds, greens, or other highly saturated colors, or it changes on another display or in another browser.
3. HDR content is being viewed in an SDR context
HDR and standard dynamic range (SDR) represent brightness differently. A screenshot made through an HDR-capable capture path can later be viewed or shared by software expecting SDR. The result depends on the capture method, file representation, display, and viewer. Apple’s ScreenCaptureKit documentation describes an HDR screenshot output using extended sRGB, but that detail should not be generalized to every Apple capture API or other platforms.
Clue: The difference is most noticeable in highlights or brightness, or appears after moving the image between HDR and SDR displays or applications.
4. The display profile is wrong or the monitor needs calibration
The live page is seen through the operating system’s display profile. A profile that does not accurately describe the display can make the live page look inaccurate, even if the screenshot file is fine. A monitor calibrator can help when display accuracy or the selected profile is the cause. It cannot restore profile information removed from an image or fix a viewer that misinterprets the file.
Clue: The live page and other images look wrong on this display, while the screenshot looks reasonable on a different, color-managed display.
5. The browser, operating system, or capture route differs
Browser rendering and color conversion can vary with platform, display, and capture route. A screenshot from a browser automation tool, an operating-system shortcut, and a browser’s own capture feature may not take the same path. Compare like with like before concluding that CSS changed.
Diagnose the mismatch one step at a time
- Keep the first comparison controlled. Use the same page, browser, display, and zoom. Record which capture method produced the file.
- Compare viewers on the same display. Open the exact same screenshot in a color-managed image viewer and in the viewer where you noticed the issue. If only one viewer differs, investigate its color handling.
- Inspect the file’s color information. Check whether it contains a valid ICC profile or another color-space marker. Do not infer the profile from how the image looks.
- Determine whether the capture is HDR or SDR. Check the capture route and file representation, then note whether the viewer or destination expects SDR. Platform behavior varies, so there is no universal setting to apply.
- Check the operating system’s display profile. Confirm the selected profile matches the display. If the live page itself seems inaccurate, display calibration may be relevant.
- Change one factor at a time. Compare another browser, display, or capture method only after recording the original setup. This helps locate the stage where the difference appears.
- Check export and sharing separately. If the local image looks right but the uploaded version does not, compare the local and shared files and inspect the steps between them before changing page CSS.
This sequence is a diagnostic method, not a guarantee that a specific viewer or sharing service strips profiles. Inspect the actual file and path before drawing that conclusion.
Capture and compare a page consistently
When investigating a color bug, use one browser, one viewport, one capture method, and the same output format for each comparison. Save the original file before an editor or sharing service processes it. Record the browser and operating system, display profile, capture route, output format, and whether the source or capture path is HDR-aware. These notes make it easier to tell a page-rendering difference from a file or viewing difference.
For automated browser capture, use the same capture settings for every run and keep the original output. A capture tool can make the capture repeatable, but it cannot make different displays, profiles, or viewers interpret color identically.
What to check in the image file
- Whether an ICC profile or other color-space marker is present and valid.
- Whether the image is intended as sRGB, Display P3, or another color space.
- Whether the file is HDR/extended-range or ordinary SDR, where that information is available.
- Whether the file changes after export, optimization, upload, or sharing.
Use an image inspection tool that can report metadata and color profiles. The exact commands and fields depend on the tool and file format, so do not assume a single metadata command covers every image type.
Troubleshooting by symptom
| Symptom | Likely area to investigate | Next step |
|---|---|---|
| Screenshot looks washed out in one viewer only | Viewer color management or file interpretation | Open the same file in a color-managed viewer and inspect its embedded profile. |
| Screenshot changes after export or sharing | Export, upload, or destination handling | Compare the original and delivered files, including their profile information. |
| Bright highlights look different | HDR-to-SDR conversion or display capabilities | Identify whether capture and viewing paths use HDR or SDR; compare in a consistent context. |
| Highly saturated colors differ most | Wide-gamut color and conversion | Check whether the source uses Display P3 or another wide-gamut space and whether the destination supports it. |
| Live page and many images look inaccurate on one monitor | Operating system display profile or monitor calibration | Check the selected display profile and consider calibration if display accuracy is the suspected cause. |
| Only one browser’s capture differs | Browser, operating system, or capture route | Repeat the capture with the same viewport and output format, changing only the browser or method. |
Reliability and performance considerations
Color diagnosis is most reliable when each comparison changes one variable and preserves the original file. Repeatedly opening and resaving an image can add more transformations, making the original cause harder to identify. Keep a copy of the initial capture and compare it directly with any processed version.
A screenshot’s pixel data can be stable while its displayed appearance changes with the viewer or monitor. For visual regression work, standardize the browser, operating system, display or rendering environment, capture route, output format, and color handling. Compare image data under that same setup, and investigate profile or HDR metadata when colors are the specific concern. This controls sources of variation; it does not promise identical appearance on every physical display.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. Its one-request API captures a URL as an image or PDF; see the ScreenshotNeo API documentation for options and configuration. A capture service gives you a repeatable way to request a page screenshot, while profile, gamut, HDR, and viewer handling still depend on the actual capture and viewing path.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
- Cookie banners are accepted and removed before the shot, along with known newsletter popups and chat widgets.
- Bot checks, blank pages, failed loads, timeouts, and cache hits are never billed; response headers identify the page verdict and billing status.
- An MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs.
- The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free plan and get 1,000 screenshots a month with no card.
FAQ
Does a screenshot preserve exactly what I saw on screen?
It preserves image data produced by a capture path. How that data appears later depends on color-space information, the viewer, and the destination display.
Will converting every screenshot to sRGB fix the problem?
Not necessarily. It may help when a wide-gamut conversion is the cause, but it will not correct every HDR, profile, display, or viewer mismatch. Diagnose the file and viewing path first.
Should I buy a monitor calibrator?
Only if an inaccurate display profile or monitor is a plausible cause. Calibration does not fix profile loss during export or incorrect file interpretation by a viewer.
Is this always a CSS bug?
No. If the page looks right in its original browser but the saved or shared image differs, investigate capture, file metadata, and viewing software before editing CSS.


