Four 100 W panels wired in series make 91.2 V at 5.78 A. The same four panels wired in parallel make 22.8 V at 23.12 A. Split evenly two-and-two, they make 45.6 V at 11.56 A. All three arrays deliver exactly 400 W — the wattage never changes — but the voltage and current each layout hands off to the wiring downstream differ by a factor of four, and that factor is what decides whether a controller survives a cold morning or a wire melts its insulation.

Series adds voltage, parallel adds current — nothing else changes

A photovoltaic panel is a string of cells, and a string of panels behaves the same way one more level up. Wire panels in series — positive of one to negative of the next — and their voltages add while the current stays capped at whatever the weakest panel in the string produces. Wire them in parallel — positive to positive, negative to negative — and their currents add while the voltage stays at a single panel's own voltage. Nothing about the panels changes between the two cases; only how their terminals are connected does.

OffgridEngine.stringCalc(panel, inSeries, parallel, tMinC) is the exact function this site uses to compute both effects at once from a single panel spec: string_voc_stc = panel.voc × inSeries, array_isc = panel.isc × parallel, and array_w = panel.watts × inSeries × parallel. Series count multiplies voltage; parallel count multiplies current; total wattage is the product of both counts and never depends on which one did the multiplying.

Worked example: four Rich Solar MEGA 100 panels, three layouts

Take the Rich Solar MEGA 100 (RS-M100): Voc 22.8 V, Vmp 18.6 V, Isc 5.78 A, Imp 5.38 A, 100 W, temperature coefficient −0.29%/°C. Running stringCalc() against four of these panels in three different layouts, evaluated at a −20°C cold-string temperature (a −14.9°C design low minus the site's standard 5°C margin, matching the same calculation the cold-Voc guide uses):

Four MEGA 100 panels: 1s4p, 2s2p, and 4s1p, via stringCalc()
LayoutString Voc (25°C)String Voc, cold (−20°C)Array IscTotal watts
1 series × 4 parallel22.8 V25.8 V23.12 A400 W
2 series × 2 parallel45.6 V51.5 V11.56 A400 W
4 series × 1 parallel91.2 V103.1 V5.78 A400 W

Every row is 400 W. The fully-parallel layout hands a controller 25.8 V and asks for nearly 23 amps of ampacity and fusing. The fully-series layout hands a controller over 103 V cold and asks for barely 6 amps. A controller or a wire gauge sized correctly for one of these three layouts can be badly wrong for either of the other two, despite all three describing "the same array" in casual conversation.

Series wiring is what creates the cold-Voc failure mode

Because series count multiplies directly into string voltage, and open-circuit voltage rises as panels get colder (the mechanism the cold-Voc guide covers in full), series count is the dial that decides whether a string can exceed a controller's maximum PV input voltage. In the table above, the 4-series layout's cold Voc of 103.1 V would exceed a 100 V controller outright; the 1-series (all-parallel) layout's cold Voc of 25.8 V has no realistic path to exceeding any PV input rating sold for this class of system. Parallel wiring cannot cause this failure mode at all, because parallel count never appears in the Voc calculation — only inSeries does.

Parallel wiring is what decides wire and controller current

The mirror image applies to current. array_isc = panel.isc × parallel sets the array's short-circuit current, and that number drives two downstream checks: whether it exceeds the controller or station's rated maximum PV input current, and whether the PV wire is heavy enough. The site's PV circuit sizing (Calc::PV_CIRCUIT_FACTOR = 1.56, from NEC 690.8's combined safety and irradiance-enhancement margin) sets required ampacity at array_isc × 1.56, not at the array's normal operating current — the same margin cheap-wire installs skip and expensive ones don't.

For the 1s4p layout above, that's 23.12 A × 1.56 = 36.07 A of required wire ampacity — enough to need real 10 AWG copper, not the thin leads some panels ship with for a single unit. For the 4s1p layout, it's 5.78 A × 1.56 = 9.02 A, comfortably inside far lighter wire. Same four panels, same total power, an ampacity requirement that differs by exactly the ratio of parallel counts (4:1), because that ratio is the only thing that changed.

The same run of wire, three very different verdicts

Voltage drop makes the current difference concrete in a way "amps" alone doesn't. The PV circuit vdrop limit on this site is 2% (Calc::VDROP_LIMIT_PV), tighter than the 10% general-circuit limit because PV wiring runs are often long and drop compounds with distance. Running vdrop() for a 10 m one-way run of 10 AWG copper (5.26 mm²) against the three layouts from the table above, at each layout's own array current and circuit voltage:

