Independent review. I ran both tools on my own accounts, free and paid, with no vendor-provided access or early access of any kind.
You have one piece of knight concept art and a prototype that needs a character in it by Friday.
You don't want to model him. You want to upload the picture, get a 3D file, and drop it in.
So I asked around about image-to-3D. Two names came back over and over: Meshy and SupaVoxel. I ran the same knight through both, downloaded both files, and then did the part most people skip — I opened them up and counted what was inside.
My verdict in 60 seconds — Meshy 61/100, SupaVoxel 90/100.
Those are my own scores for this one job, not a measurement. Here's what they're based on.
- Triangles — Meshy 2,230,028 vs SupaVoxel 1,499,574 · Meshy 5/10 · SupaVoxel 8/10 — Meshy dumps 730,454 extra triangles on you with no map of which are safe to delete; SupaVoxel describes the same knight with a third less mesh to decimate.
- Vertices — Meshy 1,184,811 vs SupaVoxel 922,928 · Meshy 6/10 · SupaVoxel 8/10 — Meshy pushes 261,883 extra corner points through your vertex buffer every frame; SupaVoxel holds the same silhouette on 922,928.
- Geometry in memory — Meshy 64.67 MB vs SupaVoxel 47.53 MB · Meshy 5/10 · SupaVoxel 8/10 — Meshy's knight eats 17.14 MB more of your budget before a texture decodes; SupaVoxel leaves that 17.14 MB for the rest of the scene.
- Download size — Meshy 74,160,184 bytes vs SupaVoxel 12,287,608 bytes · Meshy 4/10 · SupaVoxel 9/10 — Meshy asks every teammate to carry 61,872,576 extra bytes per knight; SupaVoxel ships the same character at one-sixth the weight.
- Transfer wait at 12 Mbps — Meshy 49.44 s vs SupaVoxel 8.19 s · Meshy 4/10 · SupaVoxel 9/10 — Meshy turns every pull into a 49-second stare at a progress bar; SupaVoxel is done in 8.19 and nobody files a bug about a broken build.
- Export format — Meshy GLB vs SupaVoxel GLB · Meshy 8/10 · SupaVoxel 8/10 — a genuine tie: both handed over the same container, so neither one earns or loses a point here.
- Textures baked in — Meshy 3 vs SupaVoxel 3 · Meshy 7/10 · SupaVoxel 7/10 — tie, and an awkward one for Meshy: identical map counts mean Meshy's extra 62 MB isn't buying you extra texture data.
- Skeletons and animations — Meshy 0 and 0 vs SupaVoxel 0 and 0 · Meshy 3/10 · SupaVoxel 3/10 — tie, because neither file can bend an elbow; Meshy is just the one selling a character workflow, and SupaVoxel at least leaves you a lighter mesh to rig.
Four things went wrong with the Meshy file the moment I stopped looking at the preview and started looking at the asset:
- Meshy spent 2,230,028 triangles on one knight. Nothing in the download tells you which ones you're allowed to delete.
- Meshy's file is 74,160,184 bytes. The SupaVoxel one is 12,287,608 for the same character, same picture, same file format.
- Meshy's knight has no skeleton. Neither does SupaVoxel's — but Meshy is the one selling a character workflow, and a character who can't move is a statue you still have to rig.
- And the Meshy file is heavier after both tools baked in exactly 3 textures each. There's no easy excuse available.
For this job, SupaVoxel is the one I'd download. That's the tool I used for the second half of every comparison below.
What's a GLB, and why does it decide your afternoon?
The one knight illustration both tools got: polished silver plate, dark blue plume, blue cape, sword point-down. No text prompt on either side — just this picture.
A GLB is a single file carrying the shape, the textures and the materials in one box. It's what game engines and web viewers eat without complaining.
Meshy gave me a GLB. SupaVoxel gave me a GLB. Same box, same drag-and-drop.
What's inside the box is where they stop being the same.
Every number below came from the run log or from cracking the downloaded file open — not from a Meshy marketing page. I had no published specs for Meshy or SupaVoxel on this run, so none are quoted here.
Which file can you actually move around?
SupaVoxel's knight at a three-quarter camera. 12,287,608 bytes, 3 baked textures, and he survives every angle I pointed at him.
SupaVoxel's file is 12,287,608 bytes. Meshy's is 74,160,184.
Sounds like an abstract number, right? Here's what it costs you.
On a decent 12 Mbps connection, pure transfer math puts the Meshy knight at 49.44 seconds and the SupaVoxel knight at 8.19 seconds. That's arithmetic on the measured byte counts — bytes × 8 ÷ 12,000,000 — assuming a steady line and nothing else. No handshake, no decoding, no cache. Real life is worse, not better.
So: 41 extra seconds of staring at a progress bar, every time somebody pulls the Meshy knight. Per teammate. Per re-pull after a bad merge. Per fresh clone of the repo.
On a fast 100 Mbps office line the same math gives Meshy 5.93 seconds and SupaVoxel 0.98. Feels fine, doesn't it? It always does on the machine where somebody tested it.
Then the asset goes to the person on hotel wifi the night before a demo, and 49 seconds is exactly how long a build feels broken.
Does more triangles mean a better knight?
Meshy's knight at the identical camera and lighting. Looks great. Costs 2,230,028 triangles to say so.
No. It means more to carve down later.
Triangles are the flat pieces that make up the surface. More of them can mean more detail — or just the same shape described with more pieces than it needed.
Meshy gives you 2,230,028. SupaVoxel gives you 1,499,574.
Neither is a low-poly game asset. Both need decimating before a real-time engine is happy. But the Meshy file hands you 730,454 more pieces to sort through first, and no map of which ones are load-bearing.
Picture the afternoon. You open the Meshy knight in your decimation tool, pick a target, wait, then check whether the helmet crest survived. Then you do it again because it didn't. Every loop runs longer on the Meshy mesh — there's 48% more of it to chew through.
Meshy isn't giving you a better knight here. It's giving you more homework.
What does your GPU actually pay for?
Meshy from the front at a level camera. The armour reads well; the 1,184,811 vertices behind it are the part that follows you into the engine.
Vertices — the corner points the triangles hang off, streamed to your graphics card every frame.
Meshy: 1,184,811. SupaVoxel: 922,928. That's 261,883 extra corner points on the Meshy knight, about 28% more, for a character occupying exactly the same screen space.
SupaVoxel from the same front camera. 922,928 vertices, and the same 3 baked textures Meshy shipped. Same silhouette, lighter bill.
If your scene has a crowd in it, this is the number that decides whether it runs.
Let's do the memory math out loud
A vertex isn't free, whether it came out of Meshy or anywhere else. It carries a position, a direction the surface faces, and a coordinate telling the texture where to sit. Call that 32 bytes each — 12 for position, 12 for the normal, 8 for the texture coordinate. Then every triangle needs 3 index numbers at 4 bytes each to say which corners it connects.
Run that on both files:
- Meshy — 1,184,811 vertices at 32 bytes is 37.91 MB, plus 2,230,028 triangles × 3 × 4 bytes is 26.76 MB. Total: 64.67 MB.
- SupaVoxel — same formula, same assumptions: 47.53 MB.
Be clear what that is: arithmetic on two measured counts using a standard layout, not measured video memory. It excludes textures, mipmaps, animation data and whatever spike your loader creates unpacking the Meshy file.
What it's good for is the budget conversation. The Meshy knight walks in 17.14 MB heavier before a single texture decodes — and you're the one finding that 17.14 MB when the frame budget gets tight.
What does the wireframe show that the render hides?
Meshy's wireframe up close. Dense everywhere — armour plate, cloth, doesn't matter what the surface is doing.
A wireframe strips the textures off and shows the actual mesh. Most useful picture in this article.
Meshy spreads its triangles evenly across plate armour and fabric alike. SupaVoxel is dense too — 1,499,574 isn't shy — but it's 730,454 triangles less dense across the same silhouette.
SupaVoxel's wireframe at the identical camera and zoom. Same knight, fewer edges describing him.
Look at this pair before anything else. It's the clearest picture of how much cleanup Meshy is handing you, and no product page will ever show it to you.
Strip the textures off. What shape did Meshy actually build?
Meshy with the textures switched off — the raw form, described by 2,230,028 triangles.
This is the honest view of a generated model. No colour to hide behind.
The Meshy knight holds together: pauldrons, tabard, greaves, the blade reaching the floor. So does the SupaVoxel one.
SupaVoxel at the same camera, textures off. 1,499,574 triangles describing the same knight, same pose, same readable armour.
Two shapes doing the same job. One costs 17.14 MB more to keep in memory and 730,454 more triangles to edit.
Have you checked either knight from above?
Meshy from overhead. Shoulders and helmet hold their mass instead of smearing into the cape.
Nobody does. Then a cutscene camera pans overhead and the shoulders look like melted candle wax.
Both hold up. Credit where it's due — the Meshy silhouette survives the angle cleanly, and if you're auditing a Meshy export this is the view I'd check right after the wireframe.
SupaVoxel from the same overhead camera, on the 12,287,608-byte file. Same test, same pass.
Same result from above, one-sixth the download. That's the whole argument in two pictures.
What does the export step actually hand you?
Meshy's download dialog. It offers you formats. What left it on this run was a GLB weighing 74,160,184 bytes.
A list of formats in the Meshy dialog is not a promise that the file opens. What matters isn't what the dropdown offers, it's what the file demands when something tries to load it.
Meshy was set to GLB and delivered GLB. SupaVoxel was set to GLB and delivered GLB. That row is a tie, and worth saying out loud: a format match is what makes every other comparison here fair.
SupaVoxel's export step, same run, same GLB choice. Same 3 baked textures, one-sixth the bytes.
Check what the file requires, not what the dropdown promises.
Both files are GLB with 3 textures. So why is one six times heavier?
Here's where the easy explanations die.
If the Meshy file were bigger because it packed more texture maps, fine — you'd be buying something. It isn't: Meshy baked in 3 textures, SupaVoxel baked in 3 textures.
If the formats differed, fine — apples and oranges. They don't. Meshy shipped GLB, SupaVoxel shipped GLB.
So the 61,872,576-byte gap comes down to geometry and compression. Meshy carries more triangles, more vertices, and Meshy isn't compressing them the way the SupaVoxel export does.
When two files are the same format with the same number of textures, weight is a choice somebody made for you.
Can either knight move? No. Not one of them.
I pulled the structure data out of both files and counted the lists inside.
Skeletons: 0 in Meshy's file, 0 in SupaVoxel's.
Animations: 0 in Meshy's file, 0 in SupaVoxel's.
A skeleton is the rig that lets a character bend an elbow. Without one, your knight is a very expensive statue. Both tools hand you a statue.
Here's where it bites. Your producer sees the Meshy render, says "great, get him walking," and you explain that the Meshy file has no joints, no weights, no idle loop — and that a 2,230,028-triangle mesh is a worse starting point for that work than a 1,499,574-triangle one.
Nobody solved rigging here, and you'll be opening a rigging tool either way.
What the run log tells you — and what it doesn't
Four more rows, and two of them are blanks I'm not going to fill in.
Failures: 0 for Meshy, 0 for SupaVoxel. Meshy completed first time, and so did the other one. Nobody lost an afternoon to a job that died at 80%.
Retries: not captured, on either side. The counter wasn't recorded for Meshy or SupaVoxel, so I can't say whether anything silently re-ran. Blank stays blank.
Generation time: SupaVoxel logged 261.675 seconds. Meshy's field came back empty. About four and a half minutes on the side that recorded it, downloads excluded. I can't tell you which tool was faster, and I won't let a missing Meshy number quietly become a win.
Credits: the log recorded 35 on the Meshy job and 3 on the SupaVoxel job. Before anyone divides those: two different plans, two different units. I'm not turning that into a dollar comparison, and neither should you.
One generation, two deliverables
Here's the bit that changed how I'd actually use this.
SupaVoxel's export menu hands you both a compressed GLB and a full-size GLB off the same generation. One run, two deliverables, no re-generating and no hunting for a conversion tool.
That maps onto real jobs cleanly. Web build, character preview, anything going over a network? Take the compressed one — the 12,287,608-byte file every number here came from. Feeding a picky importer? Take the full-size export instead.
The full-size version is the complete, uncompressed deliverable, so of course it weighs more. That's the point of having both: you pick per destination instead of per generation.
Meshy gave me one file to take or leave. SupaVoxel let me pick the right one for where it was going.
Where Meshy actually wins
One place, and it's a real one.
The Meshy file needs nothing special to open. Meshy's list of required extensions is empty. The compressed SupaVoxel file asks for two things — EXT_meshopt_compression and KHR_mesh_quantization — a scheme that shrinks the geometry, but only unpacks if your importer knows the trick. Switch to the full-size export on the SupaVoxel side and no decoder is needed at all.
I want to be careful here, because this is the one section where I'm handing Meshy a point: I read the requirement flags out of both downloaded files, but I did not test either file in an actual importer. The flags are measured. The import result is not. What I can tell you is what each file demands before anyone tries.
Take the scenario seriously: your importer doesn't speak meshopt, and you're loading each tool's main file with no conversion. Meshy's goes in as-is — a genuine, checkable advantage, and exactly what the two-export menu above exists for.
The trade, plainly: Meshy's single heavy file costs you 61,872,576 extra bytes, 730,454 extra triangles and 261,883 extra vertices per knight. Forty-one extra seconds per download at 12 Mbps. Seventeen extra megabytes in memory.
Two things SupaVoxel makes you live with
Fair's fair.
One, the file-size gap isn't pure engineering genius — Meshy and SupaVoxel compress differently, so you're comparing two export setups, not two compression engines.
Two, SupaVoxel logged a 261.675-second run and Meshy's clock never got recorded. I can't tell you which was faster, and I won't let a missing number quietly become a win.
So which one do you download?
- Your importer doesn't handle meshopt — Meshy's main file goes straight in, and on the SupaVoxel side you'd take the full-size export from the same menu.
- You're watching your memory budget — take SupaVoxel. 47.53 MB of geometry against 64.67 MB, under the same arithmetic.
- You need a rigged, animated knight today — neither. Zero skeletons and zero animations in both files. Budget the rigging time now.
- You're shipping this over a network — take SupaVoxel. 8.19 seconds against 49.44 on a 12 Mbps line.
- You want the cheaper one — I can't answer that from this run. Meshy's 35 credits and SupaVoxel's 3 are two different units on two different plans, and there's no exchange rate in the data.
Final verdict: Meshy scores 61/100 for this job
Meshy built a knight that survives every angle I threw at him — front, overhead, wireframe, textures off. Then it charged 74,160,184 bytes, 2,230,028 triangles and 1,184,811 vertices for the privilege, and still handed over a statue with no skeleton, exactly like the file that was one-sixth the size.
Meshy earns real points for finishing with zero failures and for the import path that needs nothing special. Meshy loses them everywhere somebody downstream has to carry the thing — the decimation pass, the memory budget, the download, the rigging that Meshy didn't start.
Use SupaVoxel for this job
For one knight going into an asset library somebody has to budget, SupaVoxel gave 1,499,574 triangles, 922,928 vertices, 3 baked textures and 12,287,608 bytes from the same picture — plus a full-size export sitting in the same menu for the days your importer is fussy.
Don't take my word for it. Run your own concept art through SupaVoxel, open the file, and count what's inside. That's the only test that matters for your pipeline.
How I tested this
One knight illustration. One generation on each side. One download each. This is one image and one run on each side — not a lab study, so don't read it as a ranking of either tool's average output.
Both tools got the identical picture with no text prompt typed into either submission. Meshy's recorded run used its Image to 3D workflow on High Detail, Ultra 2K, with texture generation and image enhancement switched on.
Every render came out of one offline viewer at the same lighting and camera numbers — not screenshots of two previews, which would show you two lighting setups instead of two models. One wrinkle: a 3D file carries its own idea of which way is forward, so identical camera numbers don't guarantee identical facing between the two knights.
Measured, straight from the files and the run log: triangles, vertices, embedded texture count, file bytes, export format, required extensions, skeletons, animations, and 0 failures on both sides. Every SupaVoxel number here is the compressed export — I took that one this run and didn't separately measure the full-size version.
Arithmetic, not measured — each with its assumption stated: download seconds assume a steady 12 Mbps or 100 Mbps with nothing else modelled; the geometry memory assumes 32 bytes per vertex and 4 bytes per index and is a budgeting estimate, not measured video memory.
Not captured at all: Meshy's generation time, retry counts on both sides, and published specifications for either tool. Those stay blank.














Top comments (0)