glTF-Sample-Assets: the model collection that doubles as a conformance suite for the glTF format
An assortment of assets that demonstrate features and capabilities of the glTF format
At a glance
- What is it?
- The Khronos glTF-Sample-Assets repository is a curated set of glTF 2.0 models, each one illustrating a specific feature, and it is organised so you can pick a model that exercises exactly what your viewer, converter or exporter needs to handle. The catch is that it is a model collection, not a library, and every asset carries its own licence.
- Who is it for?
- glTF-Sample-Assets fits a developer writing a glTF importer, exporter, viewer or validator who needs a concrete model that exercises one specific part of the format, and it fits a technical artist who wants a reference render of what a transmission extension or a volume extension actually looks like.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One model per feature, which is the whole curation rule
The repository is described as a curated collection of glTF models that illustrate one or more features or capabilities of glTF. That single sentence is the design principle, and it is what separates this from a general 3D model dump.
The model shown at the top of the README is a good illustration. The Glass Hurricane Candle Holder uses the Transmission and Volume extensions, it is credited to Wayfair, LLC under CC BY 4.0 International, and the credit line names Eric Chadwick for everything. So each entry is not just a file, it is a specific format feature demonstrated by a model whose provenance is stated.
That matters for the people who use it. A viewer author who is about to implement the KHR_materials_transmission extension does not want a random model that happens to use it, they want a model that uses it and nothing else confusing, and they want to be able to point at a known good rendering of it. The collection is organised to serve exactly that need.
The repository sits under the KhronosGroup organisation and the footer carries the Khronos Group copyright with a CC-BY-4.0 International licence for the collection. The project description calls the primary language TypeScript, which is a little misleading for what is mostly binary assets, and is more likely a reflection of the tooling in the repository rather than of its content.
The top level listing tells you how the repository is organised: a Models/ directory holding the assets, a LICENSES/ directory, a util/ directory, a REUSE.toml file, a ReviewProcess.md, a CONTRIBUTING.md and a CODE_OF_CONDUCT.md, plus a .pre-commit-config.yaml. The presence of a review process document and a REUSE specification file is a signal that this is a curated collection with a governance model, not a dumping ground.
Eight generated lists, and the one that answers most questions
There is a website for browsing the sample assets at github.khronos.org/glTF-Assets/, and it allows searching for assets based on keywords and filtering the asset list based on tags. It offers an interactive preview of the sample assets, including basic inspection functionality and a summary of the description of the assets and their metadata.
But the repository itself is browsable too, because dedicated lists of assets are generated as markdown files. All lists include the model name, a screen shot, a link to display the model in the Sample Viewer, a short description, and the licence and credits for the model. The lists are:
The featured list holds models used in Khronos publicity, which are usually complex models with high visual quality. The complete list is every model. The testing list is for models intended to be used for testing of viewers, converters and other software systems. The core list is for models that only use glTF 2.0 core features and capabilities, with no extensions. The video tutorials list covers models used in any glTF tutorial video, and the written tutorials list covers models used in a written glTF tutorial. The PBR tests list holds models illustrating the effect of PBR properties. And the issues list holds models with one or more issues that need to be resolved.
For an engineer, the core list and the testing list are the two that matter most. The core list is the one that tells you whether your reader handles the base format at all, since nothing in it can be blamed on an extension. The testing list is the one you point your test suite at.
And the issues list is the one to read before you pick anything. The existence of a list of models that need to be resolved, maintained in the same repository, tells you that some of the samples are known to be imperfect. That is a feature of a curated collection rather than a defect, but it means you should check that list rather than discovering the problem when your viewer renders something odd.
Three file forms, and the format you pick decides what your code has to handle
Sample glTF 2.0 models are provided in one or more of three forms, and the choice is not cosmetic. It determines which of your loader's code paths get exercised.
The first is glTF, with the .gltf extension, with separate resources. The .bin files carry geometry, animation and skins, and the .jpg or .png files carry images. The supporting files are easily examined when separated like this, but must be kept together with the parent glTF file for the model to work.
The second is glTF Embedded, also a .gltf file, with the resources embedded as Data URIs. This form is intended for very small binary payloads, similar to the use of small data URIs in HTML and CSS, and the documentation says it should be avoided except as needed for a specific use case.
The third is binary glTF, the .glb extension, using the binary container format. These are easily shared, because the bundling of all the textures and mesh data lands in a single file.
The practical reading of that is a test matrix. If your importer only ever sees .glb, you have not tested the separate resource path, and that path is where the awkward cases live, because a .gltf file references external files by relative URI and the loader has to resolve them, and the documentation's warning that they must be kept together is a real failure mode when someone copies a .gltf without its .bin. If your importer only ever sees separate resources, you have not tested the binary chunk parser.
And if you handle the embedded form at all, you are handling a case the specification discourages, which means it is the case most likely to be broken in your code and the case most likely to appear in a malformed file someone sends you.
Per model licences, and why the REUSE file is there
The licence situation is the thing to get right before you ship anything, and the repository handles it in a layered way that is worth understanding.
A summary of the model licence is shown in each display, but the README states that you should see the README.md in each model's directory for detailed licence information. So there are two levels: the generated lists give you a quick answer, and the per directory README gives you the terms. The example at the top of the file shows the shape of that second level, a Creative Commons Attribution 4.0 International line with the copyright holder named.
The repository root carries a LICENSES/ directory and a REUSE.toml file. REUSE is a specification for software and data licensing that lets a project declare, per file, which licence applies, so that a repository with mixed licensing can still be machine readable. For a collection like this, where every model has its own terms, that machinery is what makes the collection auditable.
The practical rules that follow. An attribution licence requires you to credit the author, so if you take the Glass Hurricane Candle Holder into a product you owe a credit line. The Khronos footer covers the collection itself, and it says Licensed as CC-BY-4.0 International, so the repository's own material and the assets it hosts are not the same licensing question.
And the Models-issues list is the place where the collection is candid about assets that are not ready for use. The Obsolete Interface section of the README records what was removed during the transition from the older glTF-Sample-Models repository, including assets without licences or with licences that were not suitable for use in this collection, and it names the specific models removed for that reason.
If you need content with no attribution obligations, the README points elsewhere. Poly Haven is listed as offering CC0, public domain equivalent, HDRIs, PBR textures and glTF models, and Kenney is listed as providing themed low poly assets under CC0 licences.
Where to get assets that are not tests
The README is careful to point at other sources for real content, and the list is worth reading because it maps the different needs.
Sketchfab is listed twice with different angles. It offers auto conversion of all of its downloadable models, including PBR models, to glTF format, and separately it is listed as a source of thousands of Creative Commons models. Poly Haven offers CC0 HDRIs, PBR textures and glTF models.
For test material rather than production material, the Khronos glTF Asset Generator is described as offering an extensive suite of test models to exercise each part of the glTF specification, which is a different proposition from this repository. The Asset Generator produces synthetic models aimed at coverage, whereas the sample assets are real models that happen to demonstrate a feature.
Cesium is listed twice as well, with demo models and unit test models. Flightradar24 has a GitHub repository of aircraft. Kenney offers hundreds of themed low poly assets for nature, space, castle and furniture among others, including 30 or more pirate themed models, all under CC0. And the Smithsonian open access 3D models are listed.
The distinction to carry away is that this repository is the one to use when you need to know whether your software handles a specific part of the glTF format. It is not where you look for a hero asset, and the presence of a PBR list and an issues list reinforces that the collection is a conformance aid with a purpose, not a content library.
Contributions are handled through a contributing section in the repository, and questions or comments go to the issue tracker.
Editorial conclusion
glTF-Sample-Assets fits a developer writing a glTF importer, exporter, viewer or validator who needs a concrete model that exercises one specific part of the format, and it fits a technical artist who wants a reference render of what a transmission extension or a volume extension actually looks like. It does not fit a project that needs a production art asset library, because these are test models with licences that differ per asset, and it does not fit a team that expects a maintained pipeline of new content. Check three things before you use it. Check the licence of the specific model rather than the repository, because the repository footer says the collection is licensed CC-BY-4.0 International while each model directory has its own README with detailed licence information, and the Models-issues list exists precisely because some assets have problems. Check which list you need, since the Core Only list contains models that use no extensions at all and the PBR list exists to show the effect of specific properties. And check the file format you want, because the same model is offered as plain glTF with separate resources, as embedded glTF, and as a binary glb, and the choice determines whether your code path for resource loading is exercised. The last push was on 2026-10-02, the repository has no GitHub releases, and the collection is licensed CC-BY-4.0 International.
Frequently asked questions
What is the Khronos glTF-Sample-Assets repository for?
It is a curated collection of glTF models that illustrate one or more features or capabilities of glTF, so developers writing viewers, converters and other software can find a model that exercises a specific part of the format.
How do I browse the glTF sample assets?
A website at github.khronos.org/glTF-Assets/ allows searching by keyword and filtering by tag, with interactive preview and metadata summaries. The repository also carries generated markdown lists under Models/, including a complete list at Models/Models.md and a core-only list at Models/Models-core.md for models with no extensions.
What file formats do the glTF sample models come in?
Three forms: plain glTF with separate .bin and image resources that must be kept together with the parent file, glTF Embedded with resources as Data URIs which is intended for very small payloads and should otherwise be avoided, and binary glTF using the .glb container, which bundles textures and mesh data into one file.
What licence applies to the glTF sample assets?
The collection is licensed CC-BY-4.0 International by The Khronos Group, and each model carries its own licence, with the details in the README.md inside the model directory and the LICENSES directory plus REUSE.toml at the repository root. The Models-issues list names models that still need to be resolved.
Where can I get glTF models that are CC0 with no attribution requirement?
The README points to Poly Haven for CC0 public domain equivalent HDRIs, PBR textures and glTF models, and to Kenney for hundreds of themed low poly assets under CC0 licences.
What is the difference between the glTF sample assets and the glTF Asset Generator?
The Asset Generator is described as offering an extensive suite of test models to exercise each part of the glTF specification, producing synthetic coverage cases, while the sample assets are real models that illustrate a feature or capability.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/khronosgroup-gltf-sample-assets)Was this useful?