KitVerse
Tools

SVG Spritesheet Builder

Combine SVG, PNG, JPG, WebP or GIF icons into one SVG spritesheet, then copy CSS background-position code and a JSON manifest. Everything runs locally in your browser.

Browser-local · No upload · No saved content
Loading tool...

SVG Spritesheet Builder overview

SVG Spritesheet Builder combines icons or small images into one SVG spritesheet and generates CSS background-position rules plus a JSON manifest. It is useful for frontend icon sets, legacy CSS sprite maintenance and small game UI assets, with all file handling kept in your browser.

How to use SVG Spritesheet Builder

  1. 1Drop or choose SVG, PNG, JPG, WebP or GIF files. Each file is read locally and added to the sprite list.
  2. 2Choose grid, horizontal or vertical layout. Adjust padding, grid columns, background and CSS class prefix.
  3. 3Rename sprite IDs to match your project naming style, then reorder or remove items if needed.
  4. 4Check the spritesheet preview and generated sheet dimensions.

Troubleshooting

The generated SVG is larger than expected

Bitmap files are embedded as Data URLs, which are text and often larger than binary files.

Use this for small icons and UI assets. Compress large images first or keep them separate.

CSS does not show the icon

The generated CSS references kitverse-spritesheet.svg by default.

Place the SVG next to your CSS file or update the background-image path.

Sprite positions look unexpected

Grid layout centers mixed-size images, and padding/columns affect coordinates.

Adjust layout settings and use the preview plus JSON manifest as the source of truth.

Spritesheet outputs compared

The same images produce three outputs: SVG for the asset file, CSS for webpage usage and JSON for build scripts or custom rendering.

OutputUseStrengthNote
SVG spritesheetStore all small icons in one fileDownloadable, cacheable and transparentBitmap inputs are embedded as Data URLs
CSSUse icons through classesIncludes width, height and background-positionReferences kitverse-spritesheet.svg by default
JSON manifestBuild scripts, Canvas or custom UIExact x/y/width/height dataRequires your own renderer
SVG symbol spritePure SVG icon systemsWorks with use referencesPlanned separately from this image spritesheet MVP

SVG Spritesheet Builder examples

CSS sprite icon example

Input files
search.svg, bolt.svg, check.png
CSS output
.sprite-search { width: 48px; height: 48px; background-position: -6px -6px; }

Place the downloaded SVG next to the CSS file and use the generated class.

JSON manifest example

Sprite ID
check
Manifest
{ "check": { "x": 114, "y": 6, "width": 48, "height": 48 } }

Useful for build scripts, Canvas rendering or custom UI components.

Use cases

Frontend icon sets

Bundle small icons into one SVG file and reference them with CSS classes.

Legacy CSS sprite maintenance

Generate fresh background-position values for projects that still use sprites.

Game and UI assets

Organize badges, buttons and state icons into a manifest for custom rendering.

FAQ

Are my images uploaded?

No. Reading, layout, preview and downloads run locally in your browser.

Which file formats are supported?

Common browser-readable image formats are supported, including SVG, PNG, JPG, JPEG, WebP and GIF.

How is this different from an SVG symbol sprite?

A symbol sprite is mainly for pure SVG icons and use references. This tool creates an image spritesheet that can mix SVG and bitmap inputs and outputs CSS positions.

Why does embedding bitmaps make the SVG larger?

Bitmap files are stored as Data URL text inside the SVG, which is usually longer than the original binary file.

Can it export a PNG spritesheet?

The first version exports SVG, CSS and JSON. PNG export, transparent trimming and 2x workflows can be added later.

Are images uploaded?

No. Files stay in your browser and are embedded into the generated SVG locally.

Does it support PNG, JPG and WebP?

Yes. Bitmap images are embedded as Data URLs inside the SVG spritesheet.

How do I use the generated CSS?

Download the SVG next to the CSS file, then use the generated classes for each sprite.