NoCSS is a custom-written stylesheet that explicitly sets CSS properties to browser-default values, recreating the unstyled look of a page with no CSS.
The strategy is simple but powerful:
* with !important to clear common author styling regardless of specificity!important for root, body, headings, lists, tables, and form elements::before and ::after*, *::before, *::after {
background: transparent !important;
margin: 0 !important;
padding: 0 !important;
/* ... explicit browser-default values ... */
}NoCSS uses only standard CSS properties with explicit values, so it works in all browsers:
Note: Since NoCSS uses explicit property values rather than relying on special CSS keywords, it has broad browser compatibility.
While NoCSS is powerful, it has some limitations you should be aware of:
Inline styles with !important will still take precedence over NoCSS. Regular inline styles are overridden. For example:
<div style="color: red !important;">Text</div>Styles applied dynamically via JavaScript after NoCSS loads may not be fully overridden, especially if they use inline styles or high-specificity selectors.
Styles within Shadow DOM (used by web components) cannot be affected by external stylesheets like NoCSS.
User-agent styles differ between browsers. A page with NoCSS applied will look slightly different in Chrome vs. Firefox vs. Safari.
NoCSS is designed to be CDN-friendly with optimal caching headers:
Content-Type: text/css; charset=utf-8Cache-Control: public, max-age=31536000, immutable (1 year)Access-Control-Allow-Origin: * (CORS enabled)Best Practice: Use versioned filenames (e.g., /no.v1.min.css) for production to ensure immutable caching works correctly. When you need to update, release a new version with a new filename.
NoCSS follows a versioning strategy to enable immutable caching:
Latest: /no.css (may change)
Versioned: /no.v1.min.css (immutable)
When to bump versions:
/no.v2.css and /no.v2.min.css/no.css to the new versionRecommendation: Always use versioned URLs in production (/no.v1.min.css) to avoid breaking changes and leverage long-term caching.
If using the bookmarklet version, be aware:
For security issues or vulnerability reports, please see our SECURITY.md file for responsible disclosure guidelines.