diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 3b6155f969d..a4b6c51ae5f 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -2354,6 +2354,7 @@
   #define NEOPIXEL_PIN     4       // LED driving pin
   //#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
   //#define NEOPIXEL2_PIN    5
+  #define NEOPIXEL2_INSERIES false // The default behaviour is 'false' with neopixel2 in parallel
   #define NEOPIXEL_PIXELS 30       // Number of LEDs in the strip, larger of 2 strips if 2 neopixel strips are used
   #define NEOPIXEL_IS_SEQUENTIAL   // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
   #define NEOPIXEL_BRIGHTNESS 127  // Initial brightness (0-255)
diff --git a/Marlin/src/feature/leds/neopixel.cpp b/Marlin/src/feature/leds/neopixel.cpp
index 5d80cfe5d22..520d4d63b22 100644
--- a/Marlin/src/feature/leds/neopixel.cpp
+++ b/Marlin/src/feature/leds/neopixel.cpp
@@ -38,7 +38,7 @@ Marlin_NeoPixel neo;
 int8_t Marlin_NeoPixel::neoindex;
 
 Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800)
-  #if MULTIPLE_NEOPIXEL_TYPES
+  #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
     , Marlin_NeoPixel::adaneo2(NEOPIXEL_PIXELS, NEOPIXEL2_PIN, NEOPIXEL2_TYPE + NEO_KHZ800)
   #endif
 ;
diff --git a/Marlin/src/feature/leds/neopixel.h b/Marlin/src/feature/leds/neopixel.h
index 17057498d4d..0155785e9af 100644
--- a/Marlin/src/feature/leds/neopixel.h
+++ b/Marlin/src/feature/leds/neopixel.h
@@ -61,7 +61,7 @@
 class Marlin_NeoPixel {
 private:
   static Adafruit_NeoPixel adaneo1
-    #if MULTIPLE_NEOPIXEL_TYPES
+    #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
       , adaneo2
     #endif
   ;
@@ -82,23 +82,36 @@ public:
 
   static inline void begin() {
     adaneo1.begin();
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.begin());
+    #if ENABLED(NEOPIXEL2_INSERIES)
+      adaneo2.begin();
+    #else
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.begin());
+    #endif
   }
 
   static inline void set_pixel_color(const uint16_t n, const uint32_t c) {
-    adaneo1.setPixelColor(n, c);
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
+    #if ENABLED(NEOPIXEL2_INSERIES)
+      if (n >= NEOPIXEL_PIXELS) adaneo2.setPixelColor(n - (NEOPIXEL_PIXELS), c);
+      else adaneo1.setPixelColor(n, c);
+    #else
+      adaneo1.setPixelColor(n, c);
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setPixelColor(n, c));
+    #endif
   }
 
   static inline void set_brightness(const uint8_t b) {
     adaneo1.setBrightness(b);
-    TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setBrightness(b));
+    #if ENABLED(NEOPIXEL2_INSERIES)
+      adaneo2.setBrightness(b);
+    #else
+      TERN_(MULTIPLE_NEOPIXEL_TYPES, adaneo2.setBrightness(b));
+    #endif
   }
 
   static inline void show() {
     adaneo1.show();
     #if PIN_EXISTS(NEOPIXEL2)
-      #if MULTIPLE_NEOPIXEL_TYPES
+      #if EITHER(MULTIPLE_NEOPIXEL_TYPES, NEOPIXEL2_INSERIES)
         adaneo2.show();
       #else
         adaneo1.setPin(NEOPIXEL2_PIN);
@@ -113,7 +126,7 @@ public:
   #endif
 
   // Accessors
-  static inline uint16_t pixels() { return adaneo1.numPixels(); }
+  static inline uint16_t pixels() { TERN(NEOPIXEL2_INSERIES, return adaneo1.numPixels() * 2, return adaneo1.numPixels()); }
   static inline uint8_t brightness() { return adaneo1.getBrightness(); }
   static inline uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
     return adaneo1.Color(r, g, b, w);