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.

what Explorer asks, per file
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.

The cache, and why previews sometimes vanish

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.

the shape of it
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:

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 edition

windows 10 / 11 · free edition · how sources work

Questions

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.