Margin vs Padding in HTML and CSS: Differences and How to Use

In HTML and CSS, margin and padding are two ways to control spacing around an HTML element. They are part of the CSS box model, and they affect layout, alignment, and user experience across every modern browser.

While they can look similar, the margin padding differences matter in real projects and interviews. It is a common topic in CSS interviews.

Margin vs padding: the quick answer

  • In web design, Margin is space outside an element’s border, between the element and adjacent elements, including right margins and left margins.
  • Padding is inner space inside an element’s border, between the border and the content.
  • Background color paints into padding, not into margin.
  • Padding increases the clickable area for links and buttons, which often improves user experience.
Diagram of the CSS box model showing content, padding, border, and margin layers
A CSS box model view of content, padding, border, and margin.

Below, we’ll go deeper on margin vs padding, when to use each, best practices, negative values, and common browser behaviors like margin collapse.

What is the difference between margin vs padding?

A margin is the space around an element. A padding is the space inside an element. You use the margin property to ensure adjacent elements are not too close. You use padding to create inner space so the element’s content does not sit tight against its border.

A simple example with an outer and inner box

We will create two boxes, an outer box and an inner box. The outer box contains the inner box. 

Outer box containing inner box before spacing changes
Two nested elements before changing margin or padding.

Start with explicit defaults so results are predictable across browser settings and resets:

.outerBox {
  padding: 0;
  margin: 0;
}

Try It Yourself »

Now change the inner box margin to 20px:

.innerBox {
  margin: 20px;
}

Try It Yourself »

With a margin of 20px, space is added around the web element's inner box and its border, separating it from parent elements and other adjacent elements. In many layouts, this changes how the nested content sits within its container.

Now change the inner box padding to 20px as well:

.innerBox {
  margin: 20px;
  padding: 20px;
}

Try It Yourself »

Result showing inner box with padding inside its border plus margin outside it
Padding increases inner space inside the border, margin separates the element from surrounding layout (the outer space).

Without borders, margin and padding can appear similar, because both create space. But in the CSS box model, margin is always outside the border and padding is always inside the border.

Margin is space outside the border. Padding is space between the content and the border.

When to use margin vs padding

Margins and padding both create whitespace, but they serve different layout goals:

  • Use margin to separate an element from adjacent elements, including controlling right margins for alignment and spacing in rows.
  • Use padding to improve readability, increase the hit area for buttons, and create inner space inside a colored or bordered area.

A practical difference is interaction. Clicking inside padding still counts as clicking the HTML element. Clicking in a margin does not. This is especially relevant for buttons and links where you want a generous hit area for user experience.

Text too close to border due to missing padding
Without padding, content can feel cramped and harder to read.

Padding is also critical when a background color is involved, because the background paints through padding but not through margin.

Heading background color looks cramped without padding
Background color looks tight when there is no padding.
Heading background color looks better with padding added
Padding adds inner space and improves readability and user experience.

Left, right, top, and bottom margin vs padding

Margins settings and padding settings can be set per side, which helps fine-tune alignment and layout without changing every side equally.

Examples:

.card {
  padding-top: 20px;
  padding-right: 5px;
  padding-bottom: 10px;
  padding-left: 0;
}

.sectionTitle {
  margin-bottom: 20px;
}
Example showing different padding values on each side
Different padding values on each side create different inner space.

You can also set a shorthand and override one direction when an element should sit closer to what follows:

.stackedBlock {
  padding: 20px;
  padding-bottom: 0;
}
Example of padding overridden on one side
Override one side to control inner space for layout rhythm.

Margin can also affect inline alignment when the element participates in inline flow. If you adjust an inline button’s bottom margin, it can shift surrounding text because the browser lays out the whole inline line box.

Example of a button affecting inline text positioning when margin changes
In inline contexts, margin can change how text aligns within the line.

Margin and padding sizes in CSS

You can use multiple units. Pixels are precise, percentages can support responsive layout, and rem is commonly used to scale spacing with typography.

Example margin in pixels
Margin in pixels.
Example margin in percent
Margin in percent.
Example margin in inches
Margin in inches.
Example margin in points
Margin in points.

Best practice for most web UI is to use rem for consistent scaling with user font settings. Use px when you need strict pixel control, for example hairline borders or very specific visual alignment.

Best practices for margin and padding

  • Use padding for click targets. For buttons and links, increase padding to improve user experience and accessibility without altering spacing between adjacent elements.
  • Use margin to separate siblings. When you want space between adjacent elements, margin is usually clearer than padding.
  • Avoid “mystery spacing.” Reset default margins on headings and paragraphs in a base stylesheet so your layout is consistent across browser defaults.
  • Prefer layout tools for layout. For grids and rows, use flexbox or grid for alignment, and consider gap for spacing between items, instead of stacking margins everywhere.
  • Be intentional with right margins. Right margins are often used for inline items (icons, badges) and for horizontal spacing in toolbars. Use consistent spacing tokens so alignment stays predictable.
  • Keep spacing consistent. Use a spacing scale like 4px, 8px, 12px, 16px, 24px, 32px so the page feels cohesive.
  • Remember parent elements. Padding on parent elements affects the inner space available for children, which can be a cleaner fix than pushing children around with multiple margins.

Negative values: when they work, and when they cause problems

CSS supports negative values for margin, but not for padding. Negative margins can pull an element closer to adjacent elements or even cause overlap, which can be useful for specific layout effects.

Common uses for negative margin

  • Optical alignment: pull an icon or badge slightly into alignment with text.
  • Overlapping cards: create stacked layouts where elements intentionally overlap.
  • Full-bleed sections: in controlled layouts, negative margins can allow content to extend to edges while the parent element keeps padding for the rest of the page.

