diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
index 91f6d2a2f8e35..431cdd89ee1e4 100644
--- a/chrome/chrome_paks.gni
+++ b/chrome/chrome_paks.gni
@@ -161,6 +161,7 @@ template("chrome_extra_paks") {
         "$root_gen_dir/chrome/os_settings_resources.pak",
         "$root_gen_dir/chromeos/chromeos_help_app_resources.pak",
         "$root_gen_dir/chromeos/chromeos_media_app_bundle_resources.pak",
+        "$root_gen_dir/chromeos/chromeos_media_app_resources.pak",
         "$root_gen_dir/chromeos/chromeos_resources.pak",
         "$root_gen_dir/third_party/ink/ink_resources.pak",
         "$root_gen_dir/ui/file_manager/file_manager_resources.pak",
@@ -174,6 +175,7 @@ template("chrome_extra_paks") {
         "//chromeos/resources",
         "//chromeos/resources:help_app_resources",
         "//chromeos/resources:media_app_bundle_resources",
+        "//chromeos/resources:media_app_resources",
         "//third_party/ink:ink_resources",
         "//ui/file_manager:resources",
       ]
diff --git a/chromeos/components/media_app_ui/BUILD.gn b/chromeos/components/media_app_ui/BUILD.gn
index e49f2384f3527..d4d9fa9db8cb4 100644
--- a/chromeos/components/media_app_ui/BUILD.gn
+++ b/chromeos/components/media_app_ui/BUILD.gn
@@ -19,8 +19,8 @@ static_library("media_app_ui") {
 
   deps = [
     "//chromeos/constants",
-    "//chromeos/resources",
     "//chromeos/resources:media_app_bundle_resources",
+    "//chromeos/resources:media_app_resources",
     "//content/public/browser",
     "//ui/webui",
   ]
diff --git a/chromeos/components/media_app_ui/media_app_guest_ui.cc b/chromeos/components/media_app_ui/media_app_guest_ui.cc
index a155b278a1d4c..d43ea17653f39 100644
--- a/chromeos/components/media_app_ui/media_app_guest_ui.cc
+++ b/chromeos/components/media_app_ui/media_app_guest_ui.cc
@@ -7,7 +7,7 @@
 #include "chromeos/components/media_app_ui/url_constants.h"
 #include "chromeos/grit/chromeos_media_app_bundle_resources.h"
 #include "chromeos/grit/chromeos_media_app_bundle_resources_map.h"
-#include "chromeos/grit/chromeos_resources.h"
+#include "chromeos/grit/chromeos_media_app_resources.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
diff --git a/chromeos/components/media_app_ui/media_app_ui.cc b/chromeos/components/media_app_ui/media_app_ui.cc
index ee0750e40c1b5..93db0c3b466ff 100644
--- a/chromeos/components/media_app_ui/media_app_ui.cc
+++ b/chromeos/components/media_app_ui/media_app_ui.cc
@@ -7,7 +7,7 @@
 #include "chromeos/components/media_app_ui/media_app_guest_ui.h"
 #include "chromeos/components/media_app_ui/url_constants.h"
 #include "chromeos/grit/chromeos_media_app_bundle_resources.h"
-#include "chromeos/grit/chromeos_resources.h"
+#include "chromeos/grit/chromeos_media_app_resources.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
 #include "content/public/browser/web_ui_data_source.h"
diff --git a/chromeos/components/media_app_ui/resources/media_app_resources.grd b/chromeos/components/media_app_ui/resources/media_app_resources.grd
new file mode 100644
index 0000000000000..629ca97f5bc04
--- /dev/null
+++ b/chromeos/components/media_app_ui/resources/media_app_resources.grd
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
+  <outputs>
+    <output filename="grit/chromeos_media_app_resources.h" type="rc_header">
+      <emit emit_type='prepend'></emit>
+    </output>
+    <output filename="chromeos_media_app_resources.pak" type="data_package" />
+  </outputs>
+  <release seq="1">
+    <includes>
+      <!-- Privileged app host contents. -->
+      <include name="IDR_MEDIA_APP_INDEX_HTML" file="index.html" type="BINDATA" />
+      <include name="IDR_MEDIA_APP_PWA_HTML" file="pwa.html" type="BINDATA" />
+      <include name="IDR_MEDIA_APP_MANIFEST" file="manifest.json" type="BINDATA" />
+
+      <!-- Unprivileged guest contents. -->
+      <include name="IDR_MEDIA_APP_APP_HTML" file="app.html" type="BINDATA" />
+    </includes>
+  </release>
+</grit>
diff --git a/chromeos/resources/BUILD.gn b/chromeos/resources/BUILD.gn
index 1ad7c01da1406..6156c55c463f3 100644
--- a/chromeos/resources/BUILD.gn
+++ b/chromeos/resources/BUILD.gn
@@ -55,6 +55,21 @@ grit("help_app_resources") {
   output_dir = "$root_gen_dir/chromeos"
 }
 
+# Resources used by chrome://media-app, and parts of the sandboxed app it hosts
+# that do no come from the app bundle (below).
+grit("media_app_resources") {
+  source = "../components/media_app_ui/resources/media_app_resources.grd"
+
+  source_is_generated = true
+
+  outputs = [
+    "grit/chromeos_media_app_resources.h",
+    "chromeos_media_app_resources.pak",
+  ]
+  output_dir = "$root_gen_dir/chromeos"
+}
+
+# Resources automatically served by the chrome://media-app bundle, obtained via DEPS.
 grit("media_app_bundle_resources") {
   if (enable_cros_media_app) {
     # Obtained via src-internal/DEPS.
diff --git a/chromeos/resources/chromeos_resources.grd b/chromeos/resources/chromeos_resources.grd
index 55e56286cae3c..9d6dfbbec889c 100644
--- a/chromeos/resources/chromeos_resources.grd
+++ b/chromeos/resources/chromeos_resources.grd
@@ -18,7 +18,6 @@
       <if expr="enable_cros_libassistant">
         <part file="assistant_resources.grdp" />
       </if>
-      <part file="media_app_resources.grdp" />
     </includes>
   </release>
 </grit>
diff --git a/chromeos/resources/media_app_resources.grdp b/chromeos/resources/media_app_resources.grdp
deleted file mode 100644
index 7dfe9f7a86b30..0000000000000
--- a/chromeos/resources/media_app_resources.grdp
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<grit-part>
-  <!-- Privileged app host contents. -->
-  <include name="IDR_MEDIA_APP_INDEX_HTML"
-      file="../components/media_app_ui/resources/index.html"
-      type="BINDATA" />
-  <include name="IDR_MEDIA_APP_PWA_HTML"
-      file="../components/media_app_ui/resources/pwa.html"
-      type="BINDATA" />
-  <include name="IDR_MEDIA_APP_MANIFEST"
-      file="../components/media_app_ui/resources/manifest.json"
-      type="BINDATA" />
-
-  <!-- Unprivileged guest contents. -->
-  <include name="IDR_MEDIA_APP_APP_HTML"
-      file="../components/media_app_ui/resources/app.html"
-      type="BINDATA" />
-</grit-part>
diff --git a/tools/gritsettings/resource_ids b/tools/gritsettings/resource_ids
index 1bb1eb5c93ab4..d16200703877d 100644
--- a/tools/gritsettings/resource_ids
+++ b/tools/gritsettings/resource_ids
@@ -212,17 +212,20 @@
   "chromeos/components/help_app_ui/resources/help_app_resources.grd": {
     "includes": [14580],
   },
+  "chromeos/components/media_app_ui/resources/media_app_resources.grd": {
+    "includes": [14680],
+  },
   # Both media_app_bundle_resources.grd and media_app_bundle_mock_resources.grd start
   # with the same id because only one of them is built depending on if src_internal is
   # available. Lower bound for number of resource ids is number of languages (74).
   "chromeos/components/media_app_ui/resources/app/app/media_app_bundle_resources.grd": {
-    "includes": [14680],
+    "includes": [14690],
   },
   "chromeos/components/media_app_ui/resources/mock/media_app_bundle_mock_resources.grd": {
-    "includes": [14680],
+    "includes": [14690],
   },
   "chromeos/resources/chromeos_resources.grd": {
-    "includes": [14780],
+    "includes": [14790],
   },
   # END chromeos/ section.