diff --git a/include/decoder_util.h b/include/decoder_util.h
index aa222d36..f1e3a051 100644
--- a/include/decoder_util.h
+++ b/include/decoder_util.h
@@ -47,6 +47,11 @@ void decoder_output_log(r_device *decoder, int level, data_t *data);
 // be terse, a maximum msg length of 60 characters is supported on the decoder_log_ functions
 // e.g. "FoobarCorp-XY3000: unexpected type code %02x"
 
+/// Get the current verbosity level for the decoder.
+///
+/// @deprecated Should not be used, consider using only `decoder_log_` functions.
+int decoder_verbose(r_device *decoder);
+
 /// Output a log message.
 void decoder_log(r_device *decoder, int level, char const *func, char const *msg);
 
diff --git a/src/decoder_util.c b/src/decoder_util.c
index 10386e43..bcfee845 100644
--- a/src/decoder_util.c
+++ b/src/decoder_util.c
@@ -115,6 +115,11 @@ static char *bitrow_asprint_bits(uint8_t const *bitrow, unsigned bit_len)
 
 // variadic output functions
 
+int decoder_verbose(r_device *decoder)
+{
+    return decoder->verbose;
+}
+
 void decoder_log(r_device *decoder, int level, char const *func, char const *msg)
 {
     if (decoder->verbose >= level) {
diff --git a/src/devices/digitech_xc0324.c b/src/devices/digitech_xc0324.c
index c55b211d..ab8a0208 100644
--- a/src/devices/digitech_xc0324.c
+++ b/src/devices/digitech_xc0324.c
@@ -111,9 +111,9 @@ static int decode_xc0324_message(r_device *decoder, bitbuffer_t *bitbuffer,
     humidity = reverse8(b[4]);
 
     // Create the data structure, ready for the decoder_output_data function.
-    // Separate production output (decoder->verbose == 0)
-    // from (simulated) deciphering stage output (decoder->verbose > 0)
-    if (!decoder->verbose) { // production output
+    // Separate production output (decoder_verbose == 0)
+    // from (simulated) deciphering stage output (decoder_verbose > 0)
+    if (!decoder_verbose(decoder)) { // production output
         /* clang-format off */
         *data = data_make(
                 "model",            "Device Type",      DATA_STRING, "Digitech-XC0324",
@@ -178,9 +178,9 @@ static int digitech_xc0324_decode(r_device *decoder, bitbuffer_t *bitbuffer)
                     r, bitpos, events, &data);
             if (ret > 0)
                 events += ret;
-            // Keep production output (decoder->verbose == 0) separate from
-            // (simulated) development stage output (decoder->verbose > 0)
-            if (events > 0 && !decoder->verbose) { // Production output
+            // Keep production output (decoder_verbose == 0) separate from
+            // (simulated) development stage output (decoder_verbose > 0)
+            if (events > 0 && !decoder_verbose(decoder)) { // Production output
                 data_append(data,
                         "message_num", "Message repeat count", DATA_INT, events, NULL);
                 decoder_output_data(decoder, data);
diff --git a/src/devices/ert_idm.c b/src/devices/ert_idm.c
index 047f1574..5d3c7e0a 100644
--- a/src/devices/ert_idm.c
+++ b/src/devices/ert_idm.c
@@ -227,7 +227,7 @@ static int ert_idm_decode(r_device *decoder, bitbuffer_t *bitbuffer)
         DifferentialConsumptionIntervals[j] = ((uint16_t)buffy[0] << 1) | (buffy[1] >> 7);
         pos += 9;
     }
-    if (decoder->verbose > 1) {
+    if (decoder_verbose(decoder) > 1) {
         decoder_log(decoder, 2, __func__, "DifferentialConsumptionIntervals");
         for (int j = 0; j < 47; j++) {
             decoder_logf(decoder, 2, __func__, "%d", DifferentialConsumptionIntervals[j]);
@@ -489,7 +489,7 @@ static int ert_netidm_decode(r_device *decoder, bitbuffer_t *bitbuffer)
         // decoder_logf_bitrow(decoder, 0, __func__, buffy, 14, "%d %d", j, DifferentialConsumptionIntervals[j]);
         pos += 14;
     }
-    if (decoder->verbose) {
+    if (decoder_verbose(decoder)) {
         decoder_log(decoder, 1, __func__, "DifferentialConsumptionIntervals");
         for (int j = 0; j < 27; j++) {
             decoder_logf(decoder, 1, __func__, "%d", DifferentialConsumptionIntervals[j]);
diff --git a/src/devices/flex.c b/src/devices/flex.c
index fe72754a..ab1c099d 100644
--- a/src/devices/flex.c
+++ b/src/devices/flex.c
@@ -267,9 +267,7 @@ static int flex_callback(r_device *decoder, bitbuffer_t *bitbuffer)
         }
     }
 
-    if (decoder->verbose) {
-        decoder_log_bitbuffer(decoder, 1, params->name, bitbuffer, "");
-    }
+    decoder_log_bitbuffer(decoder, 1, params->name, bitbuffer, "");
 
     // discard duplicates
     if (params->unique) {
@@ -571,7 +569,6 @@ static void parse_getter(const char *arg, struct flex_get *getter)
         usage();
     }
     /*
-    if (decoder->verbose)
         fprintf(stderr, "parse_getter() bit_offset: %d bit_count: %d mask: %lx name: %s\n",
                 getter->bit_offset, getter->bit_count, getter->mask, getter->name);
     */
@@ -769,13 +766,11 @@ r_device *flex_create_device(char *spec)
     }
 
     /*
-    if (decoder->verbose) {
         fprintf(stderr, "Adding flex decoder \"%s\"\n", params->name);
         fprintf(stderr, "\tmodulation=%u, short_width=%.0f, long_width=%.0f, reset_limit=%.0f\n",
                 dev->modulation, dev->short_width, dev->long_width, dev->reset_limit);
         fprintf(stderr, "\tmin_rows=%u, min_bits=%u, min_repeats=%u, invert=%u, reflect=%u, match_len=%u, preamble_len=%u\n",
                 params->min_rows, params->min_bits, params->min_repeats, params->invert, params->reflect, params->match_len, params->preamble_len);
-    }
     */
 
     free(spec);
diff --git a/src/devices/ttx201.c b/src/devices/ttx201.c
index 2cf76157..f6033884 100644
--- a/src/devices/ttx201.c
+++ b/src/devices/ttx201.c
@@ -149,7 +149,7 @@ static int ttx201_decode(r_device *decoder, bitbuffer_t *bitbuffer, unsigned row
     data_type = (b[2] & 0x70) >> 4;
     postmark = b[5];
 
-    if (decoder->verbose > 1) {
+    if (decoder_verbose(decoder) > 1) {
         decoder_log(decoder, 0, __func__, "TTX201 received raw data");
         decoder_log_bitbuffer(decoder, 0, __func__, bitbuffer, "");
         decoder_logf(decoder, 0, __func__, "Data decoded:" \
@@ -232,7 +232,7 @@ static int ttx201_callback(r_device *decoder, bitbuffer_t *bitbuffer)
             ret = ttx201_decode(decoder, bitbuffer, row, 0);
             if (ret > 0)
                 events += ret;
-            if (events && !decoder->verbose)
+            if (events && !decoder_verbose(decoder))
                 return events; // for now, break after first successful message
         }
     }