Skip to content
3DToolBench

Convert FBX to glTF

glTF is the open standard the web settled on, and the .gltf form of it is plain JSON you can open in a text editor. This tool converts an FBX into one, on your own computer.

Drag a 3D file here, or.

This page is set up for FBX files. Other formats we can read work here too.

The file is read on your own computer. It is never uploaded.

Add a file to switch this on.

Your file is read by your own browser and never sent to a server. There is no upload, no account and no copy of your model anywhere but on your computer.

glTF or GLB: which one you want

They hold the same thing. A .gltf is JSON and normally points at separate files for geometry and images; a .glb is the same data packed into one binary file. GLB is what you publish. glTF is what you use when you want to read the file, edit it by hand, check what a tool produced, or feed it to something that asks for JSON.

The file written here is self-contained: the geometry and any textures are embedded rather than left in a separate .bin and an image folder, so there is nothing to lose track of. It is larger than the equivalent GLB because binary data written into JSON has to be encoded as text.

From a scene tree to a glTF scene

FBX and glTF both describe a scene as a tree of nodes with transforms. The meshes are read out of the FBX with each node’s transform applied, so what you get is the assembled model rather than parts stacked at the origin.

Material colours come across, and so do textures packed inside the FBX, with the coordinates that place them on the model. Animation, skeletons, cameras and lights do not: this converter is built around geometry, and it says so rather than writing a file that looks complete and is not.

Units and orientation

glTF defines one unit as one metre. FBX is normally in centimetres. Leave the boxes at centimetres in, metres out, and the size will be right in any glTF viewer.

Both formats are Y-up, so no rotation is needed and none is applied. The up-axis boxes are there if your particular file disagrees.

Reading the JSON is the point, so here is what to look for

The reason to choose .gltf over .glb is that you can open it. A glTF file is JSON with a fixed set of top-level arrays, and knowing four of them tells you most of what you need: `meshes` is the geometry, `materials` the surfaces, `nodes` the scene tree with its transforms, and `accessors` the description of every block of numbers.

If a model looks wrong after conversion, this is where the answer is. A mesh with no `NORMAL` in its attributes will shade flat. A material with no `baseColorTexture` is why the model is a solid colour. A node with a `scale` of 0.01 is why everything is small. None of that is visible in a GLB without a tool; in a .gltf it is a text search.

The file written here embeds its buffers as data URIs, which means the numbers appear as a long base64 string rather than as a separate .bin. That is what makes it one self-contained file, and it is also why the file is larger than the GLB and why the geometry itself is not human-readable even though the structure around it is.

What survives, and what does not

Kept in the glTF file

  • Every mesh in the scene, in the place the scene put it
  • Object names
  • Material colours
  • Textures packed inside the FBX, embedded in the .gltf itself
  • The real size, converted into metres

Lost on the way

  • Animation, skeletons and skinning weights
  • Pictures the FBX only names, which are not inside the file
  • Cameras, lights and anything else that is not a mesh

How to convert FBX to glTF

  1. Drop the .fbx file in

    The scene tree is read and each node’s transform applied, so what you get is the assembled model.

  2. Set centimetres in, metres out

    FBX convention against glTF specification. Both formats are Y-up, so the rotation boxes can usually be left alone.

  3. Download the .gltf

    One self-contained JSON file with the geometry and any embedded textures written inside it as base64.

  4. Open it in a text editor if you want to check something

    Look at `meshes`, `materials`, `nodes` and `accessors`. Those four arrays explain almost every surprise a converted model can produce.

  5. Convert to GLB before publishing it

    The .gltf is about a third larger because base64 is text. For anything that has to be downloaded by a visitor, GLB is the file to serve.

FBX and glTF compared

FBX and glTF compared, row by row
PropertyFBX.fbxglTF.gltf
File contentsBinary in every version since 2009, with an older text form still accepted.JSON, normally pointing at separate .bin geometry and image files beside it.
GeometryTriangles and polygons, with full skinning, blend shapes and animation curves.Triangles, with skinning weights and animation channels alongside them.
UnitsRecorded in the file header, commonly centimetres.Metres, fixed by the specification. This is unusually helpful.
Colour and textureMaterials and textures, optionally embedded inside the file itself.Full physically based materials: base colour, metalness, roughness, normal maps.
Separate objectsA full scene graph with bones, cameras, lights and animation takes.A scene graph of named nodes, each with its own position and rotation.
Published byKaydara, 1996, bought by Autodesk in 2006. The format is closed.The Khronos Group, 2015. Version 2.0 arrived in 2017 and is what everything writes.
Written byMaya, 3ds Max, MotionBuilder, Unity and Unreal.Blender, Substance Painter, Sketchfab and every web 3D pipeline.

Questions

Do I get a .bin file or a texture folder too?
No. The geometry and any textures are written inside the .gltf itself, so it is one file. That makes it larger than a GLB but means nothing can go missing.
Why is the .gltf so much bigger than a .glb would be?
Because JSON is text. The same vertex positions written as digits take roughly a third more space than the raw bytes in a GLB. If size matters, convert to GLB instead.
Will it open in a three.js or model-viewer page?
Yes. It is standard glTF 2.0 with the geometry embedded, which every current glTF loader reads.
Does it handle a large FBX?
Yes. The work runs on a background thread, so the page stays responsive and the progress bar tracks real work rather than a timer.
What should I look at first if the model shades wrong?
The `meshes` array. If a primitive has no `NORMAL` among its attributes, the viewer is computing flat normals itself, which is why everything looks faceted.

Where to go next