diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 3384aa7180..0e2e68233f 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -455,6 +455,7 @@ enum rgb_matrix_effects {
     RGB_MATRIX_HUE_PENDULUM,        // Hue shifts up a slight ammount in a wave to the right, then back to the left
     RGB_MATRIX_HUE_WAVE,            // Hue shifts up a slight ammount and then back down in a wave to the right
     RGB_MATRIX_PIXEL_FRACTAL,       // Single hue fractal filled keys pulsing horizontally out to edges
+    RGB_MATRIX_PIXEL_FLOW,          // Pulsing RGB flow along LED wiring with random hues
     RGB_MATRIX_PIXEL_RAIN,          // Randomly light keys with random hues
 #if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
     RGB_MATRIX_TYPING_HEATMAP,      // How hot is your WPM!
@@ -510,6 +511,7 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi
 |`#define ENABLE_RGB_MATRIX_HUE_PENDULUM`              |Enables `RGB_MATRIX_HUE_PENDULUM`             |
 |`#define ENABLE_RGB_MATRIX_HUE_WAVE`                  |Enables `RGB_MATRIX_HUE_WAVE `                |
 |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL`             |Enables `RGB_MATRIX_PIXEL_FRACTAL`            |
+|`#define ENABLE_RGB_MATRIX_PIXEL_FLOW`                |Enables `RGB_MATRIX_PIXEL_FLOW`               |
 |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN`                |Enables `RGB_MATRIX_PIXEL_RAIN`               |
 
 ?> These modes don't require any additional defines.
diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md
index e4d8d7c146..4a147e0c66 100644
--- a/docs/squeezing_avr.md
+++ b/docs/squeezing_avr.md
@@ -147,6 +147,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that
 #undef ENABLE_RGB_MATRIX_HUE_PENDULUM
 #undef ENABLE_RGB_MATRIX_HUE_WAVE
 #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
 #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
 
 #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
diff --git a/quantum/rgb_matrix/animations/pixel_flow_anim.h b/quantum/rgb_matrix/animations/pixel_flow_anim.h
new file mode 100644
index 0000000000..0e81cd0111
--- /dev/null
+++ b/quantum/rgb_matrix/animations/pixel_flow_anim.h
@@ -0,0 +1,51 @@
+// Copyright 2022 @filterpaper
+// SPDX-License-Identifier: GPL-2.0+
+
+#ifdef ENABLE_RGB_MATRIX_PIXEL_FLOW
+RGB_MATRIX_EFFECT(PIXEL_FLOW)
+#    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+static bool PIXEL_FLOW(effect_params_t* params) {
+    // LED state array
+    static RGB led[DRIVER_LED_TOTAL];
+
+    static uint32_t wait_timer = 0;
+    if (wait_timer > g_rgb_timer) {
+        return false;
+    }
+
+    inline uint32_t interval(void) {
+        return 3000 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16);
+    }
+
+    if (params->init) {
+        // Clear LEDs and fill the state array
+        rgb_matrix_set_color_all(0, 0, 0);
+        for (uint8_t j = 0; j < DRIVER_LED_TOTAL; ++j) {
+            led[j] = (random8() & 2) ? (RGB){0,0,0} : hsv_to_rgb((HSV){random8(), qadd8(random8() >> 1, 127), rgb_matrix_config.hsv.v});
+        }
+    }
+
+    RGB_MATRIX_USE_LIMITS(led_min, led_max);
+    // Light LEDs based on state array
+    for (uint8_t i = led_min; i < led_max; ++i) {
+        RGB_MATRIX_TEST_LED_FLAGS();
+        rgb_matrix_set_color(i, led[i].r, led[i].g, led[i].b);
+    }
+
+    if (!rgb_matrix_check_finished_leds(led_max)) {
+        // Shift LED state forward
+        for (uint8_t j = 0; j < led_max-1; ++j) {
+            led[j] = led[j+1];
+        }
+        // Fill last LED
+        led[led_max-1] = (random8() & 2) ? (RGB){0,0,0} : hsv_to_rgb((HSV){random8(), qadd8(random8() >> 1, 127), rgb_matrix_config.hsv.v});
+        // Set pulse timer
+        wait_timer = g_rgb_timer + interval();
+    }
+
+    return rgb_matrix_check_finished_leds(led_max);
+}
+
+#    endif  // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif      // ENABLE_RGB_MATRIX_PIXEL_FLOW
diff --git a/quantum/rgb_matrix/animations/rgb_matrix_effects.inc b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc
index 27ce347235..ac7bac428d 100644
--- a/quantum/rgb_matrix/animations/rgb_matrix_effects.inc
+++ b/quantum/rgb_matrix/animations/rgb_matrix_effects.inc
@@ -27,6 +27,7 @@
 #include "hue_pendulum_anim.h"
 #include "hue_wave_anim.h"
 #include "pixel_rain_anim.h"
+#include "pixel_flow_anim.h"
 #include "pixel_fractal_anim.h"
 #include "typing_heatmap_anim.h"
 #include "digital_rain_anim.h"