Spent a while profiling a production Addressables project — one bundle per scene — and Unity’s own Build Report hit me with this: 337 duplicate assets, “up to 1.84 GB” of potential savings, in a build whose bundles totaled 1.3 GB. Sounded impossible until I understood what was going on. Posting it because the worst part is nearly invisible and I wish I’d known years ago.
Why it happens: Addressables only de-dupes what you explicitly mark. Everything those assets reference — the textures behind your materials, the fonts behind your UI — are implicit dependencies, and every bundle that needs one bakes in its own copy. One bundle per scene turns that into a multiplier: a shared texture used by 6 scenes ships 6 times, and nothing warns you at runtime.
The part that got me: the biggest offenders were sitting in a Resources/ folder — a 65.9 MB TMP font atlas baked into 60 bundles. And here’s the trap: “Check Duplicate Bundle Dependencies” silently skips anything under Resources/, because those aren’t valid Addressable candidates. So the analyze rule everyone runs will never show them — the post-build Build Report does (it reads the real build layout), but only after you’ve built and shipped.
How to actually find them before you ship: Addressables does have a rule that catches these — “Check Resources to Addressable Duplicate Dependencies” (CheckResourcesDupeDependencies) — but it’s filed under Unfixable Rules in the Analyze window and almost nobody runs it. (“Unfixable” because the fix is a refactor — move the asset out of Resources/ — so it flags them and shrugs.) Run it alongside the usual “Check Duplicate Bundle Dependencies”.
The fix:
-
Resources offenders: move them out of
Resources/and reference them directly / make them Addressable — theResources/copy ships regardless otherwise. (For TMP, reference fonts on components or via TMP Settings instead of the Resources default.) -
Everything else: mark the duplicated assets Addressable in one shared group, so referencing bundles just reference a single copy.
Verify it worked with the official duplicate count before/after, plus a plain du -sh on the build output. On mine: duplicate assets 337 → 5, build folder 1.3 GB → 808 MB on disk. Nothing deleted, downscaled, or recompressed — just packed once instead of N times.
Full writeup with the Build-Report screenshots.
To be clear, none of this is a secret Unity hides — it’s all in their own Analyze rules and the Build Report. The catch is it’s spread across three separate places, the biggest offenders are filed under “Unfixable,” and nothing ranks them by actual waste, so you’d never know a single font was your worst problem until you went looking. Connecting those dots is the whole point.
(Disclosure, so I’m not being sneaky about it: I got tired of doing this by hand and built a Unity editor tool that wraps both official rules and does the extraction with a before/after check — free local scan, nothing uploaded. But the mechanism above is worth knowing even if you never touch the tool; that Resources/ gotcha in particular bit me for a long time.)