CSS
How to Center a Table in CSS (Complete Guide)
Centering a table in CSS can be done in different ways depending on whether you want to center it horizontally, vertically, or both.
In this blog, we’ll cover:
✅ How to center a table horizontally
✅ How to center a table vertically
✅ How to center text inside table cells
✅ Best practices for styling centered tables
1. Centering a Table Horizontally
To center a table horizontally, use margin: auto; and set display: table;.
Example:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center Table Horizontally</title>
    <style>
        table {
            width: 60%; /* Adjust width as needed */
            margin: auto; /* Centers table horizontally */
            border-collapse: collapse;
            border: 2px solid #333;
        }
        
        th, td {
            padding: 10px;
            border: 1px solid #333;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
        <tr>
            <td>John</td>
            <td>25</td>
        </tr>
        <tr>
            <td>Jane</td>
            <td>30</td>
        </tr>
    </table>
</body>
</html>
✅ Why it works?
- margin: auto;centers the table horizontally.
- border-collapse: collapse;ensures a clean table design.
2. Centering a Table Vertically
To center a table vertically, use Flexbox or CSS Grid with align-items: center;.
Example Using Flexbox:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center Table Vertically</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh; /* Full height of viewport */
            margin: 0;
        }
        table {
            width: 50%;
            border-collapse: collapse;
            border: 2px solid #333;
        }
        th, td {
            padding: 10px;
            border: 1px solid #333;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
        <tr>
            <td>Alice</td>
            <td>28</td>
        </tr>
        <tr>
            <td>Bob</td>
            <td>35</td>
        </tr>
    </table>
</body>
</html>
✅ Why it works?
- display: flex;makes the body a flex container.
- justify-content: center;centers the table horizontally.
- align-items: center;centers the table vertically.
3. Centering a Table Both Horizontally and Vertically
To perfectly center a table in the middle of a page, combine Flexbox or Grid with margin: auto;.
Example Using Grid:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Center Table Both Ways</title>
    <style>
        body {
            display: grid;
            place-items: center;
            height: 100vh;
            margin: 0;
        }
        table {
            width: 50%;
            border-collapse: collapse;
            border: 2px solid #333;
        }
        th, td {
            padding: 10px;
            border: 1px solid #333;
            text-align: center;
        }
    </style>
</head>
<body>
    <table>
        <tr>
            <th>Product</th>
            <th>Price</th>
        </tr>
        <tr>
            <td>Phone</td>
            <td>$699</td>
        </tr>
        <tr>
            <td>Laptop</td>
            <td>$999</td>
        </tr>
    </table>
</body>
</html>
✅ Why it works?
- display: grid; place-items: center;centers the table horizontally and vertically.
- height: 100vh;ensures full-screen height.
4. Centering Text Inside Table Cells
To align text inside table cells, use text-align: center; and vertical-align: middle;.
Example:
td, th {
    text-align: center;
    vertical-align: middle;
}
✅ Why it works?
- text-align: center;aligns text horizontally.
- vertical-align: middle;centers text vertically within table cells.
5. Best Practices for Centering Tables in CSS
✅ Use margin: auto; for horizontal centering.
✅ Use Flexbox or Grid for vertical centering.
✅ Set text-align: center; and vertical-align: middle; for text inside table cells.
✅ Use responsive design by setting width: 50%; or using max-width.
Conclusion
Centering a table in CSS depends on whether you need horizontal, vertical, or both.
- ✅ Use margin: auto;for horizontal centering.
- ✅ Use Flexbox (align-items: center;) for vertical centering.
- ✅ Use CSS Grid (place-items: center;) to center both ways.
- ✅ Ensure text alignment with text-align: center;.
By following these techniques, you can create beautifully centered tables in any web project.
