
Free · No sign-up · Nothing uploaded
About this viewer
3D Model Viewer
The Character XYZ 3D Viewer is a free online tool for opening and inspecting 3D models in a web browser. It reads GLB, glTF, FBX, OBJ, PLY, STL and VRM files and reports their meshes, materials, skeletons, morph targets and animation clips. Files are parsed on your own device and are never uploaded.
- Nothing uploaded
- No account
- Runs in your browser
Formats
Formats it opens
Drag in .glb, .gltf, .fbx, .obj, .ply, .stl or .vrm — or the whole folder a .gltf lives in.
GLB — Draco, KTX2 and meshopt decoding
glTF — the .gltf JSON form with its external buffers and textures
FBX — skeletons, bone counts and animation takes
OBJ — groups, and the materials from the .mtl beside it
PLY — scan meshes, with vertex colours when the file carries them
STL — triangle count and real-world dimensions, for print checks
VRM — VRM 1.0 avatars — the humanoid bone map, expressions, spring-bone chains and first-person flags
- .usdzcoming soon
USDZ — Apple AR geometry and PBR textures, without needing a Mac
Reports
What you can inspect
Most online viewers render a model and stop. This one reports what is actually inside the file, which is what you need when an export goes wrong.
- Khronos validation report
- Runs the official glTF validator over your file and lists every error, warning and hint with its severity and the node it came from.
- Skeleton and rig
- Every bone by name with the count, plus an overlay drawn over the model, so you can tell a 9-joint production rig from a 92-bone Rigify export without opening Blender.
- Morph targets
- Every morph target by name, grouped per mesh, each with a live weight slider so you can drive a shape and see it move.
- ARKit-52 blendshape check
- Which of the 52 standard ARKit blendshapes your model has and which are missing, broken down by facial area — the answer to why a face will not drive from a phone capture. It reads the common naming conventions, and names the facial set your file is using when it turns out not to be ARKit's.
- Textures and VRAM budget
- Each texture with the slot it fills and its resolution, plus an estimated GPU memory total, so you can see which map is blowing the budget.
- Animation clips
- Every clip in the file with its real duration, playable with speed and looping — including takes that ship as separate GLBs. Clip changes use inertial blending, so a limb's motion carries through the cut instead of stalling at it.
- Mesh statistics
- Vertex and triangle counts, material and texture counts, bone and morph-target counts, and the model's bounding dimensions.
At a glance
Use it when
| It reports | Which tells you |
|---|---|
| Khronos validation report | Whether the file breaks the glTF specification, and exactly where. |
| Skeleton and rig | Whether you were sent a production skeleton or a control rig that came along by mistake. |
| Morph targets | Which shapes the face actually has, and whether one is present but does nothing. |
| ARKit-52 blendshape check | Why a face will not drive from a phone capture. |
| Textures and VRAM budget | Which map is blowing the memory budget. |
| Animation clips | Whether the exporter dropped the animation, or the player is failing to run it. |
| Mesh statistics | Whether the asset is the size the rest of the pipeline expects. |
Diagnose
Checks for a specific problem
Three pages for the questions people arrive with rather than the file they are holding — each one opens this same viewer and explains what it will tell you.
- Rig CheckerCheck a character rig in your browser. List every bone by name with the total count, draw the skeleton over the model, and play each animation clip — for GLB, glTF and FBX. No install, no account, and the file is never uploaded.
- Blendshape CheckerCheck a face against the 52 ARKit blendshapes in your browser. See how many are present, which are missing by name, and a breakdown per facial area. Reads the usual naming conventions. Free, no install, nothing uploaded.
- glTF ValidatorRun the official Khronos glTF Validator on a .gltf or .glb in your browser. Every error, warning, info and hint with its severity and JSON pointer, plus the generator that wrote the file. Nothing is uploaded.
Getting started
How to use it
- 1Open the viewerGo to character.xyz/3d-viewer. There is nothing to install and no account to create.
- 2Drop in your modelDrag .glb, .gltf, .fbx, .obj, .ply, .stl or .vrm onto the page, or use the file picker. The file is read on your own device — for a .gltf, drop its folder so the buffers and textures come with it.
- 3Inspect itOpen the inspector panel to read mesh statistics, materials, skeleton, morph targets, animation clips and texture budgets.
- 4Fix what it findsRun the validation report to see every issue against the glTF specification, then re-export and check again.
Questions
Frequently asked questions
How do I view a GLB file online?
Open character.xyz/3d-viewer and drag your .glb file onto the page. It opens in the browser straight away — there is no upload, no plugin and no account. You can then orbit the model, change the lighting and open the inspector to read its meshes, materials, skeleton and animations.
Is my 3D model uploaded to a server?
No. The file is read and rendered entirely by your own browser using WebGL and WebGPU. Nothing is transmitted, stored or logged, which means you can safely inspect unreleased or client-confidential assets.
What is the difference between GLB and glTF?
They are the same format in two containers. A .gltf file is JSON that references its geometry buffers and textures as separate files alongside it. A .glb file packs that same JSON, the buffers and the textures into one binary file, which is why GLB is what most tools export for delivery. This viewer opens both.
How do I check if my GLB has a skeleton or rig?
Drop the file in and open the skeleton tab in the inspector. It lists the bone hierarchy and the total bone count, and shows which meshes are skinned to it. That is usually enough to tell a clean production rig from an export that brought a control rig or a whole Rigify hierarchy along with it.
How do I check if a model has ARKit blendshapes?
Open the ARKit-52 tab. It reports how many of the 52 standard ARKit blendshapes your file has, broken down by facial area, and lists every one that is missing by name. It reads the usual naming conventions, so a rig that spells them eyeBlink_L or Head.eyeBlinkLeft is still recognised — and when a file uses a different facial set altogether, such as VRoid's, it says which one rather than reporting a bare zero. A face that will not drive from a phone capture is almost always missing shapes rather than wired up wrongly.
Why is my GLB animation not playing?
The three usual causes are that the clip was never exported, that it targets bones that are not in the file, or that the exporter wrote it against a different skeleton than the mesh is skinned to. The inspector lists every animation clip with its real duration, so an empty list tells you the export dropped it rather than the player failing to run it.
Why are my textures missing after a Blender export?
Usually the images were left as external file references rather than packed, or the material used a node the glTF exporter cannot translate. The textures tab lists every image the file actually contains with its resolution and format, so you can tell an unpacked texture from an unsupported material graph.
How many bones can a glTF file have?
The glTF 2.0 specification sets no limit at all on the number of joints in a skin — the ceiling you actually hit belongs to whatever engine plays the file. Older renderers pass bone matrices as shader uniforms and cap out somewhere around 64 to 256 per skin, while ones that use a bone texture handle thousands. Separately, each vertex is bound to four joints per JOINTS_0 set, so a mesh needing more influences per vertex needs a second set. The skeleton tab reports the real count in your file, which is the number to compare against your target engine's documented limit.
Can I change the lighting?
Yes. There are six lighting presets — Realistic full image-based lighting, Studio, Detail, two sculpting matcaps and Flat base-colour-only — and the viewer opens on Realistic so a textured asset looks the way it will in an engine. On a browser with WebGPU you can also switch on screen-space global illumination for softer indirect bounce light. Your choice is remembered the next time you open the page.
Can I export a screenshot of my model?
Yes. Save a PNG at one, two or four times the on-screen size, with the option to leave the background out so the image carries a real alpha channel and drops straight into a comp. You can also record a six-second turntable as a WebM video. Both are produced in your browser and saved to your device — nothing is rendered on a server.
Is the 3D viewer free?
Yes, completely, with no account and no limits on file size beyond what your own device can hold in memory.
Drop a 3D model here
or choose a file — nothing is uploaded
Your file never leaves your browser. There is no upload, no account and no server-side processing.