Quick Symptom-to-Root-Cause Diagnostic Matrix

8 common SVG rendering failures and their exact XML/CSS fixes
Visible SymptomRoot CauseExact Fix
Blank space inside <img src="a.svg">Missing root xmlns="http://www.w3.org/2000/svg"Add the standard SVG XML namespace to the root <svg> element.
Icon renders completely invisible inlinefill="none" with no stroke, OR stroke="currentColor" inside 0px flex itemAdd shrink-0 + explicit width/height (e.g. w-5 h-5) and verify stroke/fill.
Outer edges of circles/strokes look flatStroke width extends outside 0 0 24 24 viewBox boundsExpand viewBox (e.g. -1 -1 26 26) or inset geometry by strokeWidth / 2.
Second multi-color icon turns blank or wrong colorDuplicate id="paint0_linear" or id="clip0" across inline SVGsPrefix internal <defs> IDs uniquely per icon or use SVG Nexus scoped exports.
Interior counter-hole of 'O' or donut fills solidOptimizer stripped fill-rule="evenodd" or winding order reversedRestore fill-rule="evenodd" (fillRule in JSX) on compound paths.
CSS Data URI breaks entirelyUnescaped # hex character in data:image/svg+xml stringReplace # with %23 or encode cleanly with SVG to CSS Converter.
Icon squishes inside flex button on mobileFlexbox shrinks <svg> when button text wrapsAdd flex-shrink: 0 (Tailwind shrink-0) to every button SVG.
SVG looks blurry despite being vectorEmbedded raster <image> inside SVG, or CSS transform: scale(1.37) on layerInspect DOM in SVG Editor for <image> tags; render at native target size.

How to Isolate Any Broken SVG in 60 Seconds

Paste the suspect markup straight into the SVG Nexus Online SVG Editor and switch the canvas to the Checkerboard and Dark Slate backdrops. If the icon renders cleanly there, the bug lives in your page's host CSS (usually a global svg { fill: currentColor } override, a missing shrink-0, or a duplicate <defs> ID elsewhere in the DOM, as explained in the gradient & clip-path ID collision guide).