diff --git a/app/assets/javascripts/merge_request_dashboard/components/merge_request.vue b/app/assets/javascripts/merge_request_dashboard/components/merge_request.vue
index 561b1b5fd59a24793365da818bc87c77789e5132..0a5dbc4c399f0386d868212d0a543663b91601f7 100644
--- a/app/assets/javascripts/merge_request_dashboard/components/merge_request.vue
+++ b/app/assets/javascripts/merge_request_dashboard/components/merge_request.vue
@@ -76,7 +76,7 @@ export default {
       >
         {{ mergeRequest.title }}
       </gl-link>
-      <div class="gl-mb-2 gl-mt-2 gl-text-sm gl-text-secondary">
+      <div class="gl-mb-2 gl-mt-2 gl-text-sm gl-text-subtle">
         <gl-sprintf
           :message="__('%{reference} %{divider} created %{createdAt} by %{author} %{milestone}')"
         >
@@ -84,7 +84,7 @@ export default {
           <template #divider>&middot;</template>
           <template #createdAt><time-ago-tooltip :time="mergeRequest.createdAt" /></template>
           <template #author>
-            <gl-link :href="mergeRequest.author.webUrl" class="gl-text-secondary">
+            <gl-link :href="mergeRequest.author.webUrl" class="gl-text-subtle">
               {{ mergeRequest.author.name }}
             </gl-link>
           </template>
@@ -127,7 +127,7 @@ export default {
           <span>{{ mergeRequest.diffStatsSummary.deletions }}</span>
         </div>
       </div>
-      <div class="gl-mt-1 gl-text-right gl-text-sm gl-text-secondary">
+      <div class="gl-mt-1 gl-text-right gl-text-sm gl-text-subtle">
         <gl-sprintf :message="__('Updated %{updatedAt}')">
           <template #updatedAt>
             <time-ago-tooltip :time="mergeRequest.updatedAt" />
diff --git a/app/assets/javascripts/vue_shared/components/page_heading.vue b/app/assets/javascripts/vue_shared/components/page_heading.vue
index c8ccde1cf4bc3bfc753a6e03c3a84f975058c00d..45415c86397ea4c202dd49c42c65bd7647a7101f 100644
--- a/app/assets/javascripts/vue_shared/components/page_heading.vue
+++ b/app/assets/javascripts/vue_shared/components/page_heading.vue
@@ -28,7 +28,7 @@ export default {
       </div>
       <div
         v-if="$scopedSlots.description"
-        class="gl-mt-2 gl-w-full gl-text-secondary"
+        class="gl-mt-2 gl-w-full gl-text-subtle"
         data-testid="page-heading-description"
       >
         <slot name="description"></slot>
diff --git a/app/assets/javascripts/vue_shared/components/web_ide_link.vue b/app/assets/javascripts/vue_shared/components/web_ide_link.vue
index 383aa8a516c881a5ed0aec00a05f008c80d98844..2a85d7d20046671478f7bb92c8f39e6b48833275 100644
--- a/app/assets/javascripts/vue_shared/components/web_ide_link.vue
+++ b/app/assets/javascripts/vue_shared/components/web_ide_link.vue
@@ -328,7 +328,7 @@ export default {
                   action.shortcut
                 }}</kbd>
               </span>
-              <span data-testid="action-secondary-text" class="gl-text-sm gl-text-secondary">
+              <span data-testid="action-secondary-text" class="gl-text-sm gl-text-subtle">
                 {{ action.secondaryText }}
               </span>
             </div>
diff --git a/app/components/pajamas/toggle_component.html.haml b/app/components/pajamas/toggle_component.html.haml
index 1716e8b69c3983af4695eb64b906ac9a432408fd..ecba18624c86928578fb5b3a56e743d5e69595a5 100644
--- a/app/components/pajamas/toggle_component.html.haml
+++ b/app/components/pajamas/toggle_component.html.haml
@@ -12,5 +12,5 @@
 -# Leverage this block to render a rich help text. To render a plain text help text,
 -# prefer the `help` parameter.
 - if content.present?
-  .gl-text-secondary.gl-mt-1
+  .gl-text-subtle.gl-mt-1
     = content
diff --git a/app/views/projects/maintenance/_remove_blobs.html.haml b/app/views/projects/maintenance/_remove_blobs.html.haml
index 80d214ec3f2ab1ec696a5de80e6a2c0e85f83478..a5459c95047a68b25255be03c9eda258227470ca 100644
--- a/app/views/projects/maintenance/_remove_blobs.html.haml
+++ b/app/views/projects/maintenance/_remove_blobs.html.haml
@@ -1,8 +1,8 @@
 %h5.gl-heading-4= s_('ProjectMaintenance|Remove blobs')
-%p.gl-text-secondary
+%p.gl-text-subtle
   = s_('ProjectMaintenance|Provide a list of blob object IDs to be removed.')
   = link_to s_('ProjectMaintenance|How do I get a list of object IDs?'), help_page_path('user/project/repository/repository_size.md', anchor: 'get-a-list-of-object-ids')
-%p.gl-text-secondary
+%p.gl-text-subtle
   = s_('ProjectMaintenance|Afterwards, run housekeeping manually to remove old versions of the file from Git history.')
 
 .js-maintenance-remove-blobs{ data: { project_path: @project.full_path, housekeeping_path: edit_project_path(@project, anchor: 'js-project-advanced-settings') } }
diff --git a/app/views/projects/protected_tags/shared/_index.html.haml b/app/views/projects/protected_tags/shared/_index.html.haml
index c1091cbbb6e8a800880b85b0383c57a53417b681..a4ff97047b57c4c3296e95f4ab925ee023555557 100644
--- a/app/views/projects/protected_tags/shared/_index.html.haml
+++ b/app/views/projects/protected_tags/shared/_index.html.haml
@@ -8,7 +8,7 @@
     = s_("ProtectedTag|Limit access to creating and updating tags.")
     = link_to s_("ProtectedTag|What are protected tags?"), help_page_path("user/project/protected_tags.md")
   - c.with_body do
-    %p.gl-text-secondary
+    %p.gl-text-subtle
       = s_("ProtectedTag|By default, protected tags restrict who can modify the tag.")
       = link_to s_("ProtectedTag|Learn more."), help_page_path("user/project/protected_tags.md", anchor: "who-can-modify-a-protected-tag")
 
diff --git a/ee/app/assets/javascripts/analytics/dashboards/dora_performers_score/components/dora_performers_score_chart.vue b/ee/app/assets/javascripts/analytics/dashboards/dora_performers_score/components/dora_performers_score_chart.vue
index bd05a9cc7e8622aae00390976ae5c27b5bd7817c..80bc50a712d3631a89d50ca69fd0ff0cfbc80f1f 100644
--- a/ee/app/assets/javascripts/analytics/dashboards/dora_performers_score/components/dora_performers_score_chart.vue
+++ b/ee/app/assets/javascripts/analytics/dashboards/dora_performers_score/components/dora_performers_score_chart.vue
@@ -234,7 +234,7 @@ export default {
 
     <chart-skeleton-loader v-if="isLoading" />
 
-    <div v-else-if="!hasData" class="gl-text-center gl-text-secondary">
+    <div v-else-if="!hasData" class="gl-text-center gl-text-subtle">
       {{ noDataMessage }}
     </div>
 
diff --git a/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/panels_base.vue b/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/panels_base.vue
index 00d7c91a22310b0e3e83fb42499d932ce6179926..60669351989da7149d4f699f6f14aa09b85c5915 100644
--- a/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/panels_base.vue
+++ b/ee/app/assets/javascripts/vue_shared/components/customizable_dashboard/panels_base.vue
@@ -191,7 +191,7 @@ export default {
           <gl-loading-icon size="lg" class="gl-w-full" />
           <div
             v-if="loadingDelayed"
-            class="gl-w-full gl-text-secondary"
+            class="gl-w-full gl-text-subtle"
             data-testId="panel-loading-delayed-indicator"
           >
             {{ __('Still loading...') }}
diff --git a/ee/app/assets/javascripts/workspaces/dropdown_group/components/workspaces_dropdown_group.vue b/ee/app/assets/javascripts/workspaces/dropdown_group/components/workspaces_dropdown_group.vue
index 48a52a03a67800b870a34317efaa2231dcac1c4b..2af44a2f76ff93572283d9b9b74ef9adaeff1909 100644
--- a/ee/app/assets/javascripts/workspaces/dropdown_group/components/workspaces_dropdown_group.vue
+++ b/ee/app/assets/javascripts/workspaces/dropdown_group/components/workspaces_dropdown_group.vue
@@ -184,10 +184,10 @@ export default {
             />
           </template>
           <div v-else class="gl-px-4 gl-text-left gl-text-base" data-testid="no-workspaces-message">
-            <p class="gl-mb-0 gl-text-sm gl-text-secondary">
+            <p class="gl-mb-0 gl-text-sm gl-text-subtle">
               {{ $options.i18n.noWorkspacesMessage }}
             </p>
-            <p v-if="!supportsWorkspaces" class="gl-mb-0 gl-mt-2 gl-text-sm gl-text-secondary">
+            <p v-if="!supportsWorkspaces" class="gl-mb-0 gl-mt-2 gl-text-sm gl-text-subtle">
               <gl-sprintf :message="$options.i18n.noWorkspacesSupportMessage">
                 <template #link="{ content }">
                   <gl-link
diff --git a/spec/frontend/merge_request_dashboard/components/__snapshots__/merge_request_spec.js.snap b/spec/frontend/merge_request_dashboard/components/__snapshots__/merge_request_spec.js.snap
index c2de4468e46647589ce1db9b5158013a16a72f27..7adfa31f8401e2f3e3e21750842c995e74ad9ff3 100644
--- a/spec/frontend/merge_request_dashboard/components/__snapshots__/merge_request_spec.js.snap
+++ b/spec/frontend/merge_request_dashboard/components/__snapshots__/merge_request_spec.js.snap
@@ -29,7 +29,7 @@ exports[`Merge request dashboard merge request component renders template 1`] =
       Merge request title
     </gl-link-stub>
     <div
-      class="gl-mb-2 gl-mt-2 gl-text-secondary gl-text-sm"
+      class="gl-mb-2 gl-mt-2 gl-text-sm gl-text-subtle"
     >
       <gl-sprintf-stub
         message="%{reference} %{divider} created %{createdAt} by %{author} %{milestone}"
@@ -105,7 +105,7 @@ exports[`Merge request dashboard merge request component renders template 1`] =
       </div>
     </div>
     <div
-      class="gl-mt-1 gl-text-right gl-text-secondary gl-text-sm"
+      class="gl-mt-1 gl-text-right gl-text-sm gl-text-subtle"
     >
       <gl-sprintf-stub
         message="Updated %{updatedAt}"
diff --git a/spec/frontend/vue_shared/components/page_heading_spec.js b/spec/frontend/vue_shared/components/page_heading_spec.js
index c81fe8ed3b86d287cd1715ba4b4ab941a2c06fbf..0971cf38337da2b3adb379a0e1a4c48fa317bcfc 100644
--- a/spec/frontend/vue_shared/components/page_heading_spec.js
+++ b/spec/frontend/vue_shared/components/page_heading_spec.js
@@ -58,7 +58,7 @@ describe('Pagination links component', () => {
       it('renders its description slot content', () => {
         expect(description().text()).toBe('Description go here');
         expect(description().classes()).toEqual(
-          expect.arrayContaining(['gl-w-full', 'gl-mt-2', 'gl-text-secondary']),
+          expect.arrayContaining(['gl-w-full', 'gl-mt-2', 'gl-text-subtle']),
         );
       });