Z-Fighting in Unreal Engine 5: Why Surfaces Flicker and How to Fix It

Table of Contents

Works in Unreal Engine 5.1 to 5.8. Updated October 2026.

Quick answer: Z-fighting happens when two surfaces sit at almost exactly the same distance from the camera.

  1. Look for a duplicate: drag the flickering object aside with the move gizmo and see whether an identical copy is underneath. Delete the copy.
  2. If two different surfaces overlap (a floor plane on a landscape, a sign on a wall), move one by 0.1 to 1 cm.
  3. For stickers, posters and stains, use a Decal instead of a flat plane.
  4. Flickering only far away? Raise Near Clip Plane in Project Settings > Engine > General Settings.

Why Z-fighting happens

For every pixel, the GPU keeps one depth value and draws whichever surface is closest. When two surfaces are at nearly the same depth, rounding decides the winner, and the winner changes from pixel to pixel and frame to frame. That shows up as stripes or patches that crawl when the camera moves. TSR’s frame-to-frame jitter makes it shimmer even when the camera is still.

Common causes

CauseHow to spot itFix
Duplicate actorAlt-dragged or pasted twice; two entries with the same name in the OutlinerDelete one
Duplicate faces inside the meshFlickers even when it’s the only actorClean up the mesh in your 3D app
Overlapping surfacesFloor plane on a landscape, or walls sharing a faceOffset one slightly
Stickers and signs as planesA flat mesh pressed against a wallUse a Decal
Small Near Clip PlaneFlickering gets worse with distanceRaise Near Clip Plane

Step 1: Find duplicates

Duplicates are the most common cause, especially after Alt-dragging or pasting.

  1. Click the flickering surface.
  2. Move it up with the gizmo. If an identical copy stays behind, that’s your problem.
  3. Delete one copy, or press Ctrl+Z to put it back if there was no copy.

In a Blueprint, check that the same mesh isn’t added twice, for example once as a component and again in the Construction Script.

Step 2: Duplicate faces inside the mesh

If one mesh flickers on its own, the model may contain two copies of the same faces. In Blender, select all in Edit Mode and use Mesh > Clean Up > Merge by Distance, then delete any leftover duplicate faces and re-import.

Step 3: Offset or use decals

Move the surface you want on top 0.1 to 1 cm towards the camera. For signs, stains and posters, a Decal projects onto the surface underneath, so there are no two surfaces to fight.

When you can’t move the mesh (for example a shared asset), push it towards the camera in its material. Plug this into World Position Offset:

				
					CameraVector * 0.5
				
			

Here 0.5 means half a centimetre towards the camera.

Step 4: Raise the Near Clip Plane

Depth precision depends on the near clip plane. The default is 10 cm. Raising it to 20 or 30 cm gives more precision further away, but the camera then cuts into objects closer than that distance. Change it in Project Settings > Engine > General Settings > Near Clip Plane, then restart the editor.

Translucent objects (glass, water) that pop in front of each other aren’t Z-fighting. That’s translucency sort order. Raise Translucency Sort Priority on the object that should draw on top.

FAQ

Does Nanite cause Z-fighting?

Not by itself. Two overlapping Nanite meshes fight just like normal meshes, and the fixes are the same.

Why doesn’t it flicker in my 3D app?

Every renderer has this limit. Your 3D app may use different clip planes, or it may not jitter the image like TSR does.

Can I fix it with anti-aliasing?

No. Anti-aliasing can blur it into a smoother shimmer, but the overlap is still there.

Related tutorials