Sound effects for Godot
By flreey · Published
Free CC0 sound effects for a Godot 4 game, ready to play below: jump, coin, hit, footsteps, door and the rest of a platformer, each one free to download here. Then the Godot side: putting a whole set in res:// with one command, playing a sound on an event, looping ambience, a volume slider for effects and music, and sound that pans with the camera. No attribution, and no API key to try it (5 sounds a day).
| Play | Event | Sound | Length | Download |
|---|---|---|---|---|
| Win / level completeAscending Arpeggio Level Up Fanfare 71 | Ascending Arpeggio Level Up Fanfare 71 | 0.70 s | ||
| JumpSmooth 8-Bit Video Game Jump 01 | Smooth 8-Bit Video Game Jump 01 | 0.23 s | ||
| LandHollow Heavy Thud 65 | Hollow Heavy Thud 65 | 0.13 s | ||
| Coin / pickupDouble-Chime 8-Bit Coin Pickup 52 (No Reverb) | Double-Chime 8-Bit Coin Pickup 52 (No Reverb) | 1.1 s | ||
| Hit / damageCracking Punch Impact 67 | Cracking Punch Impact 67 | 0.10 s | ||
| Sword slashFast Sword Slash With Metal Ring 11 | Fast Sword Slash With Metal Ring 11 | 0.39 s | ||
| GunshotShort Gunshot | Short Gunshot | 0.15 s | ||
| ExplosionShort Burst 8-Bit Explosion 65 | Short Burst 8-Bit Explosion 65 | 0.41 s | ||
| FootstepsBrisk Walking Footsteps On Wooden Floor 58 | Brisk Walking Footsteps On Wooden Floor 58 | 4.2 s | ||
| DoorQuick Door Opening 50 | Quick Door Opening 50 | 1.0 s | ||
| CheckpointSingle Soft Confirmation Tone 67 (No Reverb) | Single Soft Confirmation Tone 67 (No Reverb) | 0.16 s | ||
| Death / game overSlow 8-Bit Game Over Jingle 65 | Slow 8-Bit Game Over Jingle 65 | 0.38 s |
1. Pick the sounds for your kind of game
A sound set covers the events of one kind of game with sounds picked to fit together. The platformer set is above; the others:
- Retro game sound set — Pickup, jump, hit, power-up, laser, explosion and game over — one coherent chiptune-style kit
- Casual puzzle game sound set — Match, combo, bonus, slide, win, lose, countdown — a complete match-3 / puzzle kit
- Horror & suspense sound set — Drone, stinger, heartbeat, creak, growl, thunder, footsteps, wind — dread in one kit
- Dungeon Traps — Six isolated pressure plate, spike, gear, chain, gate and stone-door actions
- Crisp UI sound set — Dry, tight and bright — for dense productivity and developer tools
For one sound at a time, browse by what it is: 8-bit jumps, coin pickups, sword slashes, single footsteps or button clicks. Each page has several versions to compare.
2. Put a whole set in the project
From the project folder (the one with project.godot), one command writes a set into res://sounds:
npx sfxmint add --set platformer --out soundsEach file is named after its event (jump.mp3, coin.mp3, hit.mp3…), next to a SOUNDS.md listing each sound's page and license. Use --format ogg for ambience and music, or name events instead of a set: npx sfxmint add jump coin hit --out sounds. Run it again later and it keeps what is already there. Godot imports the new files when the editor regains focus. A whole set takes a free account's API key in SFXMINT_API_KEY; without a key you get the first 5 sounds. WAV comes with the download pack ($9.90 for 30 days, one payment): lossless, with no MP3 delay at the start and clean loops. With a pack's key in SFXMINT_API_KEY, add --format wav.
Prefer to stay in the editor? The SFXMint addon for Godot 4.6+ (MIT) adds a bottom dock: search the library, listen, and import a sound into res://audio/sfxmint/. Library search and downloads are free to try with no key: 20 lookups and 5 downloads a day, and each preview counts as a download.
3. Which format for which sound
| Sound | Format | Why |
|---|---|---|
| Short one-shots (jump, hit, click) | MP3 | Free to download, and Godot 4 plays it. It can start a few milliseconds late. Leave Loop off. |
| Cues that must land on the frame, and clean loops | WAV | Starts on the first sample, no decoding delay. Comes with the download pack ($9.90 for 30 days, one payment). |
| Ambience and music | OGG | A fraction of the size, and Godot loops it without a gap when Loop is on. Free, for the older sounds that have one. |
Import options live in the Import dock: select the file in the FileSystem dock, change the option, click Reimport. For a WAV, Loop Mode sets looping (Forward for a background, off for a one-shot); for an MP3 or OGG it is the Loop checkbox.
4. Play a sound on an event
Add an AudioStreamPlayer as a child of the player scene, drag jump.mp3 onto its Stream property, and call play() where the jump happens:
@onready var jump_sfx: AudioStreamPlayer = $JumpSfx
func _physics_process(delta: float) -> void:
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = JUMP_VELOCITY
jump_sfx.play()For many short cues from code, preload the streams and keep one player:
const SFX := {
"coin": preload("res://sounds/coin.mp3"),
"hit": preload("res://sounds/hit.mp3"),
"death": preload("res://sounds/death.mp3"),
}
@onready var sfx: AudioStreamPlayer = $Sfx
func play_sfx(name: String) -> void:
sfx.stream = SFX[name]
sfx.pitch_scale = randf_range(0.95, 1.05) # a little variety on repeats
sfx.play()- Overlapping plays: raise
max_polyphonyto 3 or 4 so fast coins do not cut each other off. - UI buttons: connect each button's
pressedsignal to a function that plays the click; one player in an autoload serves every menu. - Footsteps and hits that should never repeat: play several versions at random with
AudioStreamRandomizer, as in sound effect variations for Godot and Unity.
5. Separate volume for effects and music
Open the Audio panel at the bottom of the editor, add two buses named SFX and Music, and set each player's Bus property to one of them. A settings slider (0 to 1) then sets a whole bus:
func set_bus_volume(bus_name: String, value: float) -> void:
var bus := AudioServer.get_bus_index(bus_name)
AudioServer.set_bus_volume_db(bus, linear_to_db(value))
AudioServer.set_bus_mute(bus, value <= 0.0)
# HSlider with min 0, max 1, step 0.05:
func _on_sfx_slider_value_changed(value: float) -> void:
set_bus_volume("SFX", value)linear_to_db turns the slider's 0–1 into decibels, so 0.5 is about −6 dB, half the level. Muting at 0 avoids a faint sound at the bottom of the scale.
6. Sound that comes from a place
For an enemy, a door or a torch that the player walks past, use AudioStreamPlayer2D (or AudioStreamPlayer3D) as a child of that object. It pans with the object's position on screen and gets quieter with distance: max_distance sets where it goes silent, attenuation how fast it fades. Keep UI sounds and music on a plain AudioStreamPlayer, which sounds the same everywhere.
7. Loop ambience and music
Turn on looping in the Import dock (step 3), put the file on its own player with Autoplay on and its Bus set to Music or SFX. Backgrounds such as forest, rain, wind or dark horror ambience are in the library; download them as OGG.
In a web export, the browser keeps all audio silent until the first click, tap or key press. Start music after the player presses Start, not when the first scene loads, so it is heard from its beginning.
Questions
Can I use these sounds in a commercial Godot game?
Yes. Every library sound is CC0 1.0: sell the game, change the files, no credit needed. On Steam or itch.io, disclose that the sounds are AI-generated.
WAV, OGG or MP3 in Godot?
MP3 for most short cues: every sound downloads free as MP3, and Godot 4 plays it. WAV when a cue must start on the first sample or loop cleanly; it comes with the download pack ($9.90 for 30 days, one payment). OGG for music and ambience: smaller files, and Godot loops it without a gap. Older sounds have a free OGG.
Why does my coin sound cut off when I collect two quickly?
One AudioStreamPlayer plays one sound at a time by default; a second play() restarts it. Raise its max_polyphony to 3 or 4 and the plays overlap.
How do I let players change the sound effects volume?
Send effects to an SFX bus and music to a Music bus, then set each bus's volume from a slider with AudioServer.set_bus_volume_db and linear_to_db (the code is above).
How many sounds can I download for free?
On the website, 20 MP3 downloads a day, with or without a free account; WAV and ZIP packs come with a purchase. Through the CLI and the addon, 5 different sounds a day per network without an API key, 20 a month with a free account's key. Listening is never counted.
Does this work in Godot 3?
The files do, and so do AudioStreamPlayer and play(). The SFXMint addon needs Godot 4.6 or later; in Godot 3, download with the CLI instead, and use db2linear/linear2db in place of the Godot 4 names.