diff --git a/scss/_reboot.scss b/scss/_reboot.scss
index 2b4eb37b4cb4a017577f623f5bc87fcb6d05538d..d66223a969efa91e0537b29d7be7f8812a034450 100644
--- a/scss/_reboot.scss
+++ b/scss/_reboot.scss
@@ -363,8 +363,8 @@ table {
 }
 
 caption {
-  padding-top: $table-cell-padding;
-  padding-bottom: $table-cell-padding;
+  padding-top: $table-cell-padding-y;
+  padding-bottom: $table-cell-padding-y;
   color: $table-caption-color;
   text-align: left;
 }
diff --git a/scss/_tables.scss b/scss/_tables.scss
index 6aba4def2a0cb5bf95ca96fb9b164daca52c338c..b7a50b42a139acb5a9cfc876382abef937b8ec70 100644
--- a/scss/_tables.scss
+++ b/scss/_tables.scss
@@ -24,7 +24,7 @@
   // Another advantage is that this generates less code and makes the selector less specific making it easier to override.
   // stylelint-disable-next-line selector-max-universal
   > :not(caption) > * > * {
-    padding: $table-cell-padding;
+    padding: $table-cell-padding-y $table-cell-padding-x;
     background-color: var(--bs-table-bg);
     background-image: linear-gradient(var(--bs-table-accent-bg), var(--bs-table-accent-bg));
     border-bottom-width: $table-border-width;
@@ -62,7 +62,7 @@
 .table-sm {
   // stylelint-disable-next-line selector-max-universal
   > :not(caption) > * > * {
-    padding: $table-cell-padding-sm;
+    padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;
   }
 }
 
diff --git a/scss/_variables.scss b/scss/_variables.scss
index 8b9979e3207ec785df09bd83fdca8085035b4d65..2d8aa51cb41ede3dfae14bfaffbaab03377a5421 100644
--- a/scss/_variables.scss
+++ b/scss/_variables.scss
@@ -470,8 +470,10 @@ $mark-bg:                     #fcf8e3 !default;
 // Customizes the `.table` component with basic values, each used across all table variations.
 
 // scss-docs-start table-variables
-$table-cell-padding:          .5rem !default;
-$table-cell-padding-sm:       .25rem !default;
+$table-cell-padding-y:        .5rem !default;
+$table-cell-padding-x:        .5rem !default;
+$table-cell-padding-y-sm:     .25rem !default;
+$table-cell-padding-x-sm:     .25rem !default;
 
 $table-cell-vertical-align:   top !default;
 
diff --git a/site/content/docs/5.0/migration.md b/site/content/docs/5.0/migration.md
index 98b7036a6bb446f8c866047d61caa5821121587a..bbaf43d8d3e21ca34753ab221a354628541f4006 100644
--- a/site/content/docs/5.0/migration.md
+++ b/site/content/docs/5.0/migration.md
@@ -85,6 +85,7 @@ Changes to Reboot, typography, tables, and more.
 - Nested tables do not inherit styles anymore.
 - `.thead-light` and `.thead-dark` are dropped in favor of the `.table-*` variant classes which can be used for all table elements (`thead`, `tbody`, `tfoot`, `tr`, `th` and `td`).
 - The `table-row-variant()` mixin is renamed to `table-variant()` and accepts only 2 parameters: `$color` (colon name) and `$value` (color code). The border color and accent colors are automatically calculated based on the table factor variables.
+- Split table cell padding variables into `-y` and `-x`.
 - Dropped `.pre-scrollable` class. [See #29135](https://github.com/twbs/bootstrap/pull/29135)
 - `.text-*` utilities do not add hover and focus states to links anymore. `.link-*` helper classes can be used instead. [See #29267](https://github.com/twbs/bootstrap/pull/29267)
 - Drop `.text-justify` class. [See #229793](https://github.com/twbs/bootstrap/pull/29793)