A visual bug appears only in production.
Loading Unminifier Beautifier…
Expands production CSS so you can search for specific selectors and properties
Enables line-by-line comparison against your source CSS to find discrepancies
Identifies rules that were merged, altered, or incorrectly included by the build
Browser-based: instant expansion with no tools to install
Drop the Unminifier Beautifier into any page — blog post, product docs, intranet, school portal — with a single line of HTML. Your visitors get the full tool, processed entirely in their browser. No backend, no uploads, no signup.
Embed code
<iframe
src="https://www.fixtools.io/css-tool/unminifier-beautifier?embed=1"
width="100%"
height="780"
frameborder="0"
style="border:0;border-radius:16px;max-width:900px;"
title="Unminifier Beautifier by FixTools"
loading="lazy"
allow="clipboard-write"
></iframe>Attribution-friendly: a small "Powered by FixTools" link appears in the embed footer.
Production-only visual bugs fall into a small set of categories. The most common is a build pipeline that applied an unwanted transformation: cssnano merged two rules that should have been separate, a PostCSS plugin modified a value, or a concatenation step included an extra stylesheet that overrides a rule. The second category is a deployment issue: a cache-busting failure means the browser is loading an old version of the CSS. The third is a source-level error that is invisible in development but visible in production because the development environment applies default styles that production does not. Unminifying the production CSS helps diagnose the first two categories and provides evidence for the third.
The debugging workflow starts with extracting the production CSS from Chrome DevTools Network tab with Disable Cache enabled. Pasting it into FixTools and clicking Unminify takes under a second. Now you have two readable files: the unminified production CSS and your source CSS. Open both in a text editor or diff tool. Search for the class name or property involved in the visual bug. Compare the production rule against the source rule. Differences between them are your bug candidates: a changed value, a merged selector, an extra declaration, or a missing declaration are all visible in a readable diff but invisible in a minified diff.
When the production and source rules look identical, the bug category is likely a specificity conflict or a cascade ordering issue. In the unminified production CSS, search for every rule that targets the selector in question. The production CSS concatenation order determines cascade precedence for equal-specificity rules: a later rule overrides an earlier one. Your source files may have been concatenated in a different order than you expected, causing a rule that was harmless in development to override another rule in production. Reading the full unminified CSS in order reveals this kind of ordering conflict in a way that the DevTools Styles panel alone cannot.
Before reaching for the unminifier, always check whether a source map is reachable. Scroll to the bottom of the production CSS in the Network tab response and look for a sourceMappingURL comment. If the referenced .css.map file loads when you fetch it directly, attach it via DevTools and the Sources panel will show the authored source including comments, original variable names, and the file path each rule came from. That is strictly higher fidelity than unminification because it shows what the developer actually wrote rather than what survived minification. Production builds often strip or 404 the map for security and bandwidth reasons; when that happens, unminification is the right alternative. The decision should be deliberate per debugging session because the map answers questions (which source file, which original class name) that unminification cannot recover. Treat the two as complementary tools rather than substitutes.
Paste minified production CSS from your site's Network tab response. The expanded output makes every selector and property searchable and comparable against your source, turning an opaque production file into a readable debugging artifact.
Step-by-step guide to unminify css for debugging live site issues:
Reproduce the bug and identify the element
Open the live production site in Chrome. Reproduce the visual bug. Open DevTools with F12, click on the affected element in the Elements panel, and note the class names applied to it. These are the selectors you will search for in the unminified CSS.
Extract the production CSS with cache disabled
Click the Network tab in DevTools. Check Disable Cache. Reload the page with Ctrl+R. Find the main CSS bundle in the Network tab, click it, and copy the full Response body. This is the exact CSS your browser is applying.
Unminify and search for the relevant selector
Open FixTools CSS Unminifier, paste the production CSS, and click Unminify. Copy the output to a text editor. Search for the class names you noted from the Elements panel. Read every rule that targets the affected element.
Compare against source CSS and identify the discrepancy
Open your source CSS alongside the unminified production CSS. Find the same selector in both files. Compare the declarations line by line. Any difference in property values, order, or selector grouping between the two files is a candidate for the root cause of the visual bug.
Common situations where this approach makes a real difference:
Finding a navigation height regression after a deployment
After a deployment, the navigation bar is 8px taller on the live site than on the developer's local machine. The developer extracts the production CSS, unminifies it, and searches for the navigation class. The unminified output shows that the navigation rule in production has padding: 16px 24px while the source has padding: 8px 24px. Tracing back through the build history reveals that a branch merge introduced a duplicate rule, and the build pipeline's cssnano kept the later version. The developer removes the duplicate from the source and the fix deploys correctly.
Diagnosing a font colour discrepancy between environments
An article page uses a dark grey text colour in development but renders with a lighter grey in production. The developer opens the production site, extracts the CSS, and unminifies it. Searching for the article body class reveals two rules targeting it in the production CSS: one from the base stylesheet and one from a third-party analytics widget stylesheet that was recently added. The widget stylesheet loaded after the base stylesheet and overrides the colour. The developer increases the specificity of the article body rule to resolve the override.
Locating a mobile-only layout break
A product card grid layout works correctly at desktop width but breaks at 480px viewport width, showing a single column instead of two columns. The developer unminifies the production CSS and searches for the @media (max-width: 480px) block. The unminified output shows that inside the mobile breakpoint, the grid-template-columns property is overridden to 1fr. Tracing back, a utility class that was applied to the grid container sets this value. The developer removes the utility class from the HTML and the two-column layout is restored.
Proving that a CSS hotfix reached production
A developer deployed a CSS hotfix during an incident and needs to confirm it is live before resolving the incident ticket. They extract the production CSS with cache disabled, unminify it, and search for the specific property and selector from the hotfix. Finding the correct value in the unminified output confirms the hotfix is deployed and active. The incident ticket is closed with the unminified CSS excerpt as evidence that the fix is in production.
Get better results with these expert suggestions:
Diff the unminified production CSS against the unminified source CSS
Unminify both the current production CSS and your development source CSS, then run a diff between the two formatted files. The diff output shows exactly which lines differ between what you intended to ship and what is actually in production. This is the most direct path to identifying build pipeline discrepancies and is far more actionable than comparing minified files.
Use DevTools Coverage to identify unreachable overrides
After unminifying, the readable CSS helps you understand the structure. But understanding which rules actually execute requires DevTools Coverage. Open Coverage, interact with the page to reproduce the bug, and check which rules are marked as unused. An override rule marked as unused may indicate that it is being applied after a rule that already wins the cascade, or that it targets a selector that no element on the page matches.
Check @media query breakpoints for mobile-specific bugs
After unminifying, search for @media to locate every breakpoint block. If the bug is visible on mobile, find the mobile breakpoint (max-width: 768px or similar) and read every rule inside it. Production CSS concatenation sometimes changes the order of media query blocks relative to base styles, affecting which rules override which at specific viewport widths.
Look for specificity-boosting patterns in the unminified output
After unminifying, search for patterns like html body, #app ., or :root to find selectors with artificially boosted specificity. These high-specificity selectors are common in third-party stylesheets and legacy code. If one of these selectors targets the same element as your rule, it will win the cascade regardless of source order. The unminified CSS makes these patterns visible and searchable.
Always use Disable Cache when extracting production CSS
Before copying production CSS from the Network tab, check the Disable Cache box in DevTools. A cached stylesheet may be days old. Without disabling cache, you may unminify the wrong version of the CSS and spend time debugging a file that is not what the browser is currently using.
Search for the bug's selector, not just the property
After unminifying, search for the full selector that targets the buggy element, not just the property name. The property may appear in dozens of rules. Searching for the specific selector narrows your focus to the handful of rules that directly affect the element, making the comparison faster.
Check rule count before and after your fix
Count how many times a selector appears in the unminified production CSS. If the same selector appears more than once, there is a cascade conflict. After applying your fix, unminify the new production build and confirm the selector count is what you expect.
More use-case guides for the same tool:
Open the full Unminifier Beautifier — free, no account needed, works on any device.
Open Unminifier Beautifier →Free · No account needed · Works on any device