Find and Fix hard to find Sounds: Failed to load sound rbxassetid://: Unable to download sound data

Okay, I didn’t see anything here like this, I’ll take this down if anyone else already posted something like this.

Basically, this is for people who are getting that lovely red text that says something like:
Failed to load sound rbxassetid://1234567890: Unable to download sound data

This is intended for people who have sound errors and have not been able to find the sounds using Explorer filters or the View Sounds plugin.
This code is meant to just be ran in the “Run a command” section in Roblox Studio and does not need to be put in a script or or used while the game is running.

--// Written by NoobFragged
--// Use GetDescendants to get all objects in the game
local allObjects = game:GetDescendants()

--// Iterate over all objects
for i, object in ipairs(allObjects) do
    --// Check if the object is a Sound
    if object:IsA('Sound') then
        --// If it is a Sound, check its SoundId
        if object.SoundId == "rbxassetid://1234567890" or object.SoundId == "rbxassetid://2345678901" then
            print("Found sound in object: " .. object:GetFullName())

Just replace the rbxassetid://1234567890 with the asset ID you are looking for.
It won’t matter if you leave the 2nd one as it is or not.
You can just put more "or object.SoundId == " if you need to search for more sounds than 2.

You can run this right inside studio.
It will output like this:

04:14:01.988 Found sound in object: ServerStorage.Temporary. R6.Zombie Captain.Music - Edit
04:14:02.009 Found sound in object: ServerStorage.Temporary.Less Working Tools.Holy Divider.Scripts.AoeSpell.SFX - Edit

Those are examples of two sounds from assets made by Roblox that have non-working sounds that I found with this script. When I tried to filter Explorer by sounds to search through them, those did not even show up.

I wrote this script after being absolutely annoyed that I couldn’t find these sounds when I combed through every sound that showed up when I filtered the Explorer and searched every script.

I figure somewhere out there, someone has to be annoyed by these kinds of sound errors as well.

Note: Neither of those sounds showed up in the new “View Sounds” plugin either.
So I had really tried everything before I wrote this script.

I hope this helps anyone that was as frustrated as I was with sounds I couldn’t find.


Using selections can enhance the quality of the outcome:

local allObjects = game:GetDescendants()
local selection = game:GetService("Selection")

local selected = {}
--// Iterate over all objects
for i, object in ipairs(allObjects) do
	--// Check if the object is a Sound
	if object:IsA('Sound') then
		--// If it is a Sound, check its SoundId
		if object.SoundId ~= "" then
			if not object.IsLoaded or object.TimeLength <= 0  then


If a sound has been deleted, it will return a time length of 0 and the ‘isLoaded’ property will be set to false, indicating that it can no longer be used, so we can use them!


I originally tried looking for loaded and rejected assets and just ended up getting errors.
I backed up and tested your version of this, it failed to find the same two assets I just found with the script I wrote.
I’m not sure the way this is best used, but I was just trying to make something simple that would find all assets by the ID. If they’re producing a red error, you have the ID, and that’s what this was to find.

It finds every one without fail (so far from what I’ve tested) regardless of where it is located or if you can find it and prints the full path to it.

I was just trying to make something easy that did the job.


This was such a pain I ended up making a whole plugin for myself.
Though I use it for mostly editing a ton of objects which are scattered around the map and explorer.


I almost went that route.
I figured this was easy, you don’t have to install a plugin, and one day if Roblox improves that View Sounds plugin I won’t end up with an obsolete plugin.

I can see you were definitely frustrated.
I like the ImageId one…
Maybe I need to make myself a plugin too…

1 Like

If you want I can link you the plugin.
Though I think it has some experimental things in it which didn’t end up working because the property is roblox protected (like changing mesh id).
It works by putting in the property and pressing find and it will select all the objects in the explorer which match the settings.
I made the deselect in the right side for the property since when I’m looking for bunch of parts in different locations the position property won’t match.


Sure, I’ll check it out. You can message it to me or whatever you want to do.

I definitely need to eventually start making some plugins for little problems like this.
When I first started trying to find the sounds by whether they were loaded or rejected I was getting:

"The current identity (4) cannot Class security check (lacking permission 6) " errors.

This was bugging me because I’m like, why is it not showing up when I filter Explorer, it’s not in the ViewSounds plugin, and it’s not coming from a script… maddening.

I’m sure I have images and meshes that are moderated or didn’t really work floating around different places too.

I don’t know about you but even though it’s just sounds, seeing those sound errors every time was getting under my skin something fierce. It was driving my OCD mad.


just use audio discovery…?

It selects the sound for you.

I’m going to guess you didn’t read the part where I said I did use the Audio Discovery and neither of those two were listed in there?

Alright. In that case, using a command line script is the best option (as suggested).