Create Random Pulsing Lights in After Effects
Creating random pulsing lights in Adobe After Effects is a fast and
efficient way to simulate organic flickering, faulty fluorescent bulbs,
or dynamic sci-fi glows. By applying the native noise()
expression to light intensity, opacity, or glow properties, you can
produce continuous, non-repeating animations without relying on manual
keyframes. This guide covers how to write, implement, and customize
noise expressions to achieve realistic, randomized pulsing light
effects.
Step 1: Set Up Your Light or Visual Layer
- Open your composition in After Effects.
- Choose the layer or property you want to pulse. Common options
include:
- Point or Spot Light: The Intensity property under Light Options.
- Shape or Solid Layer: The Opacity
property (
Ton the keyboard). - Adjustment Layer: The Brightness, Exposure, or Glow Intensity property from an applied effect.
Step 2: Open the Expression Field
- Expand the properties of your chosen layer until the target property is visible.
- Hold Alt (Windows) or Option (macOS) and click the stopwatch next to the property name (such as Intensity or Opacity).
- The numerical values will turn red, and a text box will appear in the timeline.
Step 3: Apply the Noise Expression
Unlike the commonly used wiggle() function, the
noise() function uses mathematical Perlin noise, creating
smoother and more organic transitions between random values. The
function noise() outputs values between -1 and
1.
Paste the following expression into the expression field:
speed = 4; // Controls how fast the light pulses
minVal = 20; // Minimum brightness or opacity
maxVal = 100; // Maximum brightness or opacity
// Normalize noise from [-1, 1] to [0, 1]
n = (noise(time * speed) + 1) / 2;
// Map the normalized noise to the target range
linear(n, 0, 1, minVal, maxVal);Step 4: Randomize Multiple Lights
If you duplicate the layer, every duplicate will pulse identically
because they are calculating the same noise at the same
time value. To make each light layer pulse independently,
offset the noise using the layer's unique index.
Replace the code with this multi-dimensional noise expression:
speed = 4;
minVal = 10;
maxVal = 150;
// Use layer index as an offset coordinate
n = (noise([time * speed, index * 123.45]) + 1) / 2;
linear(n, 0, 1, minVal, maxVal);Step 5: Adjusting the Pulse Characteristics
- Pulse Speed: Increase the
speedvariable for rapid flickering (such as a broken neon sign) or lower it for slow, rhythmic breathing pulses. - Light Range: Change
minValandmaxValto define how dark the light gets at its dimmest point and how bright it gets at its peak. - Sharpness (Strobe Effect): If you want sharp,
sudden flickers rather than smooth pulses, replace
linear(n, 0, 1, minVal, maxVal);with anease()function or wrap the noise inMath.pow(n, 3)to skew the values toward the lower end, creating brief, sharp bursts of light.