The Site Loads With No Styling At All
Unstyled text on a white page means the HTML loaded and the CSS did not. The content is intact, so this is a delivery problem rather than a broken site, and the browser will tell you exactly which kind.
The short version
- Open the console. The failing request and its status code name the cause.
- A 404 on the stylesheet means a path problem, usually a URL mismatch.
- A blocked request means mixed content after an SSL change.
- No request at all means the stylesheet was never enqueued.
First: what does the browser say?
Open developer tools, go to the Network tab, filter to CSS, and reload. One of four things is true:
| What you see | Cause |
|---|---|
| 404 on the stylesheet | Wrong path — URL mismatch or a missing file |
| Blocked as mixed content | Stylesheet requested over HTTP on an HTTPS page |
| 200 but the file is empty or HTML | A minification or combination plugin produced a broken file |
| No CSS request at all | The stylesheet was never enqueued — theme or plugin |
| 403 on the stylesheet | Permissions, or a firewall blocking the request |
1. A 404 on the stylesheet
Look at the URL that 404ed. If it points at the wrong domain, the wrong protocol or an old path, your site URL is wrong:
// wp-config.php
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
If the URL looks right, check the file is actually there over SFTP. A failed theme update can leave a theme folder incomplete.
2. Mixed content after an SSL change
The page is HTTPS and the stylesheet is requested over HTTP, so the browser blocks it. Run a proper search and replace:
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
# review, then run without --dry-run
Use a tool that understands serialised data. A plain SQL replacement corrupts serialised arrays.
3. A minification plugin broke it
Combining and minifying CSS is where this most often originates. Clear every cache, then disable minification and reload:
- Clear the plugin cache, the server cache and the CDN cache, in that order.
- Disable CSS combination first, then minification.
- If the site returns, re-enable one at a time to find which setting breaks it.
- Check whether “remove unused CSS” is stripping rules it should not.
4. The stylesheet was never enqueued
No CSS request at all usually means a child theme whose functions.php has a fatal error, or an enqueue that depends on a handle that no longer exists. Check the debug log:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
A child theme enqueueing with the wrong parent handle will silently load nothing. Verify the handle matches what the parent theme registers.
5. Only the admin is unstyled
If the front end is fine and wp-admin is plain text, the usual cause is CONCATENATE_SCRIPTS combined with a server limit, or a plugin breaking admin assets. Try:
define( 'CONCATENATE_SCRIPTS', false );
Quick checks
- Does a private window show the same thing? If not, it is your cache.
- Does the stylesheet URL load directly in a browser tab?
- Does the problem survive disabling all plugins?
- Does it survive switching to a default theme?
Common questions
Why only on some pages?
Usually a cache serving a broken version of one page. Purge every layer and recheck.
It worked an hour ago
Something changed — a plugin update, a cache regeneration, or an SSL change. Check what.
Is my site hacked?
Unlikely from this symptom alone. Missing CSS is almost always a path or cache problem.
Sumit
Writes everything on TechMozz.