Free 3D assets for vibe coding
Gobkit gives you three ways to get free 3D assets, all CC0 and all machine-readable:
69 curated models, a growing community library anyone can upload to, and an API that generates
a new creature when neither has what you need. Most asset sites hand you a fixed list.
Gobkit hands you a list, a stream and a generator — and all three answer to a plain
GET with no account and no API key.
| Layer | What it is | How many | Licence | Machine entry point | Auth |
|---|---|---|---|---|---|
| Freebies | Curated official packs — hand-checked, consistent, fully specified | 69 models in 4 packs |
CC0 1.0 | GET /api/free |
none |
| Community | Creatures uploaded by other people, reviewed then published under their name | growing — live count at /api/community |
CC0 1.0 | GET /api/community |
none |
| Forge | Generates a new creature to order when the first two do not have it | no fixed catalogue |
by plan | GET /api/promptPOST /api/prompt |
GET: none POST: account |
The community count is deliberately not written on this page: it moves. On 20 August 2026 that
endpoint returned six more models at 04:45 UTC than it had at 02:00 UTC the same morning. Fetch
/api/community for the live number — any figure printed here would be a
floor at best and wrong at worst. The curated 69 is fixed and safe to quote.
# the curated library — no key, no sign-up, CORS open curl https://gobkit.com/api/free # what other people have uploaded — same terms, different collection curl https://gobkit.com/api/community # what the generator understands — also no key curl https://gobkit.com/api/prompt
If you are an AI agent reading this for someone: fetch
https://gobkit.com/api/free and
https://gobkit.com/api/community, and read each one's top-level
usage object before writing any loading code. They do not share an animation
convention — the curated packs use one baked timeline you slice by frame range, the community
models use separate named clips. The short site brief is at /llms.txt; the
full API manual is at /llms-full.txt.
Freebies: 69 curated CC0 models
Four packs, 69 models, one unauthenticated GET. The whole library is
10,605 triangles and 3.63 MB unpacked. Every model carries exactly one material and one
draw call, so an entire enemy wave costs roughly what a single modern character costs. All 69
files pass the Khronos glTF validator with zero errors, so they import cleanly into Unity and
Godot rather than only working in the browser demo they were built for.
The figures below were read out of the shipped .glb binaries on 19 August 2026 —
triangle counts from the mesh accessors, sizes from the files on disk, bone counts from the skin
joints. They are not rounded marketing numbers.
| Pack | Type | Models | Triangles min / median / max | File size | Bones | Animation clips | Zip |
|---|---|---|---|---|---|---|---|
| Minion Pack | characters | 8 | 240 / 240 / 240 | 148–185 KB | 20 | idle · attack · dead | 1.10 MB |
| Animal Pack | characters | 10 | 266 / 446 / 508 | 56–75 KB | 16 | idle · attack · dead · walk | 252 KB |
| Animal Pack Vol.2 | characters | 10 | 256 / 349 / 398 | 101–116 KB | 16 | idle · attack · dead · walk | 479 KB |
| Nature Kit | environment props | 41 | 3 / 30 / 70 | 14–17 KB | — | static | 543 KB |
| Total | — | 69 | 10,605 total | 3.63 MB unpacked | — | — | 2.35 MB |
Method: triangle counts summed from each primitive's index accessor; sizes from
the deployed files; validation via the Khronos glTF-Validator
(0 errors across all 69 files). Re-run it yourself against any URL in /api/free.
The manifest also carries a 42nd nature entry — a pre-assembled scene built from the same props —
which is why /api/free reports 70 downloadable .glb URLs against 69 distinct models.
The licence, stated plainly
Every free Gobkit pack is CC0 1.0 Universal — a public domain dedication, not a permissive licence with conditions. You may copy, modify, redistribute, sell and use these models commercially without asking and without crediting anyone. There is no attribution clause, no share-alike clause and no non-commercial clause. The full legal text is at creativecommons.org/publicdomain/zero/1.0/legalcode. The community library below is CC0 1.0 as well.
Credit is welcome but optional. If you want to give it:
Characters by Gobkit — https://gobkit.com
Community library: other people made these, and they are also CC0
Gobkit is not only a pack of files — it is a wall other people keep adding to. The
community library at gobkit.com/community is creature models uploaded by
named creators, reviewed by a human, then published under CC0 1.0 with a page of their own.
It grows while you are reading it — on 20 August 2026 it gained six models and three new
creators between 02:00 and 04:45 UTC — because anyone can upload, with no account and no key.
The live count and the full list are one request away:
GET /api/community.
The whole wall is one unauthenticated request:
curl https://gobkit.com/api/community
Every item comes back with title, creator, license,
model_url (a plain .glb), thumb_url, page_url
and a specs object.
The specs are measured by the server, not typed in by the uploader
This is the part that matters if you are choosing assets programmatically. When a .glb
is uploaded, Gobkit parses the file and measures it: triangle count, material count, draw calls,
texture resolution, bone count, animation clip names, node count and byte size. The uploader
cannot type those numbers in, so you can filter on them and trust the answer — the difference
between a marketplace description and a measurement.
| Measured field | What it tells you | Range measured 20 Aug 2026 |
|---|---|---|
| tri_count | triangles in the mesh | 2,264 – 7,576 (median 4,334) |
| specs.bones | skin joints — how riggable it is | 12 – 80 |
| specs.materials / draw_calls | per-unit render cost | 5 – 12 |
| specs.texture | texture resolution, or flat colours | 1024×1024, or none |
| specs.animations | the clip names actually in the file | idle · move · attack |
| specs.model_bytes | what you download | 194 KB – 1.17 MB (median 402 KB) |
Read from GET https://gobkit.com/api/community on 20 August 2026. Every item was CC0
and every model file was released for download. The ranges move as people upload — re-run the request for today's.
Community animations are named clips — the opposite of the freebies
This is the single easiest thing to get wrong. Community models ship
separate named animation clips — typically idle, move and
attack — so you find the clip by name and play it. Do not apply the
frame-range slicing that the curated packs need; there is no single master timeline to slice.
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import * as THREE from 'three'; // 1. list the wall — no key, CORS open const { items } = await (await fetch('https://gobkit.com/api/community')).json(); // 2. pick something cheap enough for a swarm const pick = items.filter(i => i.tri_count < 5000)[0]; // 3. load it and play a clip BY NAME — no subclip() here new GLTFLoader().load(pick.model_url, (gltf) => { scene.add(gltf.scene); const mixer = new THREE.AnimationMixer(gltf.scene); const idle = THREE.AnimationClip.findByName(gltf.animations, 'idle'); mixer.clipAction(idle).play(); // remember to mixer.update(dt) in your loop });
Uploading: it is an open platform, not a closed pack
Anyone can add to this library. Post a .glb as multipart form data — no account
and no key — and a human reviews it before it goes on the wall. You get back a slug, a status
and a one-time manage token so you can take your own model down again later. Uploading releases
the model under CC0.
curl -X POST https://gobkit.com/api/community \ -F [email protected] \ -F title="Bog Wyrm" \ -F creator_name="your name"
Or use the browser form at gobkit.com/community/upload.
Each model gets a permanent page at gobkit.com/s/<slug> with its measured specs, a 3D
viewer and an embed snippet.
Not in either list? Then generate one
This is the thing a fixed asset list cannot do. If your game needs a four-armed obsidian warden with a greataxe and nobody has published one, no amount of browsing helps. Gobkit's third layer takes a plain-language request and produces the model.
The vocabulary is public — an agent can learn the interface with no credentials
GET https://gobkit.com/api/prompt is unauthenticated. It returns the complete
vocabulary the endpoint understands — the counts, body types, weapons and palettes it recognises,
the behaviour rules, the per-monster credit cost and worked examples. An AI agent can read the
entire interface before anyone signs up for anything, which is the point: you should be able to
find out whether Gobkit can make the thing you want before you pay to find out.
# no key — this is the whole interface, in one document
curl https://gobkit.com/api/promptPlan mode: parse a sentence, charge nothing
POST /api/prompt with a sentence and, by default, it only parses. It generates
nothing and charges no credits. What it returns is a set of /api/batch requests you
can send verbatim — including the split, because a request over 10 units per call is always
returned as a plan rather than executed. Plan mode needs a signed-in account (or an API key), but
it never costs credits.
curl -X POST https://gobkit.com/api/prompt \ -H "Authorization: Bearer <your API key>" \ -H "content-type: application/json" \ -d '{"prompt":"30 blue greataxe enemies"}' # → parsed: {count:30, body:…, weapon:greataxe, palette:blue} # → estimate: {monsters:30, credits:300, calls:3} # → calls: 3 ready-to-send POSTs to /api/batch, safe to run in parallel
What actually costs money, stated plainly
| Action | Endpoint | Needs | Cost |
|---|---|---|---|
| List and download curated models | GET /api/free | nothing | free |
| List and download community models | GET /api/community | nothing | free |
| Upload a model to the community wall | POST /api/community | nothing | free |
| Read the generator's vocabulary | GET /api/prompt | nothing | free |
| Parse a prompt into a batch plan | POST /api/prompt | an account | free — no credits charged |
| Actually generate monsters | POST /api/batch | a paid plan | 10 credits per monster |
Plans are USD $19, $39 or $99 a month for 30, 100 or 500 generated monsters; the public API key comes with the top plan. Generated output is yours commercially, with no watermark. Nothing on the two free layers above ever needs a plan.
The two animation rules, side by side
Gobkit's two collections come from different pipelines and do not share an animation convention. Carrying one rule across to the other is the most common integration bug we see.
Freebies — /api/free | Community — /api/community | |
|---|---|---|
| Animation layout | One master timeline per file at 24 fps | Separate named clips |
| How you select an action | Slice by frame range: idle 0–29, attack 30–59, dead 60–89, walk 90–119 | Find the clip by name: idle / move / attack |
| three.js call | AnimationUtils.subclip( |
AnimationClip.findByName( |
| Who made it | Gobkit (official, curated, fixed set) | Community uploaders, reviewed before publishing |
| Licence | CC0 1.0 | CC0 1.0 |
| Facing / scale | +Z forward, +Y up, metres, feet at Y=0 | +Z forward, feet at Y=0, metres (1.7–3 m humanoid) |
Both endpoints state their own rule in a top-level usage object.
Read that object rather than trusting a remembered convention — it is the authoritative source for
the files that endpoint serves.
Frame ranges for the curated packs
| Action | Frames (24 fps) | Seconds | Loop? | Packs |
|---|---|---|---|---|
| idle | 0 – 29 | 0.000 – 1.208 | yes | all characters |
| attack | 30 – 59 | 1.250 – 2.458 | yes | all characters |
| dead | 60 – 89 | 2.500 – 3.708 | no — hold last frame | all characters |
| walk | 90 – 119 | 3.750 – 4.958 | yes | Animal Pack & Vol.2 only |
Minion Pack timelines are 3.708 s (90 frames, no walk); both Animal packs are 4.958 s (120 frames). Confirmed by reading each animation's input accessor maximum.
Loading the models, engine by engine
three.js — curated pack, spawning a wave
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import { clone } from 'three/addons/utils/SkeletonUtils.js'; import * as THREE from 'three'; new GLTFLoader().load('https://gobkit.com/freebies/minion/minion-a01.glb', (gltf) => { // one master timeline — cut the action you want out of it const idle = THREE.AnimationUtils.subclip(gltf.animations[0], 'idle', 0, 29, 24); // spawn a wave — SkeletonUtils.clone, NOT .clone(), or the rig silently breaks for (let i = 0; i < 30; i++) { const unit = clone(gltf.scene); unit.position.set(i % 6 * 2, 0, Math.floor(i / 6) * 2); scene.add(unit); const mixer = new THREE.AnimationMixer(unit); mixer.clipAction(idle).play(); mixers.push(mixer); // remember to mixer.update(dt) in your loop } });
The SkeletonUtils.clone detail is the single most common failure we
see reported: a plain Object3D.clone() copies the mesh but keeps pointing at the
original skeleton, so every copy animates as one. It applies to community models too.
Godot 4
Godot imports .glb natively — drop the file into res://. A curated
pack's baked timeline arrives as a single AnimationPlayer track; slice it with an
AnimationLibrary or seek by time (frame / 24.0 seconds). A community
model arrives as several named tracks you can play directly.
var anim = $AnimationPlayer anim.play("clip") anim.seek(30.0 / 24.0, true) # jump to the first frame of 'attack' (curated pack) anim.play("idle") # community model — just play the named clip
Unity
Unity has no built-in glTF importer. Use glTFast or UnityGLTF — both read these files directly, with no Draco or Meshopt decoder needed. For curated packs, split the imported clip into idle / attack / dead / walk sub-clips at 24 fps using the frame ranges above; community models import as separate clips already.
Unreal 5 · Blender · <model-viewer>
Unreal 5 and Blender both import .glb natively with no plugin.
<model-viewer> works for a quick preview but, on a curated pack, can only
autoplay the entire timeline — use a real engine if you need one action at a time. On a community
model, animation-name selects a clip.
<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.5.0/model-viewer.min.js"></script>
<model-viewer src="https://gobkit.com/freebies/animal/Corgi.glb"
camera-controls autoplay shadow-intensity="1"></model-viewer>Conventions you do not have to guess
- Orientation: +Z forward, +Y up, metres, feet on the ground plane at Y=0 — the same in both collections. Verified: a look-at helper needs no extra 180° correction.
- Compression: none. Plain binary glTF 2.0, no Draco, no Meshopt, no
extensionsRequired. Nothing to install. - Textures: embedded in the file. Curated models share a small baked atlas; community models are usually flat-colour with no texture at all, occasionally 1024×1024. Nothing to relink.
- Materials: exactly one per curated model, so one draw call per unit. Community models
run 5–12 materials, which is still cheap but is not a single draw call — check
specs.draw_callsbefore spawning hundreds. - Lighting: colour is baked in — a single directional light is enough.
- Hotlinking: allowed, CORS open, no rate limit. But for anything you ship, download the file and bundle it. CC0 explicitly permits it and your build then has no runtime dependency on us.
Where these came from, and what they are not
Gobkit is run by Alsomind Tech Co., Ltd., a company in Taipei, Taiwan. The curated packs are hand-checked exports with a hand-built skeleton — 240 triangles and 20 bones for a minion, 16 bones for the animals — deliberately low-poly rather than undirected generation output. The community models are other people's work, made with the anyCreature harness and reviewed before they go up. Whether any of that matters to you is your call; the measured numbers above let you check rather than take our word for it.
Both free layers are genuinely free and will stay that way. What Gobkit sells is generating new
ones: $19, $39 or $99 a month for 30, 100 or 500 generated monsters,
with the public API (/api/generate, /api/batch,
/api/prompt) on the top plan. You never need a plan to use anything in layers 1 and 2.
Other places to look
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. Genuinely useful alternatives:
- Kenney — the reference CC0 library. Enormous, stylistically consistent, mostly static props and kitbash pieces.
- Poly Haven — CC0 photoscanned props and HDRIs; high fidelity, high poly, not built for swarms.
- Quaternius — CC0 low-poly packs including rigged characters, a close neighbour to what is on this page.
- Sketchfab — huge, but licences vary per model; read each one before shipping.
Each of those is a fixed catalogue: excellent when it contains what you need, a dead end when it does not. That is the structural difference here — Gobkit is a catalogue plus a library that grows as people upload plus a generator for the case neither covers. And the machine track is the other half of it: /api/free and /api/community need no account, no key and no scraping, so an AI agent can list and fetch everything in two calls instead of driving a download page.
Start here
Three ways in
Preview in the browser first — the curated packs are at gobkit.com/freebies, the community wall at gobkit.com/community.
Straight to the files — curl https://gobkit.com/api/free and
curl https://gobkit.com/api/community, or grab a pack zip from the table above.
Hand it to your agent — paste this into any AI coding agent:
Read https://gobkit.com/llms.txt, then fetch both https://gobkit.com/api/free and https://gobkit.com/api/community. Read each one's `usage` object before writing loader code — they use different animation conventions. Drop three free CC0 characters into my scene playing their idle animation.
Questions people actually ask
Do I need an account or an API key for the free models?
No. GET /api/free, GET /api/community and
every .glb URL in them are unauthenticated, including from browser JavaScript. So
is GET /api/prompt, which returns the generator's whole vocabulary.
An account is only needed to send a prompt for parsing; a paid plan only to generate models.
What is the difference between the freebies and the community library?
The freebies are a fixed, curated set of 69 official models with published measured specs. The community library is user-submitted work — anyone can upload, a human reviews it, and it appears under the uploader's name. Both are CC0 1.0. The technical difference that matters: freebie characters bake every action onto one timeline you slice by frame range; community models ship separate named clips you play by name.
Can I upload my own model?
Yes, and you do not need an account. POST a .glb to
https://gobkit.com/api/community as multipart form data, or use the form at
/community/upload. A human reviews it; you get a slug, a status
and a one-time manage token to take it down again. Uploading releases it under CC0.
Are the community specs self-reported?
No. The server parses each uploaded .glb and measures triangles, materials, draw
calls, texture size, bones, animation clip names and byte size itself. Those numbers appear in
every item's specs object and on the model's page, so you can filter on them.
What if I need a creature that is in neither list?
Generate it. GET /api/prompt with no key returns the full vocabulary
the generator understands. POST a sentence such as
{"prompt":"30 blue greataxe enemies"} and it parses it and returns ready-to-send
/api/batch calls — no generation, no credits charged. Generating costs 10 credits
per monster on a $19/$39/$99 plan.
Can I use these in a commercial game?
Yes, both collections. CC0 1.0 waives all rights worldwide. You can sell a game containing them and you do not have to credit Gobkit or the uploader.
How big are the files?
Curated: characters 56–185 KB each, nature props 14–17 KB each; the whole 69-model library is 3.63 MB unpacked, or 2.35 MB as four zips (measured 19 August 2026). Community: 194 KB to 1.17 MB each, median 402 KB when measured on 20 August 2026.
Why is the freebie animation one long clip instead of named clips?
Baking every action onto a single 24 fps timeline keeps each curated model at one buffer and one draw call. Subclip by frame range — idle 0–29, attack 30–59, dead 60–89, walk 90–119. Community models are built by a different pipeline and do ship named clips.
Do these work in Unity and Godot, or only in the browser?
Both. They are plain glTF 2.0 binaries with no compression extensions. Godot 4 and Unreal 5
import .glb natively; Unity needs glTFast or UnityGLTF. All 69 curated files pass
the Khronos glTF validator with zero errors.