Grand opening25% off everything with FAM-261023-261025-UL4B9this weekendAdded for you at checkout Halloween Edition36 maps, limited runlimited runShop the drop

FREE TOOL · UseParticleFxAsset

FiveM particle effect list

Every particle effect GTA 5 ships, with the particle asset that holds it — 2,907 pairs, 2,541 distinct effect names across 364 assets. Search either half, filter to one asset, and copy the effect name, the asset name, or a Lua block that streams the asset in before it starts anything. The asset is not optional metadata: without it the effect name resolves to nothing.

Names from the publicly published GTA V data dumps. 183 effect names appear in more than one asset, and core alone holds 964 of them. The dump does not record which effects are meant to be looped, and neither does this page.

2,907 of 2,907 pairs

  • _fog_foundry
  • _fog_plane
  • bang_blood
  • bang_blood_car
  • bang_carmetal
  • bang_carmetal
  • bang_concrete
  • bang_dirt_dry
  • bang_hydraulics
  • bang_metal
  • bang_mud
  • bang_plastic
  • bang_sand
  • bang_sand_underwater
  • bang_snow
  • bang_wood
  • blood_animal_maul
  • blood_armour
  • blood_armour_heavy
  • blood_chopper
  • blood_entry
  • blood_entry
  • blood_entry
  • blood_entry
  • blood_entry_head_sniper
  • blood_entry_shotgun
  • blood_entry_sniper
  • blood_exit
  • blood_fall
  • blood_headshot
  • blood_melee_blunt
  • blood_melee_punch
  • blood_mist
  • blood_mist_prop
  • blood_mouth
  • blood_nose
  • blood_shark_attack
  • blood_stab
  • blood_stab_uw
  • blood_stungun
  • blood_throat
  • blood_wheel
  • bul_brick
  • bul_brick_heli
  • bul_bushes
  • bul_cardboard
  • bul_carmetal
  • bul_carmetal
  • bul_carmetal
  • bul_carmetal
  • bul_carmetal
  • bul_carmetal
  • bul_carmetal_heli
  • bul_chickenfarm
  • bul_concrete
  • bul_concrete
  • bul_concrete_heli
  • bul_concrete_minigun
  • bul_decal_blood
  • bul_decal_mud
  • bul_decal_oil
  • bul_decal_petrol
  • bul_decal_water
  • bul_decal_water_heli
  • bul_dirt
  • bul_dirt
  • bul_dirt_heli
  • bul_foam
  • bul_glass
  • bul_glass_heli
  • bul_glass_mini
  • bul_glass_shotgun
  • bul_glass_tv
  • bul_grass
  • bul_grass_heli
  • bul_gravel
  • bul_gravel_heli
  • bul_hay
  • bul_leaves
  • bul_mud
  • bul_mud_heli
  • bul_paper
  • bul_plaster_brittle
  • bul_plastic
  • bul_rubber_dust
  • bul_sand_loose
  • bul_sand_loose_heli
  • bul_sb_hal_skel_armour
  • bul_sb_hal_skel_bone
  • bul_snow
  • bul_stungun
  • bul_stungun_metal
  • bul_tarmac
  • bul_tarmac_heli
  • bul_water
  • bul_water_heli
  • bul_wood_splinter
  • bul_wood_splinter
  • bul_wood_splinter_heli
  • bullet_shotgun_tracer
  • bullet_shotgun_tracer
  • bullet_shotgun_tracer
  • bullet_tracer
  • bullet_tracer_ba_vehicle_remote_mg
  • bullet_tracer_ch_tank_laser
  • bullet_tracer_ch_tank_mg
  • bullet_tracer_gr_tintable
  • bullet_tracer_ie_vehicle_mg
  • bullet_tracer_ih_patrolboat
  • bullet_tracer_jet
  • bullet_tracer_mg
  • bullet_tracer_opp_fp
  • bullet_tracer_railgun
  • bullet_tracer_sm_vehicle_mg
  • bullet_tracer_turret
  • bullet_tracer_turret_gr
  • bullet_tracer_turret_gr_tampa
  • bullet_tracer_turret_mogul
  • bullet_tracer_turret_sm
  • bullet_tracer_turret_tula
  • bullet_tracer_valkyrie
  • bullet_tracer_xm_akula_mg_turret
  • bullet_tracer_xm_barrage_turret
  • bullet_tracer_xm_khanjali_mg
  • bullet_tracer_xm_thruster_mg
  • bullet_tracer_xm_thruster_mg
  • bullet_tracer_xm_thruster_mg
  • bullet_tracer_xs_sr
  • bullet_tracer_xs_vehicle_remote_mg_sf
  • cs_agency_toaster_smoke
  • cs_alien_hand_light
  • cs_alien_light_bed
  • cs_amb_tv_book_burn
  • cs_amb_tv_peeing
  • cs_amb_tv_sauna_steam
  • cs_arena_car_exhaust
  • cs_arm2_muz_smg
  • cs_avi_blood_entry
  • cs_avi_champagne_spray
  • cs_avi_muz_assault_rifle
  • cs_bigscr_beer_spray
  • cs_bigscr_cig_exhale_mouth
  • cs_bigscr_cig_smoke
  • cs_bigscr_eject_auto
  • cs_bigscr_eject_shotgun
  • cs_bigscr_muz_ar
  • cs_bigscr_muz_shotgun
  • cs_bigscr_muz_smg
  • cs_bike_exhaust
  • cs_bike_exhaust
  • cs_bul_concrete
  • cs_camera_flash
  • cs_camera_flash
  • cs_car2_bang_blood
  • cs_cbh_heli_gas_sign
  • cs_cbh_heli_roof
  • cs_cbh_heli_smoke
  • cs_ch1_bourbon_pour
  • cs_ch1_head_bang_blood
  • cs_ch1_veh_exhaust_car
  • cs_chaingun_muz
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth
  • cs_cig_exhale_mouth_finale
  • cs_cig_exhale_mouth_prologue
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_exhale_nose
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke
  • cs_cig_smoke_inhale
  • cs_cig_smoke_inhale
  • cs_cig_smoke_inhale
  • cs_cig_smoke_lamar
  • cs_cig_smoke_prologue
  • cs_cig_smoke_stub_out
  • cs_cig_smoke_stub_out
  • cs_cig_smoke_stub_out
  • cs_doobie_smoke
  • cs_dry_ice_freezer_door
  • cs_dry_ice_freezer_door
  • cs_dry_ice_freezer_door
  • cs_dry_ice_freezer_floor
  • cs_dry_ice_freezer_floor
  • cs_dry_ice_point
  • cs_dry_ice_point
  • cs_dst_impotent_rage_toy
  • cs_ex1_cargo_fire
  • cs_ex1_cargo_fire
  • cs_ex1_elec_malfunction
  • cs_ex1_plane_break_L
  • cs_ex1_plane_break_R
  • cs_ex1_plane_debris_trail
  • cs_ex1_plane_impacts
  • cs_ex1_plane_spark_L
  • cs_ex1_plane_spark_R
  • cs_ex1_sparking_wires_sm
  • cs_ex1_sparking_wires_sm
  • cs_ex1_water_arms
  • cs_ex1_water_body
  • cs_ex1_water_box
  • cs_ex1_wing_smoulder
  • cs_ex2_jeep_crash
  • cs_ex3_sand_dust
  • cs_ex3_water_drips
  • cs_ex3_wheel_spin
  • cs_exile2_gas_liquid_pour
  • cs_exile2_iron_steam
  • cs_extr_bang_dirt
  • cs_fam1_bourbon_pour
  • cs_fam2_foot_sand
  • cs_fam2_ped_splash
  • cs_fam2_ped_splash
  • cs_fam2_ped_water_splash
  • cs_fam2_radio_splash
  • cs_fam3_brk_pot_plant
  • cs_fam3_cig_exhale_mouth
  • cs_fam3_drool_drip
  • cs_fam4_fridge_door
  • cs_fam4_juice_pour
  • cs_fam4_juice_shot
  • cs_fam4_juice_spit
  • cs_fam4_juice_splash
  • cs_fam4_liquid_broccoli
  • cs_fam4_shot_chandelier
  • cs_fam4_water_pour
  • cs_fam4_whiskey_pour
  • cs_fam4_whiskey_splash
  • cs_fam4_whiskey_splash
  • cs_fam5_bourbon_pour
  • cs_fam5_michael_pool_splash
  • cs_fam5_michael_pool_splash
  • cs_fam5_ped_water_drips
  • cs_fam5_water_splash_ped
  • cs_fam5_water_splash_ped_in
  • cs_fam5_water_splash_ped_in