Risks and browser behavior

  • Overlaps can hide content behind other elements, especially if z-index stacking is involved.
  • Unexpected horizontal scroll can appear if negative margins push content outside the viewport.
  • Click targets can become confusing when elements overlap, which can hurt user experience.

If you use negative margins, test in more than one browser and at multiple viewport widths to confirm the layout remains stable.

On Overlap Elements: Negative margins can create overlap, which is both a powerful layout tool and a common source of bugs. When you apply a negative margin value, you are pulling an HTML element into space that normally belongs to different elements, such as adjacent elements in a stack or items in a row, and that can cause content to sit on top of other content.

The result is not just less whitespace, it can change which element appears visually on top, and it can create user experience issues when overlapped buttons or links become harder to click or when hover and focus states look clipped in the browser. Overlap can also introduce unexpected horizontal scrolling if negative left or right margins push content outside the viewport, and it can complicate the styling of other elements because spacing and alignment are no longer controlled only by their own margins and padding.

If overlap is not intentional, a safer approach is to use flex or grid with gap, add padding to parent elements, or use a small transform for visual nudges without changing normal layout flow.

Margin and padding in HTML vs CSS

In modern web development, spacing is done with CSS, not with HTML attributes. You can set spacing inline:

<div style="margin: 20px; padding: 20px"></div>

Try It Yourself »

Or, more commonly, in a stylesheet:

.myDiv {
  margin: 20px;
  padding: 20px;
}

Try It Yourself »

Historically, some developers used HTML tables for layout, including table-specific spacing like cell padding and cell spacing. Today, tables are meant for tabular data, and layout spacing should be handled with CSS. If you are styling tables, use CSS properties like border-spacing and padding on table cells.

Illustration comparing margin and padding in HTML vs CSS context
Modern spacing is controlled with CSS, regardless of the HTML element.

Margin collapse and CSS

A common browser behavior is margin collapse. Vertical margins between certain block elements can collapse into one another, so the resulting space is not the sum of both margins. Padding does not collapse.

Two paragraphs with 20px padding:

Two paragraphs with padding applied
Padding creates inner space and does not collapse between elements.

Two paragraphs with 20px margin:

Two paragraphs with margins applied showing margin collapse
Margins can collapse vertically, so the space may not double.

If one paragraph has 20px margin and the next has 10px margin, the space between them is typically the larger value, not the total.

Margins collapsing example with different margin values
Collapsed margins tend to resolve to the larger of the two values.

How to prevent margin collapse

  • Add padding or a border to the parent elements so margins do not collapse through them.
  • Create a new block formatting context on the parent, for example with overflow: auto in specific layouts where it makes sense.
  • Use flexbox or grid for stacks and rows, and use gap for spacing instead of relying on vertical margins.

Margin and padding in Bootstrap

Many developers apply spacing using frameworks like Bootstrap. In Bootstrap 5, spacing utilities follow the pattern m-* for margin and p-* for padding, with optional side and breakpoint modifiers.

Examples:

<div class="p-3">...</div>
<div class="mt-4">...</div>
<div class="me-md-3">...</div>

If you are using Bootstrap, spacing utilities often make alignment and layout consistent across components. Custom CSS is still normal when utilities do not express the exact rule you need.

Borders between margins and padding

In the CSS box model, the border sits between margin and padding. Borders behave more like part of the element than the margin does, so hover effects, tooltips, and click behavior will typically engage when the pointer reaches the border, not when it is in the margin.

Troubleshooting: common margin and padding issues

Why is my margin not working?

  • Inline elements: top and bottom margins often do not behave as expected on inline elements. Consider display: inline-block or display: block.
  • Flex and grid: alignment rules and gap can change the way spacing feels. Check the parent elements and whether gap is already controlling spacing.
  • Collapsed margins: vertical margins may collapse. See the margin collapse section above.
  • Overflow and containment: parent containers with overflow settings can clip or contain the visual effect.

Why does my background color not extend into the spacing?

Background color paints into padding and stops at the border. It does not paint into margin. If you want colored space around content, use padding.

Why did my layout shift when I changed spacing?

Padding can increase the element’s rendered box size, depending on box-sizing. If you want padding without changing overall width, consider box-sizing: border-box as part of your base layout rules.

FAQs: margins vs padding

Is it better to use margin or padding?

Use margin to control spacing between adjacent elements. Use padding to control inner space inside an HTML element, especially for readability, buttons, and background color.

Can padding be negative?

No. Negative values are allowed for margin in CSS, but padding cannot be negative.

How do I remember margin vs padding?

Margin is outside the border of an element. Padding is inside the border. The border sits between them in the CSS box model.

Why is there not 40px between two 20px margins?

Because vertical margins can collapse in common browser layout rules. The resulting space is often the larger of the two margins, not the sum.

How do I center an element with margin?

For a block-level element with a fixed or constrained width, use margin-left: auto and margin-right: auto. This is a common alignment pattern.

Learning more about margin and padding in CSS

To recap:

  • Margin refers to whitespace outside an element’s border, separating it from adjacent elements.
  • Padding refers to whitespace inside an element’s border, creating inner space between the border and the content.

In CSS, both can be set like this:

.box {
  margin: 10px;
  padding: 10px;
}

If you want to go further, consider taking an HTML/CSS course or using a CSS cheat sheet while you build projects that reinforce layout fundamentals.

People are also reading:

By Jenna Inouye

Jenna Inouye currently works at Google and has been a full-stack developer for two decades, specializing in web application design and development. She is a tech expert with a B.S. in Information & Computer Science and MCITP certification. For the last eight years, she has worked as a news and feature writer focusing on technology and finance, with bylines in Udemy, SVG, The Gamer, Productivity Spot, and Spreadsheet Point.

View all post by the author

Learn More