diff --git a/browser.js b/browser.js
index f7dd0820f..04b00ce9e 100644
--- a/browser.js
+++ b/browser.js
@@ -263,9 +263,14 @@ function getBindingChain (logger) {
 
 function set (self, opts, rootLogger, level) {
   // override the current log functions with either `noop` or the base log function
-  self[level] = levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)
-    ? noop
-    : rootLogger[baseLogFunctionSymbol][level]
+  Object.defineProperty(self, level, {
+    value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)
+      ? noop
+      : rootLogger[baseLogFunctionSymbol][level]),
+    writable: true,
+    enumerable: true,
+    configurable: true
+  })
 
   if (!opts.transmit && self[level] === noop) {
     return
diff --git a/test/browser-early-console-freeze.test.js b/test/browser-early-console-freeze.test.js
new file mode 100644
index 000000000..942abfa6f
--- /dev/null
+++ b/test/browser-early-console-freeze.test.js
@@ -0,0 +1,12 @@
+'use strict'
+Object.freeze(console)
+const test = require('tape')
+const pino = require('../browser')
+
+test('silent level', ({ end, fail, pass }) => {
+  pino({
+    level: 'silent',
+    browser: { }
+  })
+  end()
+})