Skip to main content

Polyforge

Learn

3D File Size Budgets by Platform

Every platform that displays 3D content has its own file size limits, polygon budgets, and texture caps. This guide collects the verified specs so you can build assets that work on the first try.

15 min read
By Polyforge ยท Published Mar 28, 2026
LEARN
Size Reference

Know Your Limits

You finished your 3D model. It looks great in Blender. Then you upload it to Shopify and it takes 12 seconds to load. Or you submit it to Google Merchant Center and it gets rejected. Or your AR experience stutters on every phone that isn't the latest flagship.

The problem is almost always the same: the asset is too large for the target platform. Every platform that renders 3D content enforces size constraints, whether through hard upload limits, soft performance guidelines, or the physics of mobile network speeds.

$ contents
$ why_budgets_matter

Why Size Budgets Matter

A 3D file budget is the maximum amount of data your asset can contain and still work well on a given platform. Go over budget and one of three things happens: the platform rejects your upload, the experience loads so slowly that users leave, or the rendering device runs out of memory and crashes.

File size is only part of the equation. Polygon count determines how hard the GPU works per frame. Texture resolution controls how much video memory gets consumed. Draw call count affects CPU overhead. A complete budget accounts for all of these.

The numbers in this guide come from official platform documentation, developer guidelines, and published specifications. Where platforms provide recommended targets rather than hard limits, both values are noted. Recommendations are almost always worth following because they represent the threshold where most real users have a good experience.

$ web_budgets

Web and WebGL

The web has no single authority that enforces 3D file size limits. Instead, the constraints come from network speeds, browser memory limits, and Google's Core Web Vitals metrics that affect search ranking.

General web 3D. A well optimized three.js scene should target 2 to 5 MB total for all assets (geometry, textures, and materials combined). At 5 MB, a 4G mobile connection needs roughly 3 seconds to download the model. At 15 MB, that stretches to 9 seconds, and you will lose a significant portion of users before the model ever appears.

Draw calls. Keep draw calls under 100 for smooth 60 fps on mid-range devices. Every separate mesh with its own material generates at least one draw call. Merging meshes that share materials is the fastest way to reduce this number.

WebXR (browser based VR and AR). Meta's WebXR performance guidelines recommend keeping the initial scene load under 3 MB and the full scene under 10 MB. The visible triangle budget is approximately 50,000. Frame time must stay under 16 ms for 60 fps, with JavaScript execution consuming no more than 10 ms per frame. Research from Meta shows that a 3 second loading delay causes 40% engagement loss, and a 10 second delay loses 60% of users.

Texture memory. WebGL contexts on mobile devices typically have 256 to 512 MB of texture memory available. A single uncompressed 4096 by 4096 RGBA texture consumes 64 MB. Four of those textures (diffuse, normal, roughness, emissive) can exhaust mobile GPU memory entirely. Stick to 1024 or 2048 resolution per texture for web delivery.

Core Web Vitals impact SEO. Google uses Largest Contentful Paint (under 2.5 seconds), Interaction to Next Paint (under 200 ms), and Cumulative Layout Shift (under 0.1) as ranking signals. A heavy 3D model that delays LCP or blocks the main thread will hurt your search position. Load 3D assets lazily, after the initial page paint.
$ mobile_ar_budgets

Mobile AR

Mobile AR platforms have the tightest budgets in the 3D ecosystem. The device is simultaneously running the camera, tracking the environment, rendering your model, and maintaining a stable frame rate.

Apple AR Quick Look (iOS/iPadOS). Format: USDZ. Apple does not publish a hard file size cap, but their reference models (like the iPhone 11 Pro sample at 4.7 MB) and developer forum guidance consistently point to 4 to 8 MB as the practical sweet spot. The polygon recommendation is approximately 100,000 for broad device compatibility, with newer devices (iPhone 12 and later) handling up to 200,000 triangles. Textures should not exceed 2048 by 2048 pixels per map.

Google Scene Viewer (Android). Format: GLB. Google recommends keeping models under 100,000 faces. There is no published hard file size limit, but practical testing shows that models over 20 MB cause issues on lower-end Android devices. Google recommends using Draco compression and reducing texture resolution to improve load times.

Snapchat Lens Studio. Total lens package: 8 MB hard limit. Triangle count: 100,000 total (60,000 for rigged/skinned meshes). Texture resolution: 2048 by 2048 maximum. RAM budget: 150 MB. Joint count: under 100. These are strict limits. Lenses that exceed them will not pass review.

Meta Spark AR (discontinued). Meta shut down the Spark AR platform in January 2025. AR effects for Instagram and Facebook filters are no longer accepting new submissions. The specs below are retained for historical reference only. Total effect size was 4 MB. Polygon count: under 50,000 triangles per object, 150,000 total per effect. Textures: 1024 by 1024 maximum.