10 m of 10 AWG copper, same three layouts, via vdrop()
LayoutCircuit voltage (Vmp)Current carriedVoltage dropDrop as % of circuit voltageWithin 2% PV limit?
1 series × 4 parallel18.6 V21.52 A1.41 V7.57%No
2 series × 2 parallel37.2 V10.76 A0.70 V1.89%Yes
4 series × 1 parallel74.4 V5.38 A0.35 V0.47%Yes

Identical wire, identical distance, identical total power — and the fully-parallel layout fails the site's own PV vdrop check by nearly 4x while the fully-series layout clears it with margin to spare. The reason is entirely in the current term of the vdrop formula (v = 2 × length × current × ρ_copper / area): drop scales linearly with current, and the parallel layout carries four times the current of the series layout on the exact same conductor. Fixing the parallel layout's drop means a heavier gauge, a shorter run, or splitting the array into more, shorter home-run circuits — not a different controller.

Why real arrays rarely end up as pure "all series" or "all parallel"

The 1s4p and 4s1p extremes above are useful for isolating what each count does, but most real builds land somewhere in the middle, like the 2s2p row, because both extremes tend to hit a limit on one side while leaving slack on the other. All-series concentrates every panel's voltage into one string, which caps out fast against a controller's maximum PV input voltage — especially once the cold-Voc effect from the earlier example is included — long before wattage becomes the binding constraint. All-parallel avoids that voltage ceiling entirely but concentrates all the current into whatever wire and fusing serves the combined array, which gets expensive and heavy fast, and multiplies the number of individual overcurrent-protected home runs a real installation needs (each parallel string typically wants its own fuse feeding into a combiner, per NEC 690.9, precisely because a fault in one string can otherwise be back-fed by the others).

A layout like 2s2p is a middle point on both axes: half the voltage of full series, half the current of full parallel, which is why panel counts on real installations are so often chosen as balanced factor pairs of the total panel count rather than a single long string or a single wide parallel bank.

Try it: your panel, your layout

Enter one panel's Voc, Vmp, Isc, and Imp from its datasheet, and a series/parallel count, to see the resulting string voltage and array current via stringCalc().

String Voc (25°C): · Cold: · Array Isc: · Total:

What this means for wiring an array

Three consequences follow directly from which count multiplies which quantity, not from a rule of thumb:

  1. Choose series count against the controller's voltage window, cold included. Too many panels in series and a cold morning pushes Voc past the controller's maximum; too few and Vmp may fall below the controller's minimum start voltage, especially on an MPPT unit with a defined start threshold.
  2. Choose parallel count against the controller's current rating and the wire's ampacity. Too many panels in parallel and the array's Isc × 1.56 exceeds what the controller or the wire between array and controller can carry, independent of how safe the voltage side looks.
  3. The two decisions are independent, and a layout can pass one check and fail the other. A 2s2p array and a 1s4p array of the same four panels can both total 400 W while one comfortably clears a controller's voltage limit and current limit and the other clears voltage but blows past current, or vice versa — checking total wattage against a controller's rated input power says nothing about whether either individual limit is respected.

The panel catalog and controller catalog carry the Voc, Vmp, Isc, and Imp figures and PV input limits used above for every part on the site, so this same three-way comparison can be run for any panel and any target array size.

A mixed-string mistake stringCalc() alone won't catch

One failure mode worth naming separately: wiring panels of different specifications into the same parallel group. stringCalc() assumes every panel in a layout shares one voc, vmp, isc, and imp, which is true for identical panels but breaks the moment two different models, or even two units of the same model with meaningfully different real-world output from age or partial shading, are paralleled together. Paralleling two strings with different voltages forces the higher-voltage string to be pulled down toward the lower one's operating point, or drives reverse current into the weaker string under some fault conditions — which is exactly why string-level fusing per NEC 690.9 exists, and why the practical rule is to keep every string in a parallel group matched in panel count, model, and orientation, not just matched in total wattage. Two 200 W strings built from different panel models can look identical on a spec sheet's wattage column while behaving very differently once wired together, and neither stringCalc() nor a wattage total will surface that mismatch — it has to be caught by checking each string's own Vmp and Voc individually before combining them.

These results are for reference. Wiring must be installed by a qualified electrician. Mobile installations follow ABYC E-11; stationary ones NEC 690/706.