Showing 300. Pick an asset to see one dictionary on its own.

HOW TO USE IT

Four steps, two of which are the whole bug

Requesting the asset and waiting for it, then pointing the next call at it. Skip either and a perfectly correct effect name draws nothing and logs nothing.

  1. 01 Pick the effect and note its asset

    Both halves travel together. Filter by asset to browse what belongs to one dictionary, or search a name and read the asset it came out of.

  2. 02 Request the asset and wait

    RequestNamedPtfxAsset(asset), then loop on HasNamedPtfxAssetLoaded(asset). Never skip the wait, even for core.

  3. 03 Point the next call at the asset

    UseParticleFxAsset(asset) immediately before each start call. It is consumed by one call, so repeat it for each effect you start.

  4. 04 Start it, then clean up

    One-shot for a burst, looped for anything that stays. Keep looped handles, StopParticleFxLooped them when you are done, and RemoveNamedPtfxAsset once nothing needs the asset.

A one-shot burst, replicated to everyone nearby

Client-side. SetParticleFxNonLoopedColour applies to the next non-looped effect only, and only some effects respond to it — many have colour baked in and will mix rather than replace.

local asset = "scr_indep_fireworks"
local effect = "scr_indep_firework_starburst"

RequestNamedPtfxAsset(asset)
while not HasNamedPtfxAssetLoaded(asset) do
    Wait(0)
