This guide walks you through comparing your web app’s light and dark theme screenshots side by side, so you can spot contrast issues, missing elements, and styling inconsistencies before you ship. You’ll learn a repeatable method using browser tools and free image editors, and what to check in each theme. No advanced design skills are needed—just a browser and a way to capture screenshots.
What You’ll Need
- A web browser (Chrome, Firefox, Edge, or Safari) with developer tools
- A screenshot tool—built-in browser capture, a browser extension, or a free app like Snipping Tool (Windows) or Grab (macOS)
- A simple image editor—MS Paint, Preview (macOS), or a free online tool like Photopea or Canva
- Optional: a browser extension that forces dark mode (like Dark Reader) if your app doesn’t have a native dark theme toggle
Step-by-Step
- Open your app in a clean browser profile. Use an incognito/private window or a fresh browser profile to avoid cached styles or extensions interfering with your theme rendering.
- Navigate to the page you want to compare. Pick a representative page—a dashboard, a form, or a landing page—that uses your app’s key components (buttons, inputs, cards, text).
- Set the theme to light mode. If your app has a theme toggle, click it. If not, use your browser’s developer tools to emulate the color scheme: open DevTools (F12), go to the Rendering tab (Chrome/Edge) or the Style Editor (Firefox), and set “Emulate CSS prefers-color-scheme” to
light. Reload the page to apply. - Resize the viewport to a standard size. Use DevTools’ device toolbar (Ctrl+Shift+M / Cmd+Shift+M) and set a common resolution like 1440×900 for desktop and 375×667 for mobile. This ensures your screenshots are comparable.
- Take a full-page screenshot. In Chrome/Edge: open DevTools, click the three-dot menu in the device toolbar, choose “Capture full size screenshot.” In Firefox: right-click the page and select “Take a Screenshot,” then choose “Full page.” In Safari: use the Develop menu’s “Take Screenshot” or a third-party tool. Save the file as
light-desktop.png(orlight-mobile.png). - Switch to dark mode. Use your app’s toggle, or emulate
prefers-color-scheme: darkin DevTools. Reload the page. - Take the same screenshot in dark mode. Use the exact same viewport size and scroll position (if not full-page). Save as
dark-desktop.png. - Repeat for all key pages and viewports. Test at least the login page, a data-heavy page (table or chart), and a form with multiple input types. Do both desktop and mobile if your app is responsive.
- Open both screenshots side by side. In your image editor, create a new canvas with width = (image width × 2) + 20px, and height = image height. Paste the light image on the left and the dark on the right, with a 20px gap in between. Export as a single comparison image.
- Alternatively, use a browser extension for automatic comparison. Some extensions like “Dark Reader” allow side-by-side preview, but for a pixel-accurate comparison, the manual method above is more reliable.
- Inspect each element visually. Look for: text that disappears (low contrast), icons that blend into backgrounds, borders that vanish, shadows that look odd in dark mode, and images that are too bright.
- Use a color contrast checker. Pick a text and background color from each screenshot using the eyedropper tool in your image editor, then run them through a contrast checker (like WebAIM’s). Aim for at least 4.5:1 for normal text, 3:1 for large text.
- Check for missing or duplicated elements. Sometimes a component is hidden by a theme-specific CSS rule. Compare the two screenshots to ensure every button, label, and icon appears in both themes.
- Document your findings. Create a simple table with columns: Page, Element, Light Theme Issue, Dark Theme Issue, Severity. This helps you prioritize fixes.
Common Mistakes
- Forgetting to reload after switching themes. Some apps apply theme changes without a reload, but others need one. Always reload to ensure the CSS variables are updated.
- Comparing different viewport sizes. If you take the light screenshot at 1440px and the dark at 1280px, elements will wrap differently, making the comparison misleading.
- Ignoring scroll position. If you’re not doing full-page screenshots, make sure you’re at the same scroll position on both. Otherwise, you’re comparing different parts of the page.
- Using a screenshot tool that adds its own color profile. Some tools apply color adjustments. Use the browser’s built-in capture or a tool set to “original” colors.
- Only checking the homepage. The most common theme bugs appear on less-tested pages like settings, error pages, or modals.
Tips
- Use CSS variables in your app. If you’re a developer, define colors as variables so themes are consistent and easy to update. This also makes screenshot comparison simpler because you know exactly what values to expect.
- Take screenshots in the same session. If you close the browser between captures, a font or network resource might load differently, causing subtle layout shifts.
- Automate with Playwright or Puppeteer. If you need to do this regularly, write a script that opens your app, sets the color scheme, and captures screenshots automatically. This saves time and ensures consistency.
- Use a grid overlay. In your image editor, place a grid over both images to quickly spot alignment differences.
- Check hover and focus states. Screenshots only show static states, but theme bugs often appear on hover. Use DevTools to force the :hover pseudo-class on buttons and links, then capture those as well.
Troubleshooting
- Your app doesn’t have a dark mode toggle. Use the browser’s emulation (step 3) to force
prefers-color-scheme: dark. If your app uses@media (prefers-color-scheme: dark), this will trigger the dark styles. If it doesn’t, you may need to install a dark mode extension just to see what it would look like, but note that this won’t reflect your actual app’s dark theme. - Screenshots come out black or blank. This often happens with full-page capture on pages with fixed backgrounds or heavy animations. Try scrolling slowly before capturing, or use a standard screenshot tool instead.
- Themes don’t switch when you click the toggle. Check if the toggle is actually changing a class on the
<html>or<body>element. Open DevTools and inspect the toggle to see what it does. If it’s a JavaScript error, fix that first. - Colors look different between screenshots. Your monitor’s color profile might be affecting one screenshot. Use a color-managed browser and set your display to sRGB for accurate comparison.
- Elements are missing in dark mode. This is usually a CSS specificity issue—a dark theme override isn’t being applied. Check the browser’s console for errors and inspect the missing element to see what styles are applied.
Frequently Asked Questions
Can I compare screenshots without an image editor?
Yes, you can use a browser extension that shows two pages side by side, or open two browser windows and place them next to each other. However, an image editor gives you a permanent record and lets you zoom in on details.
What is the best viewport size to use?
Use the most common screen size for your users—often 1440×900 for desktop and 375×667 for mobile. If you’re unsure, check your analytics for the top resolutions.
Should I compare every page of my app?
Not initially. Start with the most important pages—the ones users see first or use most. Then add edge cases like error pages, empty states, and pages with charts or images.
How do I check contrast if my design tool doesn’t have a checker?
Use a free online contrast checker. Pick the text color and background color from your screenshot using an eyedropper tool, then paste the hex values into the checker.
What if my app doesn’t support dark mode natively?
You can still test how it would look by using a browser extension that forces dark mode, but remember that the result won’t match your actual implementation. It’s a preview, not a substitute for real dark mode styles.
How often should I run this comparison?
Run it after every major design change, before a release, and whenever you add new components. It’s also a good idea to include it in your QA checklist.
Related
General steps for current mainstream versions; menus can differ by device and version. See the disclaimer or report an error.
More in this bed
- Fix Payday 2 Crash Issues on PC: A Step-by-Step Guide
- Remove a Remote Access Trojan from Windows PC
- Google Pixel & Pixel XL: How to Turn Off Snooze
- Facebook as AIM Messenger: Step-by-Step Guide
- iPhone 17 SOS Service Issue: How to Fix It
- Install VLC Extensions on Linux