Roblox asset workspace

The asset browser Roblox developers always wanted.

Find. Organize. Ship. Every rbxassetid in one place — bulk upload, model packages you can overwrite in place, InsertService scripts for instant Studio loading, and credential profiles for every group you ship to.

Local-first · Multi-profile Open Cloud · Upload → Workspace scripts

Upload queue
0/3 completeStart upload
Batch progress0%
QueuedImageicon_home.png

UI_IconHome

QueuedAudiosfx_click.ogg

SFX_ClickSoft

QueuedMeshchar_mesh.fbx

Char_HeroMesh

Credential profiles

One workspace. Every group and account.

Manage multiple Open Cloud keys without re-pasting. Switch between your personal account and studio groups from the header — uploads always target the active profile.

  • Separate keys per user or group
  • One-click profile switching in the header
  • Masked keys with show/hide per profile
  • Existing settings migrate automatically

Try it below

  • Open the header dropdown and pick QA staging group
  • Watch the upload target banner update to Group 9182734
  • Click profile cards on the left — same UI as Settings in the workspace
Studio Vault

Upload target: Assets publish to Group 2847291 using Main studio group

Main studio group

Real settings panel — your keys stay in the browser until upload.

  • Browser localStorage only — never written to disk or a server
  • Keys masked in lists; reveal only when you choose
  • Switch profiles from the header without opening Settings
  • Up to 25 profiles for users, groups, and environments

Show, don't tell

The same library you'll use in the workspace.

Search, filter, create folders, rename and reparent collections, select assets, and drag them onto folders — identical behavior to the Asset Library panel.

Try it

  • + New folder — create nested collections
  • Drag a row onto a folder — move assets without opening menus
  • Select a folder — rename, reparent, or delete from the inspector
  • ui or 9123847 — live search

Asset library

Full workspace preview — create folders, rename, reparent, delete, select assets, and drag them onto collections. Changes reset on refresh.

6 assets · 11 folders · search collapsed

NameTypeAsset ID
UI_IconInventoryImage
SFX_ClickSoftAudio
Char_HeroMeshMesh
Env_TreeClusterModel
UI_IconSettingsImage
Music_LobbyLoopAudio

Showing 6 of 6 in All assets

Model packages

Upload packages. Overwrite them in place.

Roblox models upload as packages — not raw mesh blobs. Studio Vault creates them through Open Cloud like any other asset, then lets you push a new FBX to the same asset ID when art changes.

Scripts, instances, and datastore references keep working because the rbxassetid never changes — only the package content does.

Supported flows

  • POST — upload new FBX, RBXM, GLTF, or GLB as a Model package
  • PATCH — replace an existing package with a new FBX (same asset ID)
  • Library panel — update workflow lives next to your saved assets in the workspace

1 · Upload creates a package

FBX, RBXM, GLTF, and GLB upload as Roblox Model assets — full packages, not loose instances.

DoneModelPackage

Env_TreeCluster

tree_cluster.rbxm

rbxassetid://6612049381

You get a new rbxassetid pointing at the published package — ready to reference in Studio or scripts.

2 · Update overwrites the package

Same panel as the workspace library. Target an existing model asset ID and send a new FBX via Open Cloud PATCH — the ID stays put.

ID unchanged · references safe

Iterating on a mesh? Push revisions without re-wiring rbxassetid:// across your place files.

Upload → Workspace

From Open Cloud to Studio in one paste.

Select packages or audio in your library — or fresh uploads in Results — and generate production-ready Luau. Models load via InsertService; sounds become Sound instances with configured SoundId values.

  • Packages — batch InsertService load with grid or line layout
  • Sounds — rbxassetid SoundId, volume, loop, and play-on-insert
  • Three formats — ServerScript, ModuleScript, or Command Bar one-liner