end

local ped = PlayerPedId()
local pos = GetEntityCoords(ped)

SetParticleFxNonLoopedColour(1.0, 0.35, 0.1)
UseParticleFxAsset(asset)
StartNetworkedParticleFxNonLoopedAtCoord(effect, pos.x, pos.y, pos.z + 12.0, 0.0, 0.0, 0.0, 2.0, false, false, false)

RemoveNamedPtfxAsset(asset)

THE TRAPS

Six things that silently produce nothing

None of these raise an error. The start natives return a handle or a boolean, there is no console output, and a wrong scale looks identical to a wrong asset.

The asset has to be streamed in before the effect name means anything

RequestNamedPtfxAsset only asks. Until HasNamedPtfxAssetLoaded returns true the effect name resolves to nothing, every start call quietly fails, and there is no error in the console to tell you why. Wait for the load. One Wait(0) loop is the whole fix, and skipping it is far and away the most common reason a correct effect name draws nothing.

UseParticleFxAsset applies to exactly one start call

It is not a mode you switch on. It points the next start call at an asset and is then spent, which the native documentation says in as many words. Two effects means two UseParticleFxAsset calls, and a loop that starts effects per frame needs one inside the loop — not above it.

A looped effect runs until you stop it

StartParticleFxLoopedAtCoord hands back a handle. Lose the handle and the effect is permanent for that client: StopParticleFxLooped takes the handle and nothing else can find it. Keep every handle you create, stop them when the thing they belong to ends, and stop them again in an onResourceStop handler.

The local variants only ever draw on one machine

StartParticleFxLoopedAtCoord and StartParticleFxNonLoopedAtCoord are client-local. Nobody else sees them, however correct they look on your screen. The networked variants replicate — but there is no networked looped at-coord native at all, so a looped effect at a fixed world point has to be started by every client that should see it, usually off a server event.

Scale and the three axis flags are not decoration

Scale is a multiplier on an effect that was authored at a particular size, so an effect built for a car explosion at 0.1 is a few invisible pixels. The three booleans after it invert the effect on the X, Y and Z axis; almost every working snippet passes false for all three, and flipping one by accident turns a plume upside down into the ground.

The dump does not say which effects are looped

An effect name carries no flag for looped or one-shot, and some names only behave in one of the two. Nothing on this page claims to know which: try the one-shot first because it cleans itself up, and if it flashes and vanishes when you wanted a plume, run the same name looped.

The “once per call” behaviour is not folklore — the FiveM reference for START_NETWORKED_PARTICLE_FX_NON_LOOPED_AT_COORD states that USE_PARTICLE_FX_ASSET has to be called before every start call.

LOOPED, ONE-SHOT, LOCAL, NETWORKED

Four start natives, and the one that does not exist

Looped effects hand back a handle and run until you stop them. Networked effects replicate — except there is no networked looped at-coord native in the game at all.

This client onlyreturns handle (int)
StartParticleFxLoopedAtCoord

Runs until stopped. Returns a handle you keep and later pass to StopParticleFxLooped. For anything persistent: a burning barrel, a leaking pipe, a smoke column over a fixed point.

This client onlyreturns int
StartParticleFxNonLoopedAtCoord

One shot, then gone. Nothing to keep, nothing to stop, nothing to leak. For impacts, bursts and anything that happens once.

Everyone nearbyreturns BOOL
StartNetworkedParticleFxNonLoopedAtCoord

The same one shot, replicated to other players. This is the one to use for an effect other people are supposed to witness — an explosion, a firework, a splash.

Everyone nearbyreturns handle (int)
StartNetworkedParticleFxLoopedOnEntity

The only networked looped family, and it must be attached to an entity rather than a coordinate. If your looped effect needs to be visible to everyone, either hang it off an entity with this, or broadcast an event and have each client start the local version itself.