Platform Format File Size Triangles Max Texture
Apple AR Quick Look USDZ 4 to 8 MB 100k to 200k 2048 px
Google Scene Viewer GLB Under 20 MB 100k 2048 px
Snapchat Lens Studio FBX/OBJ/GLB 8 MB (hard) 100k total 2048 px
Meta Spark AR (discontinued) FBX/OBJ/GLB 4 MB (hard) 50k per object 1024 px

If you are targeting multiple AR platforms, build for the strictest one first (Snapchat at 8 MB and 100k triangles) and scale up for more permissive platforms. This approach avoids rework and ensures your base asset works everywhere.

$ ecommerce_budgets

E-Commerce Platforms

E-commerce 3D models are typically viewed one at a time on a product page. The budgets are more generous than AR because the model viewer is the primary focus of the interaction, not a real time overlay on the camera feed.

Shopify. Format: GLB. Upload limit: 500 MB. Recommended size: 4 to 5 MB for fast loading. Shopify's product media documentation notes that models exceeding 15 MB may be automatically optimized, which can reduce quality unpredictably. Shopify automatically converts GLB uploads to USDZ for iOS AR Quick Look, so a single GLB file covers both platforms. See the Shopify AR preparation guide for the full workflow.

Amazon 3D View. Format: GLB or glTF. Recommended file size: 5 MB or less. Triangle count: Amazon's seller guidelines recommend 20,000 triangles, though the system can technically accept more. Texture resolution: 1024 by 1024 pixels (PNG or JPEG). Animation is not supported.

Google Merchant Center (3D product listings). Format: GLB or glTF. Hard limit: 15 MB. Recommended: 10 MB. Texture resolution: up to 2048 by 2048 (4K textures are not supported). Models go through a review process that takes up to two weeks before appearing in Google Shopping results.

Platform Format Hard Limit Recommended Triangles
Shopify GLB 500 MB 4 to 5 MB No official cap
Amazon 3D View GLB/glTF Not published 5 MB 20k
Google Merchant Center GLB/glTF 15 MB 10 MB No official cap
Conversion tip. Most e-commerce platforms require GLB. If your source files are in FBX, OBJ, or another format, convert them to GLB before uploading. This also gives you a chance to check file size and polygon count before the platform's review pipeline rejects them.
$ vr_xr_budgets

VR and Spatial Computing

VR headsets render two views (one per eye) at high frame rates. This doubles the GPU workload compared to a flat screen. Budgets are tighter than desktop applications and vary significantly by headset generation.

Meta Quest 3 / Quest 3S. 8 GB RAM total. After the operating system, camera tracking, and Guardian boundary system reserve their share, approximately 4 to 5 GB remains for applications. Eye buffer memory alone consumes roughly 180 MB at the default resolution with 4x MSAA. Meta recommends using their texture streaming system to stay within budget rather than loading all textures at full resolution upfront.

Meta Quest 2. 6 GB RAM. Available to applications: roughly 3.5 GB. The reduced headroom means simpler scenes and smaller textures compared to Quest 3. Many developers target Quest 2 as the baseline because it still has the largest installed base.

Apple Vision Pro. For immersive full space experiences: 500,000 triangle limit. For shared space applications (where your content coexists with other apps): 250,000 triangles. Apple's WWDC 2024 session on spatial computing optimization recommends keeping under 100,000 triangles in the user's field of view at any given time. Formats: USDA, USDC, USDZ. Apple's Xcode compression pipeline can reduce asset sizes by roughly 75% (from 1.2 GB uncompressed to around 300 MB in one documented case). Web based Vision Pro content should stay under 5 MB per model.

Practical per scene budgets for standalone VR. On Quest 2, aim for 500,000 to 750,000 visible triangles. On Quest 3, you can push to 750,000 to 1,000,000 visible triangles. These numbers assume relatively simple shaders. Complex materials with multiple texture lookups, transparency, and post-processing effects will eat into your polygon budget. Draw calls should stay under 100 to 150 on Quest hardware.

$ game_engine_budgets

Game Engines

Game engine budgets are the most variable because they depend entirely on your target hardware. A PC game with a GTX 4090 target can afford millions of polygons. A mobile game on a 5 year old Android phone cannot.

Unity (mobile). Unity's official optimization course for mobile recommends 300 to 1,500 polygons per mesh for on screen objects when many objects are visible simultaneously. For single model viewers or product configurators, Unity handles 100k to 1M+ polygons without issues. The constraint is not any single model but the total scene complexity: more objects on screen means fewer triangles per object.

Unity (desktop/console). Modern desktop games regularly use 10,000 to 100,000 triangles per character model and millions of total triangles per scene. Unity's HDRP (High Definition Render Pipeline) is designed for these workloads. LOD (Level of Detail) systems automatically swap in simplified meshes at distance.

