69 free 3D models you can use in a commercial game, with no account, no API key and no
attribution. 28 are rigged, animated low-poly characters; 41 are static nature props,
all glTF 2.0 .glb under CC0 1.0. Spin any of them in the browser below
before you download, or take the whole list as JSON from
/api/free.
Pack contents measured 19 August 2026 from the shipped files · pick a pack › · how the animation works › · there is more than this page ›
Downloads the model on screen · want all 8? point your AI agent at /api/free
Sign in to download · 41 nature props (trees, rocks, cliffs & more) in one zip
Downloads the model on screen · want all 10? point your AI agent at /api/free
Downloads the model on screen · want all 10? point your AI agent at /api/free
Four packs, 69 models. Everything below is CC0 and downloads without an account.
| Pack | What it is | Models | Rigged? | Animation | Each file | Download |
|---|---|---|---|---|---|---|
| Minion Pack | low-poly enemies | 8 | yes · 20 bones | idle · attack · dead | 148–185 KB | zip ↓ |
| Animal Pack | creatures & critters | 10 | yes · 16 bones | + walk | 56–75 KB | zip ↓ |
| Animal Pack Vol.2 | ten more creatures | 10 | yes · 16 bones | + walk | 101–116 KB | zip ↓ |
| Nature Kit | trees, rocks, cliffs | 41 | static props | — | 14–17 KB | zip ↓ |
Every model has one material and one draw call — that is what lets you put a whole wave on screen at once. Per-model triangle counts run 3–508. Measured 19 August 2026 from the shipped files.
Which one depends on a single thing: whether your assistant can open a URL itself. Ask it to fetch gobkit.com/free-models.txt and tell you how many URLs it lists. If it answers 69, use the first prompt. If it says it cannot access the link, use the second.
One line. gobkit.com/start is the whole contract — free packs, the community library and the generator, with the loading rules for each. The address never changes; what it says does.
Read https://gobkit.com/start and follow it. I want free CC0 3D monsters in my three.js game.
AI game platforms and plain chat windows usually cannot open a link — but the game they generate still can. Tell them the shape and let the game do the fetching:
Add CC0 monsters to my game — real files with verifiable licensing, not generated placeholders. At runtime fetch https://gobkit.com/api/urls?n=3 (a JSON array of .glb URLs) and load them into the scene.
/api/urls answers with a bare array of
strings and nothing else, which is why the prompt needs no field names. ?n= up to 20,
?kind=props for the static nature set, ?seed= to repeat a pick.
Two things here are load-bearing. The bracketed shape saves the assistant guessing — told it, they write one load path; left to guess, three defensive branches. And “at runtime” keeps the fetching inside the generated game: any wording that asks the assistant itself to open, read or follow a link fails outright on a platform that cannot browse, and it falls back to its own generator instead.
Nothing here mentions animation, so the whole timeline plays as one loop. If you want the actions
separately, use /api/pick — every entry
there carries its own frame ranges and licence URL — with the longer prompt in
gobkit.com/start.
State the licensing need rather than forbidding substitution: a bare "do NOT" reads as an attempt
to override the assistant's defaults and invites scrutiny.
CC0 1.0 Universal — public domain. Use them commercially, modify them, redistribute them, sell them. No watermark, no attribution required, no share-alike, nobody to ask.
Full legal text:
creativecommons.org/publicdomain/zero/1.0/legalcode.
Credit is welcome but optional: Characters by Gobkit — https://gobkit.com
These characters bake every action onto one 24 fps timeline
instead of shipping separate named clips. So gltf.animations[0] is the whole
performance, and a naive autoplay loops idle → attack → dead → walk
in sequence. Cut the action you want out of it:
| Action | Frames (24 fps) | Loop? | In which packs |
|---|---|---|---|
| idle | 0 – 29 | yes | all characters |
| attack | 30 – 59 | yes | all characters |
| dead | 60 – 89 | no — hold last frame | all characters |
| walk | 90 – 119 | yes | Animal Pack & Vol.2 only |
import * as THREE from 'three'; // one master timeline — subclip the action you want const idle = THREE.AnimationUtils.subclip(gltf.animations[0], 'idle', 0, 29, 24); mixer.clipAction(idle).play();
Plain binary glTF 2.0 — no Draco, no Meshopt, no decoder plugin to install.
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import { clone } from 'three/addons/utils/SkeletonUtils.js'; new GLTFLoader().load('https://gobkit.com/freebies/minion/minion-a01.glb', (gltf) => { for (let i = 0; i < 30; i++) { const unit = clone(gltf.scene); // SkeletonUtils.clone, NOT .clone() unit.position.set(i % 6 * 2, 0, Math.floor(i / 6) * 2); scene.add(unit); } });
A plain Object3D.clone() copies the mesh but keeps pointing at the original skeleton,
so every copy animates as one. This is the failure people report most.
# drop the .glb into res:// — Godot imports it natively var anim = $AnimationPlayer anim.play("clip") anim.seek(30.0 / 24.0, true) # jump to the first frame of 'attack'
Unity has no built-in glTF importer — use glTFast or UnityGLTF. Both read these files directly. Split the imported clip into idle / attack / dead / walk sub-clips at 24 fps using the frame ranges above.
Unreal 5 and Blender import .glb natively with no plugin.
<model-viewer> is fine for a quick preview but can only autoplay the whole
timeline — use a real engine if you need one action at a time.
The 69 models above are a fixed, curated set. Two more sources sit behind the same no-account, no-key terms.
69 models, hand-checked and stylistically consistent. Fixed set — what you see is what there is. One baked timeline you slice by frame range.
GET /api/free
Also CC0, and also downloadable as .glb —
not just previews. Keeps growing: anyone can upload, and a human reviews each one.
Different animation rule — those ship
separate named clips
(idle / move / attack) that you play by name, so do
not subclip them by frame range.
GET /api/community
Describe the creature you need and the Forge makes it. Reading the generator's whole vocabulary costs nothing and needs no key; generating models needs a plan.
What the forges do →GET /api/prompt
Gobkit is not the only source of free 3D game assets, and for a lot of projects it should not be the only one you use.
If itch.io is where you browse, the same four packs are mirrored there under gobkit.itch.io — identical files, identical CC0 terms.
No. No account, no key, no email address. Every .glb and every pack zip here is directly downloadable, and a single GET to https://gobkit.com/api/free returns the whole list as JSON with CORS open, so browser JavaScript can fetch it directly.
Yes. Every free pack here is CC0 1.0 Universal, a public domain dedication. You can copy, modify, redistribute and sell them, including inside a commercial game, without permission and without crediting anyone. There is no watermark and no attribution clause.
These characters bake every action onto one master timeline per .glb at 24 fps rather than shipping separate named clips. Subclip by frame range: idle 0–29, attack 30–59, dead 60–89, walk 90–119 (walk is in the two Animal packs only). In three.js: THREE.AnimationUtils.subclip(gltf.animations[0], 'idle', 0, 29, 24).
You cloned with Object3D.clone(), which copies the mesh but keeps pointing at the original skeleton. Use SkeletonUtils.clone(gltf.scene) from three/addons/utils/SkeletonUtils.js instead. This is the single most common failure people report with these files.
All of them. The files are plain binary glTF 2.0 with no Draco and no Meshopt compression, so no decoder plugin is needed. Godot 4, Unreal 5 and Blender import .glb natively; Unity needs a glTF importer such as glTFast or UnityGLTF.
Yes — the community library is user-uploaded creatures, also CC0 1.0 and also free to download, and it keeps growing because anyone can upload. One important difference: community models ship separate named clips (idle / move / attack) that you play by name, not the single baked timeline these packs use. Do not carry one rule across to the other.
Generate one. GET /api/prompt with no key at all returns the full vocabulary the generator understands, and POSTing a plain-language prompt to it returns a ready-to-send batch plan without charging anything. Actually generating models needs a plan.
It works — CORS is open and there is no rate limit — but for anything you ship, download the pack zip and bundle the files into your project. CC0 explicitly permits it, and your build then has no runtime dependency on gobkit.com.
New CC0 packs and open-source harness releases. Nothing else — no weekly filler.
Double opt-in — one confirmation email, then nothing until there's something new.