A looped plume you can actually turn off again

Client-side. Every handle is kept, stopped when the script asks and stopped again when the resource stops — otherwise a restart leaves another permanent plume on the map.

local asset = "core"
local effect = "exp_grd_bzgas_smoke"

local handles = {}

local function startPlume(x, y, z)
    RequestNamedPtfxAsset(asset)
    while not HasNamedPtfxAssetLoaded(asset) do
        Wait(0)
    end

    UseParticleFxAsset(asset)
    local handle = StartParticleFxLoopedAtCoord(effect, x, y, z, 0.0, 0.0, 0.0, 1.5, false, false, false, false)
    SetParticleFxLoopedColour(handle, 0.1, 0.1, 0.1, false)
    handles[#handles + 1] = handle
    return handle
end

local function stopAll()
    for i = #handles, 1, -1 do
        if DoesParticleFxLoopedExist(handles[i]) then
            StopParticleFxLooped(handles[i], false)
        end
        handles[i] = nil
    end
    RemoveNamedPtfxAsset(asset)
end

startPlume(195.2, -933.8, 30.7)

AddEventHandler("onResourceStop", function(resource)
    if resource == GetCurrentResourceName() then
        stopAll()
    end
end)
A looped or local effect that everyone should see

Client-side, triggered from the server. Because there is no networked looped at-coord native, this is how a fixed-position effect reaches every player: tell each client to start it themselves.

RegisterNetEvent("fam:ptfx:burst", function(coords, asset, effect)
    RequestNamedPtfxAsset(asset)
    while not HasNamedPtfxAssetLoaded(asset) do
        Wait(0)
    end

    UseParticleFxAsset(asset)
    StartParticleFxNonLoopedAtCoord(effect, coords.x, coords.y, coords.z, 0.0, 0.0, 0.0, 1.0, false, false, false)
    RemoveNamedPtfxAsset(asset)
end)

Signatures from the FiveM native reference: REQUEST_NAMED_PTFX_ASSET, HAS_NAMED_PTFX_ASSET_LOADED, START_PARTICLE_FX_LOOPED_AT_COORD, START_PARTICLE_FX_NON_LOOPED_AT_COORD, START_NETWORKED_PARTICLE_FX_LOOPED_ON_ENTITY, STOP_PARTICLE_FX_LOOPED and REMOVE_NAMED_PTFX_ASSET.

QUESTIONS

About particle effects in FiveM

Why does my particle effect not show up?
Almost always the asset was not loaded yet. RequestNamedPtfxAsset is a request, not a load — until HasNamedPtfxAssetLoaded returns true the effect name resolves to nothing and the start call fails silently. The second most common cause is a missing UseParticleFxAsset immediately before the start call, and the third is a scale that is far too small for an effect authored at a different size.
What is the difference between a looped and a non-looped effect?
A non-looped effect plays once and disposes of itself; you can ignore the return value. A looped effect runs forever and hands back a handle, and that handle is the only way to stop it — StopParticleFxLooped takes nothing else. Keep your handles in a table, stop them when whatever owns them ends, and stop them again on onResourceStop or every restart will leave another permanent plume on the map.
Do I have to call UseParticleFxAsset every single time?
Yes. The native documentation is explicit about it: the asset selection applies to the next start call and is then spent. If you start three effects you call it three times, and if you start effects inside a loop the call belongs inside the loop body. Setting it once at the top of a function and starting several effects below is a bug that looks like a flaky effect.
Why can other players not see my effect?
Because StartParticleFxLoopedAtCoord and StartParticleFxNonLoopedAtCoord are client-local by design. Use StartNetworkedParticleFxNonLoopedAtCoord for a one-shot everyone should see. For a looped one there is no networked at-coord native in the game at all — your options are StartNetworkedParticleFxLoopedOnEntity, which needs something to attach to, or a server event that tells every client to start the local version itself.
How do I know whether a name is meant to be looped?
You cannot tell from the name, and the dump does not record it — so this page does not pretend to. Start with the non-looped call because it cannot leak, and if the effect flashes once where you wanted something continuous, run the same name through the looped call instead. A few names only work one way round.
Where does this list come from?
The publicly published GTA V data dumps (DurtyFree’s particleEffectsCompact.json), the same source behind this site’s prop, ped, vehicle and animation references. 364 particle assets, 2,907 asset-and-effect pairs, 2,541 distinct effect names. 183 names appear in more than one asset, which is why the pairing is the data rather than the name on its own.

Names from the publicly published GTA V data dumps. The effects themselves are the property of Take-Two Interactive and Rockstar Games — see our trademark and IP notice.