Unreal Engine 5. Nanite, Unreal's virtualized geometry system, effectively removes traditional polygon budgets for static meshes. It streams triangle data at the pixel level, rendering only the geometry that contributes to visible pixels. Film quality assets with millions of polygons work directly in Nanite without manual LOD creation. For non Nanite meshes on mobile, Unreal recommends up to 65,535 vertices per mesh due to 16 bit index buffer limitations.

Godot 4. Godot does not publish official polygon budgets. The engine is lightweight and performs well with optimized assets, but its 3D renderer is less mature than Unity's or Unreal's for complex scenes. For mobile 3D with Godot, follow the same general guidelines as Unity mobile. Desktop projects can push further, but benchmark on your target hardware.

Engine / Target Triangles per Mesh Total Scene Key Constraint
Unity (mobile) 300 to 1,500 100k to 300k GPU fill rate, draw calls
Unity (desktop) 10k to 100k Millions LOD system recommended
Unreal 5 (Nanite) Effectively unlimited Billions (streamed) Disk I/O, memory
Unreal 5 (mobile) Up to 65k vertices 200k to 500k 16 bit index limit
Godot 4 (mobile) 300 to 2,000 100k to 300k Renderer maturity

For a deeper look at how each engine handles 3D file imports, format support, and coordinate systems, see the game engine import guide.

$ social_sharing_budgets

Social Media and Asset Sharing

Platforms designed for sharing and showcasing 3D models tend to have the most generous file size limits because they control the viewing experience and can optimize rendering on their end.

Sketchfab. Free accounts: 100 MB per upload. Pro accounts: 200 MB. Premium accounts: 500 MB. Sketchfab accepts dozens of formats including glTF, FBX, OBJ, BLEND, and STL. ZIP or 7z compression is supported to maximize upload capacity. Sketchfab processes models server side and generates its own optimized viewer, so there is no strict polygon limit, though extremely complex models may fail to process.

Facebook 3D Posts (discontinued). Facebook discontinued 3D posts. This feature is no longer available for new content.

$ printing_budgets

3D Printing

3D printing budgets work differently from real time rendering. There is no frame rate to maintain. The constraint is your slicer software's ability to process the mesh and the print service's upload limits.

General guidance. Keep STL files under 50 MB and under 1,000,000 triangles. Most slicer software (Cura, PrusaSlicer, Bambu Studio) handles files in this range without issues. Beyond 1 million triangles, slicing times increase significantly and some slicers may run out of memory on machines with limited RAM.

Print services. i.materialise accepts files up to 100 MB. Materialise OnSite handles up to 500 MB. Shapeways accepts up to 64 MB for all file types. Most printing services prefer binary STL over ASCII STL because binary files are roughly one fifth the size for the same geometry.

3MF vs STL. 3MF files are typically smaller than equivalent STL files because 3MF uses compressed XML internally, stores vertex data more efficiently, and supports shared vertices (STL duplicates vertices at every triangle). For a model that produces a 30 MB STL, the 3MF equivalent is often 5 to 10 MB. 3MF also carries color, material, and build platform information that STL cannot. See the printing preparation guide for format selection advice.

$ master_table

Master Reference Table

This table summarizes the key budget numbers from every platform covered above. Use it as a quick reference when preparing assets for a specific target.

Platform File Size Polygons Primary Constraint
Web (three.js) 2 to 5 MB Under 100 draw calls Network speed
WebXR 3 to 10 MB 50k visible Mobile GPU memory
Apple AR Quick Look 4 to 8 MB 100k to 200k Loading time
Google Scene Viewer Under 20 MB 100k faces Device memory
Snapchat Lens Studio 8 MB (hard) 100k total Hard limit
Meta Spark AR (discontinued) 4 MB (hard) 50k per object Discontinued Jan 2025
Shopify 4 to 500 MB No official cap Loading speed
Amazon 3D View 5 MB 20k Loading time
Google Shopping 10 to 15 MB No official cap Review process
Meta Quest 3 Scene dependent 750k to 1M visible 8 GB shared RAM
Apple Vision Pro Under 5 MB (web) 100k to 500k Use case dependent
Sketchfab 100 to 500 MB No hard limit Account tier
3D Printing (STL) Under 50 MB Under 1M Slicer RAM
$ texture_budgets

Textures: The Hidden Budget Killer

When people think about 3D file size, they think about polygons. But in most production models, textures account for 60% to 90% of the total file size. A model with 50,000 polygons and a single 4K uncompressed texture can easily reach 50 MB. The same model with a compressed 1K texture might be under 2 MB.

Resolution caps by platform. Most AR platforms cap at 2048 by 2048 pixels. E-commerce platforms generally accept 2048. Google Shopping explicitly does not support 4K textures.

