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

  1. Open your composition in After Effects.
  2. 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 (T on the keyboard).
    • Adjustment Layer: The Brightness, Exposure, or Glow Intensity property from an applied effect.

Step 2: Open the Expression Field

  1. Expand the properties of your chosen layer until the target property is visible.
  2. Hold Alt (Windows) or Option (macOS) and click the stopwatch next to the property name (such as Intensity or Opacity).
  3. 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 speed variable for rapid flickering (such as a broken neon sign) or lower it for slow, rhythmic breathing pulses.
  • Light Range: Change minVal and maxVal to 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 an ease() function or wrap the noise in Math.pow(n, 3) to skew the values toward the lower end, creating brief, sharp bursts of light.