LEDs are current driven devices.
This means that the brightness of the LED is pretty much proportional to the current through it.
At low currents, the forward voltage across a LED (and in fact almost any semiconductor diode) is proportional to the log of the current through it so the voltage rises sharply with applied current until, at higher currents, the voltage drop across the internal series resistance begins to dominate whereupon the voltage drop increases almost linearly with applied current.
The corollary of this is that, until the internal resistance of the diode dominates, the current through the LED is exponentially related to the voltage applied across it. In other words, in this region of operation, a small change in voltage will cause a large change in current. In fact the same absolute voltage change of 'deltaV' volts in any given applied voltage 'Vd' will cause the same ratio change in the LED curent, for example doubling or halving it, irrespective of the actual value of Vd.
The internal resistance of most low current (<50mA max) LEDs is a few Ohms. Although this is around 10 to 100 times the forward resistance of normal silicon diodes, the current through them is still very sensitive to the voltage across them.
The forward voltage vs. current of each diode is slightly different simply due to manufacturing tolerances.
The forward voltage vs. current is also temperature sensitive: falling with increasing temperature.
This means that for a fixed voltage across different diodes, they may draw significantly different currents. This also means that the diodes passing more current will have a higher junction temperature. therefore they will draw even more current and so will heat up more.
This is called thermal runaway.
If left uncontrolled, the difference in the forward voltage vs. current will not only make some LEDs appear significantly brighter than others, the thermal runaway may eventually destroy them.
The simplest way to control LED current is to put a resistor in series with each LED. This reduces the maximum LED current that can be supplied for a given voltage but significantly reduces the spread of current across the LEDs and reduces the voltage and temperature dependence of the LED currents.
These simulations illustrate this.
CTRL+R to run the simulation.
Try different VDELTA and resistor values to see what effects they have.
Arrange the traces using the blue gear icon in the WaveForm tabs.
BTW: the best way to drive more than one LED is to connect them all in series and drive them from a constant current source. That way they all pass exactly the same current and it is independent of the LED characteristics, temperature and supply coltage.
The remaining difference in LED brightness will be due to the individual LED curent vs. light output characteristics so if this matters, the LEDs need to be selected for brightness matching.
The challenge is of course to design such a current source.