Guide
Why Windows shows blank icons for your 3D files
Open a folder of FBX, OBJ, USD and EXR files and Explorer gives you a grid of identical grey rectangles. This is not a bug and it is not fixable with a setting. Here is the actual mechanism, and four ways to get previews.
Explorer is not refusing to show your models. It genuinely does not know how. Understanding why takes about two minutes and makes every workaround below make sense.
What a thumbnail handler actually is
When Explorer draws a folder in a view larger than "Details", it asks Windows a question for every file: does anyone know how to turn this into a picture?
The answer lives in the registry. For each file extension there may be a registered
shell thumbnail handler — a small COM component implementing an interface called
IThumbnailProvider. Its entire job is to accept a file and hand back a bitmap. Explorer calls
it, caches the result in a per-user thumbnail cache, and draws it.
photo.jpg → handler registered → renders preview
video.mp4 → handler registered → renders frame
rock.fbx → no handler → generic icon
sky.exr → no handler → generic icon
set.usd → no handler → generic icon Windows ships handlers for the formats a general computer user encounters — photos, video, PDF, Office documents. Nobody ships one for FBX, because writing it means embedding a mesh importer and a renderer into a component that Explorer will call hundreds of times a second while someone scrolls. It is a genuinely hard thing to do well, which is why almost nobody does it.
Which formats are affected
| Extension | Contains | Preview in Explorer | Why |
|---|---|---|---|
| .fbx | Mesh, rig, animation | No | The interchange default. Binary and ASCII variants. |
| .obj | Mesh + .mtl sidecar | No | Materials live in a separate file Explorer cannot associate. |
| .gltf / .glb | Mesh, PBR material, scene | Sometimes | GLB occasionally previews if 3D Viewer registered a handler. |
| .usd / .usdz / .usdc | Scene graph, layers | No | A USD file may reference others; there is no single image to show. |
| .abc | Alembic cache | No | Often animation, so a still preview is a judgement call. |
| .blend | Blender scene | No | Contains its own render preview, which Explorer cannot read. |
| .exr | HDR image | No | Needs a tone-mapping decision to become an 8-bit thumbnail. |
| .hdr | HDR panorama | No | Same problem, plus a very wide aspect ratio. |
| .tif / .tiff | Image, often 16-bit | Partly | Previews for common variants; 16-bit and layered files often fail. |
| .vdb | Volume grid | No | Requires a volumetric render to show anything meaningful. |
Two patterns are worth noticing. First, the formats that fail are the ones whose contents are least
guessable from a filename — you can infer a lot from hero_shot_final.jpg and nothing at all
from rock_03.fbx. Second, several of these formats are not one image by nature. A USD file
can be a layer that references six others; an Alembic cache is a sequence. Deciding what a "preview"
even means requires an opinion, and an operating system will not have one.
Explorer stores previews in a per-user thumbnail cache. When previews disappear after an update or a disk cleanup, that cache has been cleared — the handler still exists and previews come back as you browse. If you have ever "fixed" missing thumbnails by clearing the cache and it worked, this is what happened. It cannot help with a format that has no handler at all, because there is nothing to re-populate the cache with.
Four ways to get previews
1. Install a third-party shell extension
There are small utilities that register thumbnail handlers for specific formats — STL and 3MF for 3D-printing workflows are well served, and a few cover OBJ. This is the most "native" answer: previews appear in Explorer itself, in every file dialogue, everywhere.
The catch is coverage and stability. You will not find one utility covering FBX, OBJ, GLB, USD, EXR and VDB, so you end up with several, each registering into the shell. Shell extensions run inside Explorer, so a badly behaved one degrades the whole desktop. Worth it for one or two critical formats; unpleasant as a general strategy.
2. Render previews yourself with a script
Blender can import most of what you own and render an image of it, and it can be driven headlessly from the command line. A script that walks a folder, imports each mesh, frames it and saves a PNG is perhaps fifty lines, and it is free.
blender --background --python thumb.py -- rock_03.fbx
→ import, frame to bounding box, render 256×256
→ previews/rock_03.png This is a genuinely good solution and more people should try it. The honest limitation is that you now have a folder of PNGs sitting beside a folder of models, and no way to browse them together. Solving that is what the remaining two options are really about.
3. Use a general image manager on rendered previews
Combine option two with Eagle, Adobe Bridge or similar: render previews, import the previews, tag them. You get search and organisation for free. What you lose is the connection to the source file — the manager holds a picture of your rock, not your rock, so double-clicking gives you a PNG rather than something you can use.
4. Use an indexer that thumbnails and keeps the link
A dedicated asset browser does options two and three in one pass and keeps the association: it walks your folders, renders a preview for each asset, stores that preview in its own cache, and keeps a pointer back to the file on disk. You browse pictures and act on assets.
This is also the only approach that can group things. A texture set of eight maps is one tile with one preview rather than eight near-identical thumbnails, which is the difference between a library you can scan and a wall of noise.
What good thumbnail generation has to handle
If you are evaluating options — or writing your own — these are the cases that separate something usable from something that works on the demo folder:
- Framing. A preview has to fit the object's bounding box, or every thumbnail is a speck in the middle of a grey square. Objects modelled far from the origin are the classic failure.
- Neutral lighting. Enough light to read the silhouette and the surface, without baking a lighting opinion into a preview you will look at for years.
- Tone mapping for HDR. EXR and HDR data has to be mapped into display range. A naive clamp turns every sunny HDRI into a white rectangle.
- Aspect ratio for panoramas. An HDRI is 2:1. Squashed into a square tile it becomes unreadable; letterboxed it stays recognisable.
- Texture-set awareness. The base colour map is the meaningful preview for a material. A thumbnail of the normal map is a picture of lavender.
- Incremental work. Re-rendering everything on every launch is unusable at library scale. Only new and changed files should be processed.
- Failure without drama. Some files are corrupt, enormous or exotic. The generator should skip them and carry on rather than stalling the whole pass.
Doing it with Kiosk
This is the problem Kiosk was originally built to solve, so here is what it does concretely. You add a folder as a source; it walks the folder, renders a preview for every asset it recognises, and stores those previews in a local database beside your library. Your files are not touched — not copied, not renamed, not moved.
Meshes are framed to their bounding box and lit neutrally. EXR and HDR images are tone-mapped rather than clamped, and panoramas keep their aspect. Texture sets are detected from their suffixes and collapse into a single tile previewed by the base colour map. Right-clicking a 3D file opens it in the built-in viewer if you want to turn it around before committing.
The part that matters more than the previews themselves: because the index holds a pointer to the real file, a preview is something you can act on. With a live session open in Blender, Cinema 4D, Maya, Houdini or Unreal, clicking a thumbnail puts the asset into your scene — and if it is a texture set, it arrives as a built material rather than loose files.
Point it at one folder and let the first pass run. The moment a library you have owned for years becomes visible is usually the moment it starts getting used again.
Download the free editionQuestions
Why does Windows not show thumbnails for FBX or OBJ files?
Because Windows has no idea what is inside them. Explorer only draws a preview when a COM component called a shell thumbnail handler is registered for that file extension. Windows ships handlers for JPEG, PNG, MP4 and a handful of others; nothing ships for FBX, OBJ, GLB, USD or EXR. Without a handler, Explorer falls back to the generic icon associated with whatever application opens the file.
Does the 3D Viewer app add thumbnails?
Only for a narrow set of formats, and it has been progressively removed from Windows installations. Historically 3D Viewer registered handlers for a few formats such as GLB, 3MF and FBX, which is why some machines show previews for those and others do not. It was never a complete answer for a 3D artist because it ignored OBJ variants, USD and the EXR and 16-bit formats that make up most of a texture library.
Why do EXR files show as blank too?
Same reason, different cause. EXR is a high-dynamic-range format with arbitrary channel layouts and no single correct way to map it into an 8-bit thumbnail — a tone-mapping decision has to be made. Windows will not make that decision, so it does not try. This matters more than it sounds because HDRIs and displacement maps are almost always EXR, which means the two asset types hardest to identify by filename are the two you cannot see.
Will generating thumbnails modify my files?
It should not, and any tool that does is doing something wrong. Thumbnail generation reads a file, renders a preview and writes that preview into a separate cache — a database or a sidecar folder, never the asset itself. Your FBX keeps the same bytes and the same modified date.
How long does it take to thumbnail a large library?
It depends far more on what is in the library than on how many files there are. Flat images are near-instant. Meshes need loading and rendering, so a folder of heavy FBX files is slower than the same count of JPGs. A rough expectation for a first pass over a mixed library of tens of thousands of files is minutes rather than hours, and it only happens once — after that only new and changed files are processed.
Can I get previews without installing anything?
Partly. Blender can render preview images for anything it can import, and a short Python script that batch-renders a folder is a genuinely good free solution if you are comfortable writing one. What you cannot easily do for free is get those previews back into a browsable grid with search, which is the part that turns previews into a usable library.
Related: how to build an asset library that lasts and the PBR naming cheat sheet.