diff --git a/toolkit/components/extensions/parent/ext-browserSettings.js b/toolkit/components/extensions/parent/ext-browserSettings.js
index 86267251c85a83fe4c7c92c3ad154320bc022bf5..c54aa49d51670cc45a9537ca626144ed1cd6bce0 100644
--- a/toolkit/components/extensions/parent/ext-browserSettings.js
+++ b/toolkit/components/extensions/parent/ext-browserSettings.js
@@ -156,6 +156,22 @@ ExtensionPreferencesManager.addSetting("useDocumentFonts", {
   },
 });
 
+ExtensionPreferencesManager.addSetting("zoomFullPage", {
+  prefNames: ["browser.zoom.full"],
+
+  setCallback(value) {
+    return { [this.prefNames[0]]: value };
+  },
+});
+
+ExtensionPreferencesManager.addSetting("zoomSiteSpecific", {
+  prefNames: ["browser.zoom.siteSpecific"],
+
+  setCallback(value) {
+    return { [this.prefNames[0]]: value };
+  },
+});
+
 this.browserSettings = class extends ExtensionAPI {
   getAPI(context) {
     let { extension } = context;
@@ -417,6 +433,20 @@ this.browserSettings = class extends ExtensionAPI {
             },
           }
         ),
+        zoomFullPage: getSettingsAPI({
+          context,
+          name: "zoomFullPage",
+          callback() {
+            return Services.prefs.getBoolPref("browser.zoom.full");
+          },
+        }),
+        zoomSiteSpecific: getSettingsAPI({
+          context,
+          name: "zoomSiteSpecific",
+          callback() {
+            return Services.prefs.getBoolPref("browser.zoom.siteSpecific");
+          },
+        }),
       },
     };
   }
diff --git a/toolkit/components/extensions/schemas/browser_settings.json b/toolkit/components/extensions/schemas/browser_settings.json
index cf58e3e96c4043779da92296d1e4a6b2a2eb056b..cba5d47782ccc6c80dba196deb718abbbb86633b 100644
--- a/toolkit/components/extensions/schemas/browser_settings.json
+++ b/toolkit/components/extensions/schemas/browser_settings.json
@@ -97,6 +97,14 @@
       "useDocumentFonts": {
         "$ref": "types.Setting",
         "description": "This setting controls whether the document's fonts are used."
+      },
+      "zoomFullPage": {
+        "$ref": "types.Setting",
+        "description": "This boolean setting controls whether zoom is applied to the full page or to text only."
+      },
+      "zoomSiteSpecific": {
+        "$ref": "types.Setting",
+        "description": "This boolean setting controls whether zoom is applied on a per-site basis or to the current tab only. If privacy.resistFingerprinting is true, this setting has no effect and zoom is applied to the current tab only."
       }
     }
   }
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
index 40a1d0419e6bf7a38b3175290dae4c58c7ed922c..aec4eee1e22e41a85081af1f09b52432d50ff7c1 100644
--- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
@@ -37,6 +37,8 @@ add_task(async function test_browser_settings() {
     "browser.tabs.insertAfterCurrent": false,
     "browser.display.document_color_use": 1,
     "browser.display.use_document_fonts": 1,
+    "browser.zoom.full": true,
+    "browser.zoom.siteSpecific": true,
   };
 
   async function background() {
@@ -251,6 +253,20 @@ add_task(async function test_browser_settings() {
     "browser.display.use_document_fonts": 1,
   });
 
+  await testSetting("zoomFullPage", true, {
+    "browser.zoom.full": true,
+  });
+  await testSetting("zoomFullPage", false, {
+    "browser.zoom.full": false,
+  });
+
+  await testSetting("zoomSiteSpecific", true, {
+    "browser.zoom.siteSpecific": true,
+  });
+  await testSetting("zoomSiteSpecific", false, {
+    "browser.zoom.siteSpecific": false,
+  });
+
   await extension.unload();
   await promiseShutdownManager();
 });