Discover new workflows in this comprehensive reference of Chrome DevTools features related to viewing and changing CSS.
See View and change CSS to learn the basics.
The Elements panel of DevTools lets you view or change the CSS of one element at a time.
The h1 element that's highlighted blue in the DOM Tree above is the selected element. To the right, the element's styles are shown in the Styles pane. To the left, the element is highlighted in the viewport, but only because the mouse is currently hovering over it in the DOM Tree.
See View an element's CSS for a tutorial.
There are many ways to select an element:
document.querySelector('p') in the Console, right-click the result, and then select Reveal in Elements panel.Use the Elements > Styles and Computed panes to view CSS rules and diagnose CSS issues.
The Styles pane displays links in various places to various other places, including but not limited to:
var() calls, to custom property declarations.animation shorthand properties, to @keyframes.Here are some of them highlighted:
Links may be styled differently. If you're not sure if something is a link, try clicking it to find out.
To see a tooltip with a short CSS description, hover over the property name in the Styles pane.
Click Learn more to go to an MDN CSS Reference on this property.
To turn the tooltips off, check Don't show.
To turn them back on, check Settings > Preferences > Elements > Show CSS documentation tooltip.
Hover over a selector to see a tooltip with its specificity weight.
Hover over a --custom-property to see its value in a tooltip.
The Styles pane recognizes many kinds of CSS issues and highlights them in different ways.
See Understand CSS in the Styles pane.
The Styles pane shows you all of the rules that apply to an element, including declarations that have been overridden. When you're not interested in overridden declarations, use the Computed tab to view only the CSS that's actually being applied to an element.
Check the Show All checkbox to see all properties.
See Understand CSS in the Computed pane.
Use the Computed pane. See View only the CSS that's actually applied to an element.
Check the Show All checkbox in the Computed pane. See View only the CSS that's actually applied to an element.
Alternatively, scroll down the Styles pane and find sections named Inherited from <element_name>.
@property at-rulesThe @property CSS at-rule lets you define CSS custom properties explicitly and register them in a stylesheet without running any JavaScript.
Hover over the name of such property in the Styles pane, to see a tooltip with the property's value, descriptors, and a link to its registration in the collapsible @property section at the bottom of the Styles pane.
To edit an @property rule, double-click its name or value.
@supports at-rulesThe Styles pane shows you the @supports CSS at-rules if they are applied to an element. For example, inspect the following element:
If your browser supports the lab() function, the element is green, otherwise it's purple.
@scope at-rulesThe Styles pane shows you CSS @scope at-rules if they are applied to an element.
The new @scope at-rules are a part of the CSS Cascading and Inheritance Level 6 specification. These rules allow you to scope CSS styles, in other words, explicitly apply styles to specific elements.
Note: The @scope at-rule feature is experimental. To test it, enable the Experimental Web Platform features flag in chrome://flags/#enable-experimental-web-platform-features. Otherwise, the preview below doesn't work.
View the @scope rule in the following preview:
@scope rule.In this example, the @scope rule overrides the global CSS background-color declaration for all <p> elements inside elements with a card class.
To edit the @scope rule, double-click it.
To view the box model of an element, go to the Styles pane and click the Show sidebar button in the action bar.
To change a value, double-click on it.
Use the Filter text box on the Styles and Computed panes to search for specific CSS properties or values.
To also search inherited properties in the Computed pane, check the Show All checkbox.
To navigate the Computed pane, group the filtered properties in collapsible categories by checking Group.
To toggle a pseudo-class like :active, :focus, :hover, :visited, :focus-within or focus-visible:
In the viewport, you can see that DevTools applies the background-color declaration to the element, even though the element is not actually hovered over.
See Add a pseudostate to a class for an interactive tutorial.
Pseudo-elements let you style specific parts of elements. Highlight pseudo-elements are document portions with a "selected" status and they are styled as "highlighted" to indicate this status to the user. For example, such pseudo-elements are ::selection, ::spelling-error, ::grammar-error, and ::highlight.
As mentioned in the specification, when multiple styles conflict, cascade determines the winning style.
To enable this feature, run Chrome with the --enable-blink-features=HighlightInheritance flag.
To better understand the inheritance and priority of the rules, you can view the inherited highlight pseudo-elements:
I inherited the style of my parent's highlight pseudo-element. Select me!
Select a portion of the text above.
In the Styles pane, scroll down to find the Inherited from ::selection pseudo of... section.
Cascade layers enable more explicit control of your CSS files to prevent style-specificity conflicts. This is useful for large codebases, design systems, and when managing third-party styles in applications.
To view cascade layers, inspect the element below and open Elements > Styles.
In the Styles pane, view the 3 cascade layers and their styles: page, component and base.
To view the layer order, click the layer name or the Toggle CSS layers view button.
The page layer has the highest specificity, therefore the element's background is green.
To view a page in print mode:
Rendering and select Show Rendering.The Coverage tab shows you what CSS a page actually uses.
Press Command+Shift+P (Mac) or Control+Shift+P (Windows, Linux, ChromeOS) while DevTools is in focus to open the Command Menu.
Start typing coverage.
Select Show Coverage. The Coverage tab appears.
Click Reload. The page reloads and the Coverage tab provides an overview of how much CSS (and JavaScript) is used from each file that the browser loads.
Green represents used CSS. Red represents unused CSS.
Click a CSS file to see a line-by-line breakdown of what CSS it uses in the preview above.
On the screenshot above, lines 55 to 57 and 65 to 67 of devsite-google-blue.css are unused, whereas lines 59 to 63 are used.
See Force DevTools Into Print Preview Mode.
From a single drop-down menu in the Styles pane, you can copy separate CSS rules, declarations, properties, values
Additionally, you can copy CSS properties in JavaScript syntax. This option is handy if you're using CSS-in-JS libraries.
To copy CSS:
In the Elements > Styles pane, right-click a CSS property.
Select one of the following options from the drop-down menu:
property: value;property name.value.selector[, selector] {
property: value;
property: value;
...
}propertyInCamelCase: 'value'property: value;
property: value;
...propertyInCamelCase: 'value',
propertyInCamelCase: 'value',
...
Since the order of declarations affects how an element is styled, you can add declarations in different ways:
style attribute to the element's HTML.What workflow should you use? For most scenarios, you probably want to use the inline declaration workflow. Inline declarations have higher specificity than external ones, so the inline workflow ensures that the changes take effect in the element as you'd expect. See Selector Types for more on specificity.
If you're debugging an element's styles and you need to specifically test what happens when a declaration is defined in different places, use the other workflow.
To add an inline declaration:
style attribute has been added to the element.On the screenshot above, the margin-top and background-color properties have been applied to the selected element. In the DOM Tree you can see the declarations reflected in the element's style attribute.
To add a declaration to an existing style rule:
On the screenshot above, a style rule gets the new border-bottom-style:groove declaration.
Double-click a declaration's name or value to change it. See Change enumerable values with keyboard shortcuts for shortcuts for quickly incrementing or decrementing a value by 0.1, 1, 10, or 100 units.
While editing an enumerable value of a declaration, for example, font-size, you can use the following keyboard shortcuts to increment the value by a fixed amount:
Decrementing also works. Just replace each instance of Up mentioned above with Down.
You can use your pointer to change any property with length, such as width, height, padding, margin, or border.
To change the length unit:
Hover over the unit name and notice that it's underlined.
Click on the unit name to select a unit from the drop-down.
To change the length value:
Hover over the unit value and notice that your pointer changes to a horizontal double-headed arrow.
Drag horizontally to increase or decrease the value.
To adjust the value by 10, hold Shift when dragging.
To add a class to an element:
To toggle automatic dark mode or emulate the user's preference of light or dark themes:
On the Elements > Styles pane, click Toggle common rendering emulations.
Select one of the following from the drop-down list:
prefers-color-scheme to dark automatically.This drop-down is a shortcut for Emulate CSS media feature prefers-color-scheme and Enable automatic dark mode options of the Rendering tab.
To enable or disable a class on an element:
To add a new style rule:
On the screenshot above, DevTools adds the h1.devsite-page-title style rule after clicking New Style Rule.
When adding a new style rule, click and hold New Style Rule to choose which stylesheet to add the style rule to.
To toggle a single declaration on or off:
On the screenshot above, the color property for the currently-selected element is toggled off.
See the corresponding section in Inspect CSS grid.
See Inspect and debug HD and non-HD colors with the Color Picker.
The Angle Clock provides a GUI for changing <angle>s in CSS property values.
To open the Angle Clock:
Select an element with angle declaration. For example, select the text below.
In the Styles pane, find the transform or background declaration that you want to change. Click on the Angle Preview box next to the angle value.
The small clocks to the left of -5deg and 0.25turn are the angle previews.
Click the preview to open the Angle Clock.
Change the angle value by clicking on the Angle Clock circle or scroll your mouse to increase / decrease the angle value by 1.
There are more keyboard shortcuts to change the angle value. Find out more in the Styles pane keyboard shortcuts.
The Shadow Editor provides a GUI for changing text-shadow and box-shadow CSS declarations.
To change shadows with the Shadow Editor:
Select an element with a shadow declaration. For example, select the element below.
In the Styles pane, find a shadow icon next to the text-shadow or box-shadow declaration.
Click the shadow icon to open the Shadow editor.
Change the shadow properties:
box-shadow). Pick Outset or Inset.box-shadow). Drag the slider or specify a value.Observe the changes applied to the element.
The Easing Editor provides a GUI for changing the values of transition-timing-function and animation-timing-function.
To open the Easing Editor:
<body> element on this page.transition-timing-function, animation-timing-function declarations, or the transition shorthand property. To adjust timings with a click, use the presets in the Easing Editor:
elastic, bounce, or emphasized.| Timing keyword | Preset | Cubic Bezier |
|---|---|---|
| ease-in-out | In Out, Sine | cubic-bezier(0.45, 0.05, 0.55, 0.95) |
| In Out, Quadratic | cubic-bezier(0.46, 0.03, 0.52, 0.96) | |
| In Out, Cubic | cubic-bezier(0.65, 0.05, 0.36, 1) | |
| Fast Out, Slow In | cubic-bezier(0.4, 0, 0.2, 1) | |
| In Out, Back | cubic-bezier(0.68, -0.55, 0.27, 1.55) | |
| ease-in | In, Sine | cubic-bezier(0.47, 0, 0.75, 0.72) |
| In, Quadratic | cubic-bezier(0.55, 0.09, 0.68, 0.53) | |
| In, Cubic | cubic-bezier(0.55, 0.06, 0.68, 0.19) | |
| In, Back | cubic-bezier(0.6, -0.28, 0.74, 0.05) | |
| Fast Out, Linear In | cubic-bezier(0.4, 0, 1, 1) | |
| ease-out | Out, Sine | cubic-bezier(0.39, 0.58, 0.57, 1) |
| Out, Quadratic | cubic-bezier(0.25, 0.46, 0.45, 0.94) | |
| Out, Cubic | cubic-bezier(0.22, 0.61, 0.36, 1) | |
| Linear Out, Slow In | cubic-bezier(0, 0, 0.2, 1) | |
| Out, Back | cubic-bezier(0.18, 0.89, 0.32, 1.28) |
To set custom values for timing functions, use the control points on the lines:
For linear functions, click anywhere on the line to add a control point and drag it. Double-click to remove the point.
For Cubic Bezier functions, drag one of the control points.
Any change triggers a ball animation in the Preview at the top of editor.
To enable this experimental feature, check Sync CSS changes in the Styles pane under Settings > Experiments and reload DevTools.
With this experiment enabled, the Styles pane highlights your CSS changes in green.
To copy a single CSS declaration change, hover over the highlighted declaration and click the Copy button.
To copy all CSS changes across declarations at once, right-click on any declaration and select Copy all CSS changes.
Additionally, you can track changes you make with the Changes tab.