Try in workspace
Env_TreeClusterSFX_ClickSoftChar_HeroMesh
ScriptStudioVault_Load_batch_3.lua
Luau
1-- Studio Vault · Studio asset loader 2-- Generated 2026-06-30 · 2 packages · 1 sound 3-- Paste into ServerScriptService (Play Solo) or run from Studio Command Bar. 4 5local InsertService = game:GetService("InsertService") 6 7local PARENT = game:GetService("Workspace") 8local SOUND_VOLUME = 1 9local SOUND_LOOPED = false 10local SOUND_PLAY_ON_INSERT = false 11local SOUND_ROLLOFF_MAX = 10000 12 13local ASSETS = { 14 { id = 6612049381, name = "Env_TreeCluster", kind = "package" }, -- Model: Env_TreeCluster 15 { id = 9123847102, name = "SFX_ClickSoft", kind = "audio" }, -- Audio: SFX_ClickSoft 16 { id = 7729103845, name = "Char_HeroMesh", kind = "package" }, -- Mesh: Char_HeroMesh 17} 18 19local function insertSound(entry) 20 local sound = Instance.new("Sound") 21 sound.Name = entry.name 22 sound.SoundId = "rbxassetid://" .. entry.id 23 sound.Volume = SOUND_VOLUME 24 sound.Looped = SOUND_LOOPED 25 sound.RollOffMaxDistance = SOUND_ROLLOFF_MAX 26 sound.Parent = PARENT 27 if SOUND_PLAY_ON_INSERT then 28 sound:Play() 29 end 30 return sound 31end 32 33local function resolvePackage(loaded: Instance): Instance 34 if loaded:IsA("Model") or loaded:IsA("MeshPart") or loaded:IsA("Folder") then 35 return loaded 36 end 37 local model = loaded:FindFirstChildWhichIsA("Model", true) 38 return model or loaded 39end 40 41local function insertPackage(entry, index: number) 42 local ok, loaded = pcall(function() 43 return InsertService:LoadAsset(entry.id) 44 end) 45 if not ok or not loaded then 46 warn("[StudioVault] Failed to load", entry.name, entry.id) 47 return nil 48 end 49 local instance = resolvePackage(loaded) 50 instance.Name = entry.name 51 local offset = Vector3.new((index - 1) % 3 * 20, 0, math.floor((index - 1) / 3) * 20) 52local primary = instance:IsA("Model") and instance.PrimaryPart 53if primary then 54 local _, size = instance:GetBoundingBox() 55 instance:PivotTo(CFrame.new(offset + Vector3.new(0, size.Y / 2, 0))) 56else 57 instance:PivotTo(CFrame.new(offset)) 58end 59 instance.Parent = PARENT 60 return instance 61end 62 63local loadedCount = 0 64 65for index, entry in ipairs(ASSETS) do 66 if entry.kind == "audio" then 67 insertSound(entry) 68 loadedCount += 1 69 else 70 local instance = insertPackage(entry, index) 71 if instance then 72 loadedCount += 1 73 end 74 end 75end 76 77print("[StudioVault] Inserted", loadedCount, "asset(s) into", PARENT:GetFullName())

Live preview · edit options in the workspace library

Why developers switch

Spend time building. Not searching.

Creator Dashboard was built for publishing. Studio Vault was built for the daily work of managing hundreds of assets across experiences. Try credential profile switching above.

4 types

Images, audio, models, meshes — one queue

0 servers

Multi-profile credentials never leave your browser

∞ local

IndexedDB library with no upload limits

Results panel

Same copy-all format as the workspace.

NameStatus
UI_IconInventoryDone
SFX_ClickSoftDone
Char_HeroMeshDone

Display name formatter

Pick a filename — see the Roblox name update live.

Queue statuses

Every state you see during a real batch upload.

Queuedlobby_loop.mp3
Sendingicon_settings.png
64%
Robloxhero_body.mesh
38%
Doneclick_soft.ogg

rbxassetid://9123847102

Workflow

Every asset in one place.

Including model packages you can overwrite without new IDs. See the package update workflow.

Credential profiles for every group

Save separate Open Cloud keys for users and groups. Switch from the header before you upload — keys stay masked and browser-only.

Search everything instantly

