how to center a div

To center a <div> in modern CSS, the most reliable and simple way is to use
Flexbox on its parent container.
Fastest modern solution (Flexbox)
html
<div class="parent">
<div class="box">I am centered</div>
</div>
css
.parent {
display: flex; /* make parent a flex container */
justify-content: center; /* horizontal center */
align-items: center; /* vertical center */
height: 100vh; /* full viewport height so you see vertical centering */
}
.box {
width: 300px;
padding: 20px;
background: lightgray;
}
- Put the centering rules on the parent, not the child.
justify-content: centerhandles left/right;align-items: centerhandles top/bottom.
Classic horizontal centering only
If you only need to center a block-level div horizontally:
html
<div class="centered">Only horizontally centered</div>
css
.centered {
width: 400px; /* needs a fixed or max-width */
margin: 0 auto; /* auto left/right margin centers the block */
}
- This is the classic
margin: autopattern seen in many tutorials.
Absolute + transform (works anywhere)
Useful if you want to center inside a specific container, not the whole page.
html
<div class="wrapper">
<div class="center-me">Centered with transform</div>
</div>
css
.wrapper {
position: relative; /* reference for absolute child */
height: 400px;
background: #eee;
}
.center-me {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* pull back by half width/height */
}
top: 50%; left: 50%;aim the top-left corner at the center.transform: translate(-50%, -50%)pulls the element back so its center sits in the middle.
When to use which
- Use Flexbox for most layouts (cards, dialogs, modals, hero sections).
- Use margin: auto for simple horizontal centering of fixed-width blocks like content containers.
- Use absolute + transform for overlays, popups, or when you must position relative to a specific container.
Information gathered from public forums or data available on the internet and portrayed here.