Compression formats. PNG textures embedded in a GLB file are uncompressed in GPU memory. Switching to KTX2 with Basis Universal compression reduces texture size by 75% or more while maintaining GPU friendly block compression. WebP offers good compression for diffuse/albedo maps. JPEG works for textures where lossy artifacts are acceptable (roughness, ambient occlusion).

The power of two rule. GPU hardware works most efficiently with textures whose dimensions are powers of two: 256, 512, 1024, 2048, 4096. Non power of two textures get padded to the next power of two in video memory, wasting space. A 1000 by 1000 texture occupies the same GPU memory as a 1024 by 1024 one.

Per texture budget. For web and mobile delivery, keep individual textures at 1024 by 1024 or smaller when possible. Reserve 2048 resolution for hero product shots where texture detail drives purchase decisions. Use 512 for secondary materials and backgrounds.

Resolution Uncompressed (RGBA) PNG (typical) KTX2/Basis
512 x 512 1 MB 200 to 500 KB 50 to 150 KB
1024 x 1024 4 MB 0.8 to 2 MB 200 to 600 KB
2048 x 2048 16 MB 3 to 8 MB 0.8 to 2 MB
4096 x 4096 64 MB 12 to 30 MB 3 to 8 MB

The numbers above are for a single RGBA texture. A PBR model typically has 3 to 5 texture maps (base color, normal, metallic/roughness, occlusion, emissive). Multiply accordingly. A model with five 2K uncompressed textures adds up to 80 MB of texture data alone. The same model with 1K KTX2 compressed textures uses about 1.5 MB total.

For a complete walkthrough of texture compression strategies, read the file size reduction guide.

$ hitting_targets

How to Hit Your Target Budget

Once you know your target platform, here is the optimization order that delivers the biggest file size reductions with the least visual quality loss.

  • 1. Compress textures first. This is almost always the highest impact change. Convert PNG textures to WebP or KTX2. Reduce resolution from 4K to 2K or from 2K to 1K. A single resolution step down cuts texture data by 75%.
  • 2. Remove unused data. Delete hidden geometry, unused materials, empty nodes, and orphaned animations. Modeling tools accumulate these over time. Export with "selected only" to avoid pulling in the entire scene.
  • 3. Reduce polygon count. Use mesh decimation (polygon reduction) to lower triangle count. A 50% reduction is often invisible on organic shapes. Hard surface models with sharp edges need more care, as decimation can round off edges.
  • 4. Apply geometry compression. Draco or Meshopt compression can reduce geometry data by 70% to 95% without any visual change. This is lossless for the vertex precision you configure and has zero rendering cost after decompression.
  • 5. Merge meshes where possible. Combine objects that share the same material into a single mesh. This reduces draw calls and eliminates per object overhead in the file structure.

Polyforge's optimizer handles steps 1, 3, and 4 directly in the browser. Upload your model, adjust the settings, and download the optimized result. No software installation required.

$ faq

Frequently Asked Questions

What is the ideal file size for a 3D model on the web?

For general web delivery, keep 3D models under 5 MB total (geometry plus textures). WebXR experiences should target under 3 MB for the initial load. E-commerce product viewers perform best at 2 to 4 MB. These targets ensure fast loading on mobile networks and avoid blocking the main thread during parsing.

What is the polygon limit for AR on iPhone?

Apple AR Quick Look recommends keeping USDZ models under 100,000 polygons for reliable performance across all supported iPhones. Models up to 200,000 triangles work on newer devices (iPhone 12 and later), but lower counts load faster and render more smoothly. Keep file sizes between 4 and 8 MB.

What 3D file size does Shopify allow?

Shopify accepts GLB files up to 500 MB per product model. For fast loading on product pages, Shopify recommends keeping models between 4 and 5 MB. Models exceeding 15 MB are automatically optimized, which may reduce quality unpredictably. Shopify also auto-converts GLB to USDZ for iOS AR.

How many polygons can a Meta Quest app handle?

Meta Quest 3 and Quest 3S have 8 GB of RAM, with 4 to 5 GB available to applications. A practical per scene budget is 750,000 to 1,000,000 visible triangles at 72 Hz, depending on shader complexity, draw call count, and texture memory usage.

Does texture resolution matter more than polygon count?

In most cases, yes. Textures typically account for 60% to 90% of a 3D file's total size. A model with 50,000 polygons and a single 4K uncompressed texture can easily be 50 MB, while the same model with a compressed 1K texture might be under 2 MB. Texture compression usually has a larger impact than polygon reduction.

What is the maximum 3D file size for Google Shopping?

Google Merchant Center accepts GLB and glTF files up to 15 MB. The recommended target is 10 MB or less. Texture resolution is capped at 2K (2048 by 2048 pixels). Models go through a review process that can take up to two weeks before appearing in results.

$ related

Related Guides and Tools