Filter by type, folder, tag, or asset ID. No more digging through Creator Dashboard tabs.

Organize assets visually

Collections work like folders mixed with playlists. Group by project, style, or release.

Bulk upload with confidence

Queue images, audio, meshes, and model packages (FBX, RBXM, GLTF). Watch each file move from queued to done.

Metadata that actually helps

Tags, thumbnails, filenames, and rbxassetid URIs — stored locally, searchable forever.

Status you can trust

Per-item progress, retry logic, and clear error messages. You always know what happened.

Studio asset loader

Select uploaded packages and audio — export Luau with InsertService layout for models and configured Sound instances with rbxassetid SoundIds.

Update model packages in place

Models upload as Roblox packages. Push a new FBX to an existing asset ID via Open Cloud PATCH — no broken references in your game.

Stop digging through Creator Dashboard.

Your Open Cloud key. Your machine. Your asset library.

Open workspace

FAQ

Common questions about Studio Vault

Roblox Open Cloud uploads, local asset libraries, credential profiles, and developer workflows — answered.

What is Studio Vault?

Studio Vault is a local-first Roblox asset workspace for browsing, organizing, and bulk-uploading images, audio, models, and meshes through Open Cloud. It stores your asset library in the browser and keeps credentials on your machine.

How is Studio Vault different from Creator Dashboard?

Creator Dashboard is built for publishing individual assets. Studio Vault is built for day-to-day development: batch uploads, searchable local libraries, folders, tags, and fast access to rbxassetid values across projects.

How do I get started with Studio Vault?

Create an Open Cloud API key at create.roblox.com with the asset permission scope. Open Studio Vault, paste your API key, creator ID, and creator type in Credentials, add supported files to the upload queue, then click Start batch. Uploaded rbxassetid values appear in your local library automatically.

Does Studio Vault store my Roblox API key?

Your Open Cloud API keys are saved in browser localStorage only. You can save multiple credential profiles for different users or groups, switch between them from the workspace header, and keys are sent to Roblox during uploads through a local proxy — never stored on a server.

Can I use different API keys for different Roblox groups?

Yes. Studio Vault supports multiple credential profiles. Add a profile per user or group in Settings, paste the matching Open Cloud key and creator ID, then switch the active profile from the header before uploading. Existing single-key settings migrate automatically.

What Roblox asset types does Studio Vault support?

Studio Vault supports Image, Audio, Model, and Mesh assets via Roblox Open Cloud, including PNG, JPG, JPEG, WEBP, MP3, OGG, WAV, FLAC, FBX, GLTF, GLB, RBXM, RBXMX, and MESH files.

How do model uploads and package updates work?

FBX, RBXM, GLTF, and GLB files upload as Roblox Model assets through Open Cloud. After upload, you can replace a package's content by targeting its asset ID in the library and sending a new FBX file — the rbxassetid stays the same so scripts and instances keep working.

What is the InsertService script generator?

Studio Vault can generate Luau scripts that load your uploaded model packages into Roblox Studio Workspace via InsertService. Pick assets from your library, choose ServerScript, ModuleScript, or Command Bar output, and paste the script into Studio for instant loading during development.

Is Studio Vault free to use?

Yes. Studio Vault is free, open source, and runs in your browser. There are no subscriptions, usage fees, or paid tiers. You only need a Roblox account with Open Cloud API access.

Does Studio Vault send my data to third-party servers?

No telemetry, analytics, or cloud storage. Your asset library lives in browser IndexedDB. API keys stay in localStorage. The only outbound network traffic during uploads goes from your machine to Roblox's Open Cloud API through a local Next.js proxy required because Roblox blocks direct browser CORS requests.

Can I export and share my asset library?

Yes. Export your local library as JSON or CSV to back up metadata, move between machines, or share rbxassetid records with teammates. Import portable exports to merge libraries without re-uploading assets to Roblox.

Do I need to self-host Studio Vault?

You can use the hosted site or run it locally with npm install and npm run dev. Self-hosting keeps everything on your machine — useful for teams that want full control over the upload proxy and deployment.