287 free 3D models you can use in a commercial game, with no account, no API key and no
attribution. 246 are rigged, animated low-poly characters; 41 are static nature props,
all glTF 2.0 .glb under CC0 1.0. Try a Minion live, download any
pack as one zip, or take the whole list as JSON from
/api/free.
























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 287, 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 returns a plain JSON array of
.glb URLs. ?n= up to 20, ?kind=props for the static nature set,
?seed= to repeat a pick. /api/pick returns
the same models with their clip names and licence URL.
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 now ship named animation clips at 24 fps —
idle, attack, dead, walk. So don't play
gltf.animations[0] blindly — look the action up by name and play that one:
| Action | Clip name in the .glb | Loop? | In which packs |
|---|---|---|---|
| idle | idle | yes | all characters |
| attack | attack | yes | all characters |
| dead | dead | no — hold last frame | all characters |
| walk | walk | yes | Dino, Animal Pack Vol.1 & Vol.2 |
import * as THREE from 'three'; // named clips — play the one you want const idle = gltf.animations.find(a => a.name === 'idle'); 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("attack") # clips import already named: idle / attack / dead / walk
Unity has no built-in glTF importer — use glTFast or UnityGLTF. Both read these files directly, and the clips arrive already named idle / attack / dead / walk.
Unreal 5 and Blender import .glb natively with no plugin.
<model-viewer> is fine for a quick preview but plays one clip at a time via its animation-name attribute — use a real engine if you need one action at a time.
The 287 models above are a fixed, curated set. Two more sources sit behind the same no-account, no-key terms.
287 models, hand-checked and stylistically consistent. Fixed set — what you see is what there is. Named clips: idle, attack, dead, walk.
GET /api/free
Also CC0, and also downloadable as .glb —
not just previews. Keeps growing: anyone can upload, and a human reviews each one.
Same idea, different clip names — those also ship
separate named clips, but they are
idle / move / attack.
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 five 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 ship separate named animation clips inside each .glb at 24 fps: idle, attack, dead and walk (walk is in the Dino and Bird packs and the two Animal packs; Minion has idle, attack, dead). Play the one you want by name — no subclipping by frame range. In three.js: mixer.clipAction(gltf.animations.find(a => a.name === 'idle')).play().
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) — note move where these packs say walk, and no dead.
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.