Recovering Old User Injected Meshes (2007-2010 era)

Recently I had success salvaging some old meshes, documented in these threads:

The process was a bit obscure so I’ll detail exactly how I did it in case anyone wants to do the same for any other meshes they wish to recover. This applies to those old meshes from 2007-2010 era that were user injected and only visible after visiting a place in Play Solo with those meshes inside them.

Step 1: Get a model/ place file straight from the site

Roblox Studio will NUKE the code related to your mesh data as soon as you load it.
We can look into the code without opening studio in the next step, but it is imperative you download the file straight from the site.

I use this plugin to be able to download free assets as a file:

BTR Plugin

BTRoblox - Making Roblox Better - Chrome Web Store

Step 2: Open the downloaded file with Notepad.

You will get a lot of text that’s mostly readable.

Scroll down until you start seeing something like this- this is the mesh data encoded in base64.

Copy all of the encoded data. (leave out the “name=“MeshId”>” stuff and anything in the xml format afterwards)

Step 3: Decode everything on this website.

Once you have the stuff copied, go to this website:

(or any website that will decode base64 for you)

PASTE all of it in the top box, set the source character set to ASCII, and then click DECODE.

THIS IS IT. This is the mesh data in it’s “readable” form. Press CTR + A to select it all in that box, and then press CTR + C to copy it.

Step 4: Then go to here to paste it.

Yes, this is a mandatory step.

After you create your paste, click here:

You’ll get the raw text of your paste.


You will need this URL for later.

Step 5: Open a place in studio that is tied to a real game.

Can be an empty baseplate- you just need to be able to access the “Game Settings.” You can’t do this with a place file not linked to a real published place/ game.

We want to allow HTTP Requests. Go to Security and enable it.

Step 6: Put this script into your game and modify the url value.

mesh.lua (4.1 KB)

You can open the file in notepad and copypaste the code into a script in workspace- just as long as the script CAN run in your game you’re dandy.

Replace the meshDataUrl value.


Remember the pastebin url we have? Copy and paste that into here.


Step 7: Change output settings on Studio.

File → Settings → Studio → Scroll down to “Output”

Change maximum Output Lines to something very high

Step 8: Run the game and copy the contents of Output.


Past it into a notepad file and delete everything before “g Mesh” (keep that line) and any junk the output may have printed after the mesh data.

Step 9: “Save as” your notepad file with the obj data as a .obj file.

Append .obj at the end of your file name, and Save as type: All Files.

Step 10: Open blender. Insert your obj.

(delete the cube you start with)
Go to file → import → wavefront (.obj)
Find your file and import OBJ.

There it is!

And from there, just put a MeshPart into your game, click the mesh id folder pop up, select your obj file, and there you go. (You might need to export the file once more inside blender as an obj)


For step 1, it may be good to note that there is a way to download assets without installing BTRoblox, using Roblox’s API. Tested it on the same model dragon you’ve shown here, and that big wall of encoded data seems to match your images.


This is cool! I might try this out for myself sometime!

1 Like

Hi, since there was an update to output - I made it print just one string.
Should be easier to copy!

NEW_LUA.lua (4.4 KB)

Also use to download assets.


Long time no see!

Roblox meshes (the ones before injection) can be downloaded as assets too!
You don’t have to do Base64 stuff.

Not sure if I can recover mesh as efficiently or if it has way too much data.

1 Like